10分钟学pandas(10 Minutes to pandas)-全文翻译

简介

本文是对《10 Minutes to pandas》的全文翻译,版本为0.23.4。概括性地讲解pandas的使用方法。PS:谁说的10分钟,保证不打死他…

通常,我们导入如下命令:

创建对象

通过传递列表中的值来创建一个Series,让pandas创建一个默认的整数索引:

通过传递带有日期时间索引和列标签的NumPy数组来创建DataFrame:

通过传递可以转换为类似Series的字典对象来创建DataFrame:

生成的DataFrame的列具有不同的dtypes:

如果您正在使用IPython,使用tab自动补全功能会自动识别所有的属性以及自定义的列,以下是可以补全的属性名:

如你所见,A,B,C和D列通过tab能被自动补全。E列当然也可以;为简洁起见,其他属性已被截断。

查看数据

以下是查看frame的头部和尾部的方法:

显示索引,列和下面的NumPy数据:

describe()方法展现你的数据的一个快速统计汇总:

数据转置:

按轴排序:

按值排序:

选择

注意:虽然用于选择和设置的标准Python / Numpy表达式非常直观并且可以用于交互式工作,但对于程序化代码,我们建议使用优化的pandas数据访问方法,.at.iat.loc.iloc

获取

选择一个单独的列,这会产生一个Series,相当于df.A:

通过[]选择,可以对行进行切片:

通过标签选择

使用索引中的标签名获取数据:

使用多个列标签获取数据:

通过标签名切片,包括两个端点:

减少返回对象的尺寸:

获取标量值:

还可以通过如下方法获取标量值:

通过位置选择

通过位置的整数索引选择:

通过整数切片选择,类似于numpy / python:

通过指定整数索引列表选择,类似于numpy / python样式:

对行进行切片:

对列进行切片:

获取特定的值:

还可以通过如下方法获取特定的值:

布尔索引

使用单个列的值来选择数据:

从满足布尔条件的DataFrame中选择数据:

使用isin()方法进行过滤:

设置

设置新列会自动根据索引对齐数据:

通过标签赋值:

通过位置赋值:

通过NumPy数组赋值:

结果如下:

通过where操作赋值:

缺失值

pandas使用np.nan来表示缺失的数据,默认缺失值不包含在计算中。

reindex()允许在指定轴上进行更改/添加/删除索引的操作。这将返回原数据的一个拷贝。

删除任何包含缺少数据的行:

填充缺失数据:

isna()判断是否是nan值,并用布尔值填充:

操作

统计

操作通常排除缺失的数据。

执行描述性统计:

在指定轴也能执行相同操作:

对于拥有不同维度,需要对齐的对象进行操作,pandas会自动沿指定维度进行广播:

应用

对数据应用函数:

直方图

字符串方法

Series在str属性中配备了一组字符串处理方法,可以轻松地对数组的每个元素进行操作,如下面的代码片段所示。请注意,str中的模式匹配通常默认使用正则表达式(在某些情况下总是使用它们):

合并

合并多个数组

pandas提供了各种工具,可以在连接/合并类型操作的情况下,轻松地将Series,DataFrame和Panel对象与索引和关系代数功能的各种设置逻辑组合在一起。

使用concat()连接pandas对象:

连接

SQL样式的合并:

另一个例子是:

增加

将一行增加到一个DataFrame上:

分组

通过“group by”,我们指的是涉及以下一个或多个步骤的过程:

  • 根据某些标准将数据拆分为组;
  • 将函数独立应用于每个组;
  • 将结果组合到数据结构中。

分组并将sum()方法应用于所分的组中:

按多列分组形成分层索引,我们再次应用sum()方法:

重塑

堆积stack

stack()方法“压缩”DataFrame列中的级别:

使用“stacked”的DataFrame或Series(具有MultiIndex作为索引),stack()的逆操作是unstack(),默认情况下取消堆积最后一级:

数据透视表

我们可以非常轻松地从这些数据生成数据透视表:

时间序列

Pandas在对频率转换进行重新采样时拥有简单、强大且高效的功能(如将按秒采样的数据转换为按5分钟为单位进行采样的数据)。这种操作在金融领域非常常见。

时区表示:

转换为另一个时区:

时区之间转换:

一些快捷的算术函数可以实现周期和时间戳之间的转换。在下面的示例中,我们将以每年按照11月结束的季度周期转换为以每个季度月末的上午9点结束的周期:

分类

pandas可以在DataFrame中添加分类数据。

将raw grades转换为分类数据类型:

将类别重命名为更有意义的名称:

重新排序类别,同时添加缺失的类别(Series .cat下的方法默认返回一个新的Series):

排序是按类别划分的每个订单,而不是词汇顺序:

对类别列进行排序时存在空的类别:

画图

《10分钟学pandas(10 Minutes to pandas)-全文翻译》

在DataFrame上,plot()方法可以方便地绘制带有标签的所有列:

《10分钟学pandas(10 Minutes to pandas)-全文翻译》

读写数据

CSV格式

写入一个csv文件:

读取一个csv文件:

HDF5格式

读写HDFStores。

写入一个HDF5 存储:

读取一个HDF5存储:

Excel格式

读写MS Excel。

写入一个excel文件:

读取一个excel文件:

陷阱

如果你尝试执行下面的操作,会看到如下异常:

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

11 + 5 =