码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-09-11 15:52:05      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:desc   汇总   而且   基本   memory   group   点击   merge   float   

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

点击上方“Python读数”,选择“星标”公众号
重磅干货,第一时间送达
在之前的文章中,以图文的方式详细讲解了Pandas中groupby,merge以及map、apply、applymap的原理,掌握好这些原理,再在这个基础上进行一些拓展,基本就可以解决绝大部分比较复杂的数据处理操作了。几篇文章如下,想回看的小伙伴可以再重温一下:

  1. Pandas数据处理三板斧,你会几板?
    2.Pandas数据分析——超好用的Groupby详解
    3.Pandas数据处理——一文详解数据拼接方法merge
    Pandas系列接下来的文章会为大家整理一下实际使用中比较高频的一些用法,当然还会有一篇关于时间序列处理的文章。在这里需要强调一点就是,不建议初学者上来就把Pandas中所有的方法都啃一遍,这样效率太低而且很多方法平时基本用不到,啃下来也容易忘。正确的方式是先把常用的方法先吃透,然后找个项目直接上手,遇到现有方法处理不了的再查看官方文档。
    通过”人工智能“的方式,我从官方文档中筛选出一些比较常用的方法,有二十多个,初学者可以先试着把这些吃透了。为了避免过多看不下去,这篇文章就先介绍10个。
    用于演示的数据如下:
In [15]: data
Out[15]:
#   company  salary  age
0     NaN      43   21
1       A       8   41
2       A      28   26
3       C      42   28
4       A      33   26
5       C      20   18
6       A      48   43
7       B      25   23
8       B      39   18

.head( )

作用对象:Series和DataFrame
主要用途:返回DataFrame的前N行。当数据量较大时,使用.head()可以快速对数据有个大致了解。
用法:
#默认返回前5行,N可以自行设定

In [16]: data.head()
Out[16]:
  company  salary  age
0     NaN      43   21
1       A       8   41
2       A      28   26
3       C      42   28
4       A      33   26

.info( )

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

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

.describe( )

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

# 默认生成数值列的描述性统计
# 使用 include = ‘all‘生成所有列
In [18]: data.describe()
Out[18]:
          salary        age
count   9.000000   9.000000
mean   31.777778  27.111111
std    12.804079   9.143911
min     8.000000  18.000000
25%    25.000000  21.000000
50%    33.000000  26.000000
75%    42.000000  28.000000
max    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    4
B    2
C    2
Name: company, dtype: int64

# 返回占比情况
In [20]: data[‘company‘].value_counts(normalize=True)
Out[20]:
A    0.50
B    0.25
C    0.25
Name: company, dtype: float64

# 升序排列
In [21]: data[‘company‘].value_counts(ascending=True)
Out[21]:
C    2
B    2
A    4
Name: company, dtype: int64

.isna( )

作用对象:Series和DataFrame
主要用途:判断数据是否为缺失值,是的话返回True,否的话返回False
用法:

In [22]: data.isna()
Out[22]:
   company  salary    age
0     True   False  False
1    False   False  False
2    False   False  False
3    False   False  False
4    False   False  False
5    False   False  False
6    False   False  False
7    False   False  False
8    False   False  False

.any( )

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

In [23]: data.isna().any()
Out[23]:
company     True
salary     False
age        False
dtype: bool

.dropna( )

作用对象:Series和DataFrame
主要用途:删掉含有缺失值的数据
用法:

In [24]: data.dropna()
Out[24]:
  company  salary  age
1       A       8   41
2       A      28   26
3       C      42   28
4       A      33   26
5       C      20   18
6       A      48   43
7       B      25   23
8       B      39   18

.fillna( )

作用对象:Series和DataFrame
主要用途:填充缺失数据
主要参数:

  • 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  age
0       B      43   21
1       A       8   41
2       A      28   26
3       C      42   28
4       A      33   26
5       C      20   18
6       A      48   43
7       B      25   23
8       B      39   18

# 用缺失值后面的值来填充(这里NaN后面是‘A‘)
In [25]: data.fillna(method=‘bfill‘)
Out[25]:
  company  salary  age
0       A      43   21
1       A       8   41
2       A      28   26
3       C      42   28
4       A      33   26
5       C      20   18
6       A      48   43
7       B      25   23
8       B      39   18

.sort_index( )

作用对象:Series和DataFrame
主要用途:对数据按照索引进行排序

  • 主要参数:
    ascending (boolean, default False)
    是否升序排列
  • inplace (boolean, default False)
    是否作用于原对象
    用法:
    # 按索引降序排列
    In [27]: data.sort_index(ascending=False)
    Out[27]:
    company  salary  age
    8       B      39   18
    7       B      25   23
    6       A      48   43
    5       C      20   18
    4       A      33   26
    3       C      42   28
    2       A      28   26
    1       A       8   41
    0     NaN      43   21

.sort_values( )

作用对象:Series和DataFrame
主要用途:对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  age
1       A       8   41
5       C      20   18
7       B      25   23
2       A      28   26
4       A      33   26
8       B      39   18
3       C      42   28
0     NaN      43   21
6       A      48   43

往期精彩回顾

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

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

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

关注我
技术图片

1529321439513643.jpg
公众号:Python读数

一个记录成长的公众号
有用的话,点个在看 咯

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

标签:desc   汇总   而且   基本   memory   group   点击   merge   float   

原文地址:https://blog.51cto.com/14915204/2525829

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!