查看原文
其他

Pandas数据处理——盘点那些常用的函数(上)

The following article is from Python读财 Author 易执

在之前的文章中,以图文的方式详细讲解了Pandas中groupbymerge以及mapapplyapplymap的原理,掌握好这些原理,再在这个基础上进行一些拓展,基本就可以解决绝大部分比较复杂的数据处理操作了。几篇文章如下,想回看的小伙伴可以再重温一下:

  1.  Pandas数据处理三板斧,你会几板?

  2. Pandas数据分析——超好用的Groupby详解

  3. Pandas数据处理——一文详解数据拼接方法merge

Pandas系列接下来的文章会为大家整理一下实际使用中比较高频的一些用法,当然还会有一篇关于时间序列处理的文章。在这里需要强调一点就是,不建议初学者上来就把Pandas中所有的方法都啃一遍,这样效率太低而且很多方法平时基本用不到,啃下来也容易忘。正确的方式是先把常用的方法先吃透,然后找个项目直接上手,遇到现有方法处理不了的再查看官方文档。

通过”人工智能“的方式,我从官方文档中筛选出一些比较常用的方法,有二十多个,初学者可以先试着把这些吃透了。为了避免过多看不下去,这篇文章就先介绍10个。

用于演示的数据如下:

In [15]: dataOut[15]: company salary age0 NaN 43 211 A 8 412 A 28 263 C 42 284 A 33 265 C 20 186 A 48 437 B 25 238 B 39 18

.head( )

作用对象:SeriesDataFrame

主要用途:返回DataFrame的前N行。当数据量较大时,使用.head()可以快速对数据有个大致了解。

用法:

#默认返回前5行,N可以自行设定In [16]: data.head()Out[16]: company salary age0 NaN 43 211 A 8 412 A 28 263 C 42 284 A 33 26

.info( )

作用对象:SeriesDataFrame

主要用途:打印所用数据的一些基本信息,包括索引和列的数据类型占用的内存大小

用法:

In [17]: data.info()<class 'pandas.core.frame.DataFrame'>RangeIndex: 9 entries, 0 to 8Data columns (total 3 columns):company 8 non-null objectsalary 9 non-null int32age 9 non-null int32dtypes: int32(2), object(1)memory usage: 224.0+ bytes

.describe( )

作用对象:SeriesDataFrame

主要用途:生成描述性统计汇总,包括数据的计数和百分位数,有助于了解大致的数据分布

用法:

# 默认生成数值列的描述性统计# 使用 include = 'all'生成所有列In [18]: data.describe()Out[18]: salary agecount 9.000000 9.000000mean 31.777778 27.111111std 12.804079 9.143911min 8.000000 18.00000025% 25.000000 21.00000050% 33.000000 26.00000075% 42.000000 28.000000max 48.000000 43.000000

.value_counts( )

作用对象:Series

主要用途:统计分类变量中每个类的数量,比如company中各个公司都有多少人

主要参数:

  • normalize (boolean, default False

    返回各类的占比

  • sort (boolean, default True

    是否对统计结果进行排序

  • ascending (boolean, default False

    是否升序排列

用法:

In [19]: data['company'].value_counts()Out[19]:A 4B 2C 2Name: company, dtype: int64 # 返回占比情况In [20]: data['company'].value_counts(normalize=True)Out[20]:A 0.50B 0.25C 0.25Name: company, dtype: float64
# 升序排列In [21]: data['company'].value_counts(ascending=True)Out[21]:C 2B 2A 4Name: company, dtype: int64

.isna( )

作用对象:SeriesDataFrame

主要用途:判断数据是否为缺失值,是的话返回True,否的话返回False

用法:

In [22]: data.isna()Out[22]: company salary age0 True False False1 False False False2 False False False3 False False False4 False False False5 False False False6 False False False7 False False False8 False False False

.any( )

作用对象:SeriesDataFrame

主要用途:大多数情况下数据量较大,不可能直接isna()后一个一个看是否是缺失值。any()isna()结合使用可以判断某一列是否有缺失值。

用法:

In [23]: data.isna().any()Out[23]:company Truesalary Falseage Falsedtype: bool

.dropna( )

作用对象:SeriesDataFrame

主要用途:删掉含有缺失值的数据

用法:

In [24]: data.dropna()Out[24]: company salary age1 A 8 412 A 28 263 C 42 284 A 33 265 C 20 186 A 48 437 B 25 238 B 39 18

.fillna( )

作用对象:SeriesDataFrame

主要用途:填充缺失数据

主要参数:

  • value (scalar, dict, Series, or DataFrame

    用于填充缺失值的值

  • method ({‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None

    缺失值的填充方式,常用的是bfill后面的值进行填充,ffill用前面的值进行填充

  • inplace (boolean, default False

    是否作用于原对象

用法:

In [26]: data.fillna('B')Out[26]: company salary age0 B 43 211 A 8 412 A 28 263 C 42 284 A 33 265 C 20 186 A 48 437 B 25 238 B 39 18
# 用缺失值后面的值来填充(这里NaN后面是'A')In [25]: data.fillna(method='bfill')Out[25]: company salary age0 A 43 211 A 8 412 A 28 263 C 42 284 A 33 265 C 20 186 A 48 437 B 25 238 B 39 18

.sort_index( )

作用对象:SeriesDataFrame

主要用途:对数据按照索引进行排序

主要参数:

  • ascending (boolean, default False

    是否升序排列

  • inplace (boolean, default False

    是否作用于原对象

用法:

# 按索引降序排列In [27]: data.sort_index(ascending=False)Out[27]: company salary age8 B 39 187 B 25 236 A 48 435 C 20 184 A 33 263 C 42 282 A 28 261 A 8 410 NaN 43 21

.sort_values( )

作用对象:SeriesDataFrame

主要用途:对DataFrame而言,按照某列进行排序(用by参数控制),对Series按数据列进行排序。

主要参数:

  • by (str or list of str

    作用于DataFrame时需要指定排序的列

  • ascending (boolean, default False

    是否升序排列

In [28]: data.sort_values(by='salary')Out[28]: company salary age1 A 8 415 C 20 187 B 25 232 A 28 264 A 33 268 B 39 183 C 42 280 NaN 43 216 A 48 43

精彩回顾





Python网络爬虫与文本数据分析

如何使用Python快速构建领域内情感词典

中文文本数据逻辑性分析库

中文文本分析相关资源汇总

cnsenti中文情绪情感分析库

Python全栈-60天精通之路

Python数据分析相关学习资源汇总帖

漂亮~pandas可以无缝衔接Bokeh

综述:文本分析在市场营销研究中的应用

2020年B站跨年晚会弹幕内容分析

YelpDaset: 酒店管理类数据集10+G

Loughran&McDonald金融文本情感分析库



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存