上节,我们讲了 Pandas 基本的数据加载与检索,这节我们讲讲如何进行数据比较。
在 Pandas 中我们获取指定列的数据有多种方式:
为了更好地理解它是如何工作的,我们先来创建一个序列(Series):
这个序列可以包含任何类型的数据,或者混合类型。下面我们创建一个 string 类型的数据:
我们可以通过多样的 Series 来创建 DataFrame。这里,我们通过上面两个序列创建:
我们通过多重列表也可以达到同样的效果:
也可以设置标签:
这样我们就可以通过标签来检索数据了:
我们跳过 column 关键字,直接指定列名:
我们前面提到,DataFrame中每一列都是一个 Series 对象:
使用 head 调用前面几条记录:
Pandas Series 和 DataFrames 都有其他的方法使计算简单化。例如,我们使用 pandas.Series.mean 方法计算均值:
修改 axis 关键字参数求每一行每一列的 mean 值。axis 默认为 0,并像上面的例子那样,计算每一列的方差 mean。我们也可以设置为 1 来计算每一行的方差。注意,那样的话将只计算每行数值的方差:
这里有一些 Series 和 DataFrames 的方法:
我们通过 corr 方法来看一下每一列 score 的相关系数。例如,这能告诉我们是最近发布游戏评价更高(release_year),还是年度发布游戏得分更高(release_month)。
可以看到,我们的数值列与 score 的相关系数,意味着发布时间与评分并非线性相关的。
我们可以在 Series 和 DataFrame 执行数学操作。例如,将每一个 score 值除以 2,将原来 0~10 的缩小成 0~5:
如前所述,reviews 数据集中 score 列的均值为 7。我们想要获取平均分以上的数据该怎么办呢?可以先做比较,生成布尔值标志比较的结果。例如查看 score 是否大于 7:
一旦有了比较值,就能选择 DataFrame 中比较值为 True 的行:
我们也可使用多个条件来过滤,比如我们想找出在 Xbox One 平台上评分大于 7 分的数据,可以这样做:
现在,我们知道怎么过滤数据了。我们还可以创建 plots 来观察 Xbox One 与 PlayStation 4 的分布对比情况,这将有助于我们了解哪款终端更适合游戏。我们使用柱状图(histogram)来展示不同的分数范围,能告诉我们哪款终端有更高的评价。
pandas.DataFrame.plot 方法默认绘制线性图形,我们得通过 kind="hist"关键之来绘制柱状图。
通过以下几个步骤:
类似的,我们可以绘制针对 PS4 的图形:
可以看到 PlayStation 4 比 Xbox One 有更高的评分。
查看 Xbox One 中评分大于 7 分的分布情况:
(完)
#python #pandas
联系客服