写点什么

Pandas 数据分析及可视化应用实践

  • 2022 年 9 月 29 日
    北京
  • 本文字数:2549 字

    阅读完需:约 8 分钟

Pandas 是一个基于 Numpy 的数据分析库,它提供了多种数据统计和数据分析功能,使得数据分析人员在 Python 中进行数据处理变得方便快捷,接下来将使用 Pandas 对 MovieLens 1M 数据集进行相关的数据处理操作,运用具体例子更好地认识和学习 Pandas 在数据分析方面的独特魅力。

准备工作

首先使用 Anaconda 安装 Jupyter Notebook,由于 Jupyter 支持单个文件上传,为了便于管理,可以通过 upload 先上传数据集的压缩包,然后通过 zipfile 解压数据集,解压后的数据集保存在 data 文件夹下,可以执行如下代码:

注:若 upload 无法上传数据压缩包,可以将数据压缩包放到 Desktop,在 Jupyter 中找到 Desktop 文件夹,通过 move 移动到目标路径下。

导入 Pandas,Numpy 数据分析包,等待数据分析

数据读取与处理

1、Movielens 数据集

MovieLens 数据集是 GroupLens Research 收集电影评分数据集,包括 100K,1M,10M 等不同规模的数据集,本文选取 MovieLens-1M 数据集,该数据集包括 6040 名用户对 3900 部电影发布的 1000209 条评论数据。常用作推荐算法,数据统计数据集。

2、读取数据集

Pandas 提供了多种方式来读取不同类型数据,本文使用 read_csv 来读取 Movielens-1M 各个子数据集,该方法将表格型数据读取为 DataFrame 对象,这是 Pandas 核心数据结构之一,另一个是 Series。DataFrame 表示的是矩阵的数据表,二维双索引数据结构,包括行索引和列索引。Series 是一种一维数组型对象,仅包含一个值序列与一个索引。本文所涉及的数据结构主要是 DataFrame。

函数描述|------


② 读取 movies.dat 数据集并输出前 6 条数据,此处自定义数据展示的条数。

movies.dat 数据集 movie_id:电影 id,title:电影名称以及上映时间,genres:电影的题材。


③读取 users.dat 子数据集,user_id:用户 id,gender:用户性别,age:用户所处的年龄段,并不是具体的年龄,occupation:用户职业,zip:邮编。


注意:若有的时候数据集列数过多,无法展示多列,出现省略号,此时可以使用 pandas 中的 set_option()进行显示设置。

若输入的数据集较大,可能需要读入文件的一个小片段或者按照小块来遍历文件。若要读取一小部分行数据,可以指明 nrows。若是分块去读数据文件,可以指明 chunksize 作为每一块的行数。

3、数据处理

上面展示的都是子数据的原始状态,但是在数据分析过程中,原始数据可能不满足数据分析的要求,这里做一些简单的处理。

① 去掉 title 中的年份

通过正则表达式去掉 title 中的年份



② 通过 Pandas 中的 to_datetime 函数将 timestamp 转换成具体时间


③ 通过 rename 函数更改列名,具体代码如下:


④ 将 data_ratings 中 time 列格式变成‘年-月-日’

首先使用 Pandas 中的 to_datetime 函数将 date 列从 object 格式转化为 datetime 格式,然后通过 strftime(’%Y%m%d’)取出年月日,把这个函数用 apply lambda 应用到 data_ratings[‘timestamp’]的这一列中。

4、数据合并

Pandas 提供 merge 函数合并数据集,类似于 sql 中的 join 操作,分为可设为 inner(默认内连接),outer(外连接),left(左连接),right(右连接)。将 data_movies 与 data_ratings 合并成 data 数据集。


上面是将两个子数据集合并,也可以多个子数据集合并,将 data_movies,data_ratings 与 data_users 一起合并成 data1,可以使用两层 merge 函数合并数据集,也可以使用 merge 函数将 data 与 data_users 合并。




数据分析

1、统计变量

变量描述|------

2、分组统计

Pandas 中使用 groupby 函数进行分组统计,groupby 分组实际上就是将原有的 DataFrame 按照 groupby 的字段进行划分,groupby 之后可以添加计数(count)、求和(sum)、求均值(mean)等操作。

① 统计评分最多的 5 部电影

首先根据电影名称进行分组,然后使用 size 函数计算每组样本的个数,最后采用降序的方式输出前 5 条观测值。

② 根据用户 id 统计电影评分的均值

3、分组聚合统计

Pandas 提供 aggregate 函数实现聚合操作,可简写为 agg,可以与 groupby 一起使用,作用是将分组后的对象使给定的计算方法重新取值,支持按照字段分别给定不同的统计方法。

按照 movie_id 和 title 进行分组,并计算评分均值,取前 5 个数据。

4、使用数据透视表 pivot_table 获得根据性别分级的每部电影的平均电影评分

数据透视表 pivot_table 是一种类似 groupby 的操作方法,常见于 EXCEL 中,数据透视表按列输入数据,输出时,不断细分数据形成多个维度累计信息的二维数据表。

DataFrame.pivot_table(data, values=None, index=None, columns=None,            aggfunc='mean', fill_value=None, margins=False,            dropna=True, margins_name='All')
复制代码

index : 行索引,必要参数

**values :**对目标数据进行筛选,默认是全部数据,可通过 values 参数设置我们想要展示的数据列。

**columns :**透视表的列索引,非必要参数,同 index 使用方式一样

**aggfunc :**对数据聚合时进行的函数操作,默认是求平均值,也可以 sum、count 等

**margins :**额外列,默认对行列求和

**fill_value : **对于空值进行填充

dropna : 默认开启去重

结合 Matplotlib 进行可视化分析

Pandas 不仅可以以表的形式分析数据,还可以结合 Matplotlib API 进行可视化分析,通过 import matplotlib.pyplot as plt 导入到程序中,注意,在 jupyter notebook 中需要添加一行 %matplotlib notebook。

1、认识 Matplotlib

① Matplotlib 常见绘图函数:

② Matplotlib 绘图步骤

首先定义 x,y 轴数值,然后绘制图形,设置图形属性,包括颜色,线条,坐标轴范围,线条标记,设置图形标题等,最后使用 plt.show( )绘制图形。

2、使用 pandas 结合 matplotlib 绘制数据分析图

① 不同题材的电影数量柱形图

首先根据电影题材进行,然后选取票房最好的 15 个系列进行统计画图。



② 一年内电影评分均值的走势情况

按照时间分组,然后进行评分均值聚合统计,接着将数据绘制成折线图,便于了解影评分数均值随时间的变化情况,最后将所绘制的图形可通过 savefig 保存。



③ 使用直方图表示评分分布情况

根据数据呈现的评分分布直方图可见,评分为 4 分的数量最多


总结

通过上面的例子,可以了解 Pandas 在数据处理方面具有非常好的特性,它所包含的数据结构和数据处理工具使得数据清洗、数据分析十分快捷,支持大部分 Numpy 语言风格的数组计算,提供分组聚合统计函数,可以与可视化工具 Matplotlib 一起使用

更多学习资料戳下方!!!

https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=infoQ&timestamp=1662366626&author=xueqi

用户头像

社区:ceshiren.com 2022.08.29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
Pandas数据分析及可视化应用实践_测试_测吧(北京)科技有限公司_InfoQ写作社区