• 数据仓库与数据挖掘(实验一2024.4.24)


    实验准备:

    1.下载conda

    2.配置环境C:\ProgramData\miniconda3\Scripts

    3.创建文件夹panda进入虚拟环境qq

    激活虚拟环境:activate qq

    启动jupyter lab(python语言环境编译):jupyter lab

    4.panda下载

    (1)官网panda下载:pandas - Python Data Analysis Library (pydata.org)

    (2)虚拟环境的panda下载

    一、panda练习1(电影数据库查询)

    1. #导入panda,以pd为简写
    2. import pandas as pd
    3. #读取文件 
    4. pd.read_csv('movies.csv')

    1.简单的数据查询

    描述:该部分基本为对DataFrame进行的操作,并没有修改csv文件中的内容


    常用方法:head、tail、len()、shape(行列)、size、dypes、iloc[](查看第几条数据) 、loc[](获取数据详细信息)、sort_values(by=[' ' , ' ']).head()、sort_index()_head()

    注:ascending = False(对于数据进行降序排列的参数设置)

    1. # 创建DataFrame对象movies,设置
    2. movies = pd.read_csv('movies.csv', index_col='Title')
    3. # 查看前4行数据
    4. movies.head(4)
    5. # 查看最后6行数据
    6. movies.tail(6)
    7. # 查询总共有多少条数据
    8. len(movies)
    9. # 通过panda的DataFrame获取数据的形状:行数、列数
    10. movies.shape
    11. # 查询一共有多少个单元格(cell)
    12. movies.size
    13. # 验证
    14. # 一共782行数据,每行有4个属性,除了作为index的Title
    15. 782 * 4
    16. # 查询每一列的数据类型
    17. movies.dtypes
    18. # 查看第500条数据
    19. movies.iloc[499]
    20. # 通过 index label 获取 DataFrame 中的数据
    21. # 现在的 index 是 Title(《阿甘正传》)
    22. movies.loc['Forrest Gump']
    23. # 通过index label可以检索出具有相同index label的数据记录
    24. # 但是,通常尽量让每条数据的index label是唯一的,
    25. # 这样可以加速数据定位
    26. movies.loc['101 Dalmatians']
    27. # 对DataFrame中的数据按照year以降序方式重新排序
    28. # head()用来现实前5条数据
    29. movies.sort_values(by='Year', ascending=False).head()
    30. # 根据多个列的值进行排序
    31. # 默认按照升序排序
    32. movies.sort_values(by=['Studio', 'Year']).head()
    33. # 按照index进行排序
    34. movies.sort_index().head()

     2.实际应用

    1. # 找出哪家电影公司拥有最多最高票房的电影
    2. # 使用Series:只有一列数据
    3. # pandas在Series中保留DataFrame的索引
    4. # 由于数据太多,默认只显示前5条和后5条数据
    5. # Studio制片厂
    6. movies['Studio']
    7. # 统计每个Studio出现的次数,并显示排在前10的Studio
    8. # 返回值为Series对象
    9. movies['Studio'].value_counts().head(10)
    10. # 通过规则过滤数据
    11. # 找出 Universal Studio 发行的电影
    12. movies[movies['Studio'] == 'Universal']
    13. # 通过变量保存过滤规则
    14. released_by_unviersal = (movies['Studio'] == 'Universal')
    15. movies[released_by_unviersal].head()
    16. # 通过多个条件过滤DataFrame中的行数据
    17. # 找出2015年Universal Studio发行(released)的电影的各项数据
    18. # released_by_universal(由环球发行)
    19. released_by_unviersal = movies['Studio'] == 'Universal'
    20. released_in_2015 = movies['Year'] == 2015
    21. movies[released_by_unviersal & released_in_2015]
    22. # 通过多个条件过滤DataFrame中的行数据
    23. # 找出在2015发行或者是Universal Studio发行的电影的各项数据
    24. released_by_unviersal = movies['Studio'] == 'Universal'
    25. released_in_2015 = movies['Year'] == 2015
    26. movies[released_by_unviersal | released_in_2015]
    27. # 过滤出满足指定范围的数据
    28. # 找出1975年之前发行的电影
    29. before_1975 = movies['Year'] < 1975
    30. movies[before_1975]
    31. # 指定某个值的范围
    32. mid_80s = movies['Year'].between(1983, 1986)
    33. movies[mid_80s]
    34. # 使用DataFrame的index进行过滤
    35. # 找出所有在名字中包含 dark 的电影
    36. # 将所有的title先转换为小写
    37. has_dark_in_title = movies.index.str.lower().str.contains('dark')
    38. movies[has_dark_in_title]
    39. # grouping data
    40. # 找出在所有电影中,哪个Studio的总收入最高
    41. # pandas在导入数据时,包含了$和逗号,先把他们去掉
    42. movies['Gross'].str.replace('$', '', regex=False).str.replace(',', '', regex=False)
    43. # 再把文本类型的Gross转换为数字类型
    44. movies['Gross'] = movies['Gross'].str.replace('$', '', regex=False).str.replace(',', '', regex=False).astype(float)
    45. # 计算平均票房收入
    46. movies['Gross'].mean()
    47. # 计算每个电影制片厂的总票房
    48. # groupby
    49. studios = movies.groupby('Studio')
    50. # 统计每个每个Studio发行了几步电影
    51. studios['Gross'].count().head()
    52. # 默认按照字母顺序排序
    53. # 改为按照发行的电影数量降序排序
    54. studios['Gross'].count().sort_values(ascending=False).head()
    55. # 计算每个Studio发行电影的总票房
    56. studios['Gross'].sum().head()
    57. # 默认按照Studio的字母顺序排序
    58. # 按照总票房顺序排序
    59. studios['Gross'].sum().sort_values(ascending=False).head()

    二、panda练习2(待续。。。)

  • 相关阅读:
    【VUE】从源码角度说清楚MVVM!实现v-model!真的很简单!
    152. 乘积最大子数组
    宽带放大器设计举例
    头歌 MySQL数据库 - 初识MySQL
    Chrome和Firefox哪款浏览器的密码管理更安全
    APP自动化测试-9.Appium设备交互与模拟器控制
    docker网络和模式
    windows redis安装与开机自启动
    制造业到底要不要做数字化改革?_光点科技
    微信小程序自动推送当天天气情况Java版
  • 原文地址:https://blog.csdn.net/qq_64684039/article/details/138144648