天天看点

Pandas之:Pandas高级教程以铁达尼号真实数据为例

简介

今天我们会讲解一下pandas的高级教程,包括读写文件、选取子集和图形表示等。

读写文件

数据处理的一个关键步骤就是读取文件进行分析,然后将分析处理结果再次写入文件。

pandas支持多种文件格式的读取和写入:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

接下来我们会以pandas官网提供的titanic.csv为例来讲解pandas的使用。

titanic.csv提供了800多个泰坦利特号上乘客的信息,是一个891 rows x 12 columns的矩阵。

我们使用pandas来读取这个csv:

read_csv方法会将csv文件转换成为pandas 的<code>dataframe</code>。

默认情况下我们直接使用df变量,会默认展示前5行和后5行数据:

可以使用head(n)和tail(n)来指定特定的行数:

使用dtypes可以查看每一列的数据类型:

使用to_excel可以将df转换为excel文件,使用read_excel可以再次读取excel文件:

使用info()可以来对df进行一个初步的统计:

df的选择

df的head或者tail方法只能显示所有的列数据,下面的方法可以选择特定的列数据。

Pandas之:Pandas高级教程以铁达尼号真实数据为例

每一列都是一个series:

还可以多选:

如果选择多列的话,返回的结果就是一个df类型:

上面我们讲到了怎么选择列数据,下面我们来看看怎么选择行数据:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

选择客户年龄大于35岁的:

使用isin选择pclass在2和3的所有客户:

上面的isin等于:

筛选age不是空的:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

我们可以同时选择行和列。

使用loc和iloc可以进行行和列的选择,他们两者的区别是loc是使用名字进行选择,iloc是使用数字进行选择。

选择age&gt;35的乘客名:

loc中第一个值表示行选择,第二个值表示列选择。

使用iloc进行选择:

使用plots作图

怎么将df转换成为多样化的图形展示呢?

Pandas之:Pandas高级教程以铁达尼号真实数据为例

要想在命令行中使用matplotlib作图,那么需要启动ipython的qt环境:

直接使用plot来展示一下上面我们读取的乘客信息:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

横坐标就是df中的index,列坐标是各个列的名字。注意上面的列只展示的是数值类型的。

我们只展示age信息:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

默认的是柱状图,我们可以转换图形的形式,比如点图:

选择数据中的passengerid作为x轴,age作为y轴:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

除了散点图,还支持很多其他的图像:

再看一个box图:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

可以看到,乘客的年龄大多集中在20-40岁之间。

还可以将选择的多列分别作图展示:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

指定特定的列:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

还可以先画图,然后填充:

先画一个空的图,然后对其进行填充:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

使用现有的列创建新的列

Pandas之:Pandas高级教程以铁达尼号真实数据为例

有时候,我们需要对现有的列进行变换,以得到新的列,比如我们想添加一个age2列,它的值是age列+10,则可以这样:

还可以对列进行重命名:

列名转换为小写:

进行统计

我们来统计下乘客的平均年龄:

选择中位数:

更多信息:

使用agg指定特定的聚合方法:

可以使用groupby:

groupby所有的列:

groupby之后还可以选择特定的列:

Pandas之:Pandas高级教程以铁达尼号真实数据为例

可以分类进行count:

上面等同于:

df重组

可以根据某列进行排序:

根据多列排序:

选择特定的行和列数据,下面的例子我们将会选择性别为女性的部分数据:

使用pivot可以进行轴的转换:

Pandas之:Pandas高级教程以铁达尼号真实数据为例
本文已收录于 http://www.flydean.com/02-python-pandas-advanced/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现! 欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!