数据处理中最强有力也最流行的工具之一:Pandas!

描述

大熊猫是全竹宴美食家中的饕餮,亦是十足的瞌睡虫。不过它们还身怀一项隐秘技能:(不遗余力吞噬下)大量的数据。今天将要介绍的就是数据处理中最强有力也最流行的工具之一:Pandas!

当人们谈到数据科学,往往不会立即想到 Pandas。这些黑白相间憨态可掬的大熊猫总是把时间消耗在吃和睡上面,而不是钻研数据相关的研究。但今天我们就是要用 Pandas 对付候选数据集,然后准备好下一步用于机器学习。我没法在一期视频中介绍整个 Pandas 库,但是所幸我能在这期概述中给你一些帮助,让你能自行去深入探索 Pandas 的世界。

我吃我吃我吃吃吃!数据集就是我的竹子,别和我抢!

Pandas 是一个低学习成本高性能的数据结构和数据分析工具。抛开大熊猫憨态可掬的样子不说,「Pandas」这个名字来源于术语「panel data」,指的是统计和计量经济学上的多维数据。

要安装 Pandas,只需在 Python 环境中执行 pip install pandas 命令就可以了。之后只需要在代码中引入 Pandas:import pandas as pd。

数据科学

人们用 Pandas 时往往都会用到 pd.read_csv 来读入 CSV 文件中的数据。这也常常是人们使用时落笔的第一点墨。

数据科学

pd.read_csv 会将数据载入一个 DataFrame 中。它本质上是一张电子表格或是数据表。我们可以通过在 DataFrame 调用 head() 来粗略察看数据集中的概况。

数据科学

DataFrames 中有一行一行数据,这些数据的列首都是经过命名的,这些命名后的列又被称为「序列」。

我最喜欢的 DataFrames 的一些特性当中,有一个函数叫做  describe(),这个函数会罗列出你的 DataFrame 的一些相关数据。这个函数有助于你检查数据集,思考其中的数据分布是否合理,也可以检验是否各项属性都符合预期。

数据科学

有时候我会用 Pandas 来扰乱数据。有时候你想要打乱所有数据,而不是仅仅释出数据时取用首部那一点点数据,那么这时 Pandas 就很有用了。比如,假使你的数据处于完全有序的状态,没有丝毫混乱,此时你可能就需要进行一些额外的混合、扰乱操作了。

数据科学

然而,对于那些无法放进内存里的大型数据集,这么做实在不太明智。也许应该试试更高明点的法子来处理。

处理列

要处理数据集中单独的某一列,只需使用括号来标注出那一列,将该列的名字作为参数传入即可。如果你不清楚有哪些具体的列名称,那么可以回过头看看 .describe() 输出的内容或者用 .columns 以数组形式输出 DataFrame 中所有的列名称。

数据科学

处理行

处理行的方法与处理列不尽相同。比如,如果我们要想得到某个 DataFrame 中索引为 i 的行,需要使用 .iloc[i] 得到该行数据。

数据科学

索引为 5,表示这是第 6 行

记住 Pandas 是以 0 作为索引起点的,所以数据中的第一行对应着索引 0。

同时处理行和列

有时你会想要得到某一指定的行、列的数据。由于行列的访问方式不同,我们需要结合上面讲到的两种方式:

数据科学

当然,你也可以交换两者的访问顺序,比如 csv_data.iloc[5][‘sepal_len’]。不过,相较之下我觉得这样一来可读性就变差了。

某个行/列范围

真正有意思的是当你要处理某个行列范围内数据的时候。

对于列,一个列范围只需要用一个列名称的数组来指定。

数据科学

如果要挨着输入的列名字太多太复杂,那么可以直接使用 csv_data.columns 得到列名称数组后,取数组中某个范围作为列索引的值即可。

数据科学

本来这两列我可以直接输入进去的,不过你明白我的意思就好

如果要得到某个范围内的行怎么办?我们用冒号作为 .iloc 之后的括号内中的分隔符来表达即可。

数据科学

起始索引已经被包括在内了,而终止索引却被忽略了。注意,返回的是索引为 5、6、7、8、9 的行,而不包含索引为 10 的行。

混合行、列范围选择

我们想要的是行的一个子集和列的一个子集,该怎么做?我们把上面谈到的各类方法结合起来:

数据科学

首先,得到所需的列名数组:

cols_2_4 = csv_data.column[2:4]

然后是所有所需的列:

df_cols_2_4 = df[cols_2_4]

选择这些列中的指定行:

df_cols_2_4.iloc[5:10]

如果你非常熟练了,完全可以把上面三步结合成一步:

csv_data[csv_data.columns[2:4]].iloc[5:10]

我希望你能先暂停视频回头想想这个表达式的等价形式。我不会走开,一直在这儿等你。

小结几句

Pandas 中的链式操作不仅会让数据处理更快,同时当你熟练之后,代码可读性也会显著提高。

我们已经看过一些 DataFrame 的处理了,但是 Pandas 所衍生的一整套工具却远远不止这些。从高效的 PyTables 和 HDF5 式文件存储到进行统计学分析,处处遍布 Pandas 的身影。

稍后就试着去用一下 Pandas 吧,定会让你满意!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分