整理了25个Pandas实用技巧

本文分享了25个Pandas数据处理的实用技巧,包括显示版本信息、创建DataFrame、更改列名、行和列的反转、选择特定数据类型、数值型与字符型转换、减小DataFrame内存占用、按行或列合并文件、从剪贴板创建DataFrame、随机划分DataFrame、筛选特定类型数据、处理缺失值、字符串拆分、Series扩展为DataFrame、多函数聚合、聚合结果与DataFrame结合、行和列切片、MultiIndexed Series重塑、创建数据透视表、连续数据转类别数据、格式化DataFrame样式,以及使用pandas-profiling模块进行DataFrame概览分析。
摘要由CSDN通过智能技术生成

为大家分享pandas技巧。

1、显示已安装的版本

输入下面的命令查询pandas版本:

In [7]:pd.__version__
Out[7]:'0.24.2'

如果你还想知道pandas所依赖的模块的版本,你可以使用show_versions()函数:

In [9]:
pd.show_versions()

INSTALLED VERSIONS 
------------------ 
commit: None 
python: 3.7.3.final.0 
python-bits: 64 

.......

gcsfs: None

你可以查看到Python,pandas, Numpy, matplotlib等的版本信息。

2、创建示例DataFrame

假设你需要创建一个示例DataFrame。有很多种实现的途径,我最喜欢的方式是传一个字典给DataFrame constructor,其中字典中的keys为列名,values为列的取值。

现在如果你需要创建一个更大的DataFrame,上述方法则需要太多的输入。在这种情况下,你可以使用Numpy的random.rand()函数,告诉它行数和列数,将它传递给DataFrame constructor:

这种方式很好,但如果你还想把列名变为非数值型的,你可以强制地将一串字符赋值给columns参数:

你可以想到,你传递的字符串的长度必须与列数相同。

3、更改列名

让我们来看一下刚才我们创建的示例DataFrame:

我更喜欢在选取pandas列的时候使用点(.),但是这对那么列名中含有空格的列不会生效。让我们来修复这个问题。

更改列名最灵活的方式是使用rename()函数。你可以传递一个字典,其中keys为原列名,values为新列名,还可以指定axis:

In [14]:
df = df.rename({'col one':'col_one', 'col two':'col_two'}, axis='columns')

使用这个函数最好的方式是你需要更改任意数量的列名,不管是一列或者全部的列。

如果你需要一次性重新命令所有的列名,更简单的方式就是重写DataFrame的columns属性:

In [15]:
df.columns = ['col_one', 'col_two']

如果你需要做的仅仅是将空格换成下划线,那么更好的办法是使用str.replace()方法,这是因为你都不需要输入所有的列名:

In [16]:
df.columns = df.columns.str.replace(' ', '_')

上述三个函数的结果都一样,可以更改列名使得列名中不含有空格:

最后,如果你需要在列名中添加前缀或者后缀,你可以使用add_prefix()函数:

或者使用add_suffix()函数:

4、行序反转

让我们来看一下drinks这个DataFame:

In [20]:
drinks.head()

Out[20]:

该数据集描述了每个国家的平均酒消费量。如果你想要将行序反转呢?

最直接的办法是使用loc函数并传递::-1,跟Python中列表反转时使用的切片符号一致:

In [21]:
drinks.loc[::-1].head()

Out[21]:

如果你还想重置索引使得它从0开始呢?

你可以使用reset_index()函数,告诉他去掉完全抛弃之前的索引:

In [22]:
drinks.loc[::-1].reset_index(drop=True).head()

Out[22]:

你可以看到,行序已经反转,索引也被重置为默认的整数序号。

5、列序反转

跟之前的技巧一样,你也可以使用loc函数将列从左至右反转:

In [23]:
drinks.loc[:, ::-1].head()

Out[23]:

逗号之前的冒号表示选择所有行,逗号之后的::-1表示反转所有的列,这就是为什么country这一列现在在最右边。

6、通过数据类型选择列

这里有drinks这个DataFrame的数据类型:

In [24]:
drinks.dtypes

Out[24]:
country                          object
beer_servings                     int64
spirit_servings                   int64
wine_servings                     int64
total_litres_of_pure_alcohol    float64
continent                        object
dtype: object

假设你仅仅需要选取数值型的列,那么你可以使用select_dtypes()函数:

In [25]:
drinks.select_dtypes(include='number').head()

Out[25]:

这包含了int和float型的列。

你也可以使用这个函数来选取数据类型为object的列:

你还可以选取多种数据类型,只需要传递一个列表即可:

你还可以用来排除特定的数据类型:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值