分享

Python数据分析——Pandas 教程(下)

 静幻堂 2019-12-30
春风十里不如一起 2019-03-02 23:21:47

上节,我们讲了 Pandas 基本的数据加载与检索,这节我们讲讲如何进行数据比较。

Pandas系列对象

在 Pandas 中我们获取指定列的数据有多种方式:

  • reviews.iloc[:, 1]:获取第二列的数据
  • reviews.loc[:, "score_phrase"]:获取指定标签列的数据
  • reviews["score_phrase"]:只需要指定列名
Python数据分析——Pandas 教程(下)

为了更好地理解它是如何工作的,我们先来创建一个序列(Series):

Python数据分析——Pandas 教程(下)

这个序列可以包含任何类型的数据,或者混合类型。下面我们创建一个 string 类型的数据:

Python数据分析——Pandas 教程(下)

在Pandas中创建DataFrame

我们可以通过多样的 Series 来创建 DataFrame。这里,我们通过上面两个序列创建:

Python数据分析——Pandas 教程(下)

我们通过多重列表也可以达到同样的效果:

Python数据分析——Pandas 教程(下)

也可以设置标签:

Python数据分析——Pandas 教程(下)

这样我们就可以通过标签来检索数据了:

Python数据分析——Pandas 教程(下)

我们跳过 column 关键字,直接指定列名:

Python数据分析——Pandas 教程(下)

Pandas DataFrame方法¶

我们前面提到,DataFrame中每一列都是一个 Series 对象:

Python数据分析——Pandas 教程(下)

使用 head 调用前面几条记录:

Python数据分析——Pandas 教程(下)

Pandas Series 和 DataFrames 都有其他的方法使计算简单化。例如,我们使用 pandas.Series.mean 方法计算均值:

Python数据分析——Pandas 教程(下)

修改 axis 关键字参数求每一行每一列的 mean 值。axis 默认为 0,并像上面的例子那样,计算每一列的方差 mean。我们也可以设置为 1 来计算每一行的方差。注意,那样的话将只计算每行数值的方差:

Python数据分析——Pandas 教程(下)

这里有一些 Series 和 DataFrames 的方法:

  • pandas.DataFrame.corr:找出 DataFrame 所有列之间的相关系数
  • pandas.DataFrame.count:统计 DataFrame 每一列非空值的个数
  • pandas.DataFrame.max:找出每一列的最大值
  • pandas.DataFrame.min:找出每一列的最小值
  • pandas.DataFrame.median:找出每一列的中位数
  • pandas.DataFrame.std:找出每一列的标准误差

我们通过 corr 方法来看一下每一列 score 的相关系数。例如,这能告诉我们是最近发布游戏评价更高(release_year),还是年度发布游戏得分更高(release_month)。

Python数据分析——Pandas 教程(下)

可以看到,我们的数值列与 score 的相关系数,意味着发布时间与评分并非线性相关的。

Pandas中的DataFrame Math

我们可以在 Series 和 DataFrame 执行数学操作。例如,将每一个 score 值除以 2,将原来 0~10 的缩小成 0~5:

Python数据分析——Pandas 教程(下)

Pandas中的Boolean Indexing

如前所述,reviews 数据集中 score 列的均值为 7。我们想要获取平均分以上的数据该怎么办呢?可以先做比较,生成布尔值标志比较的结果。例如查看 score 是否大于 7:

Python数据分析——Pandas 教程(下)

一旦有了比较值,就能选择 DataFrame 中比较值为 True 的行:

Python数据分析——Pandas 教程(下)

我们也可使用多个条件来过滤,比如我们想找出在 Xbox One 平台上评分大于 7 分的数据,可以这样做:

  • 检查 score 是否大于 7
  • 检查 platform 平台是否为 Xbox One
Python数据分析——Pandas 教程(下)

Pandas Plotting

现在,我们知道怎么过滤数据了。我们还可以创建 plots 来观察 Xbox One 与 PlayStation 4 的分布对比情况,这将有助于我们了解哪款终端更适合游戏。我们使用柱状图(histogram)来展示不同的分数范围,能告诉我们哪款终端有更高的评价。

pandas.DataFrame.plot 方法默认绘制线性图形,我们得通过 kind="hist"关键之来绘制柱状图。

通过以下几个步骤:

  • 调用 %matplotlib inline 在 Jupyter Notebook 中建立图形
  • 过滤数据,只保留 Xbox One 数据
  • 绘制 score 列
Python数据分析——Pandas 教程(下)

类似的,我们可以绘制针对 PS4 的图形:

Python数据分析——Pandas 教程(下)

可以看到 PlayStation 4 比 Xbox One 有更高的评分。

查看 Xbox One 中评分大于 7 分的分布情况:

Python数据分析——Pandas 教程(下)

(完)

#python #pandas

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多