zoukankan      html  css  js  c++  java
  • Pandas数据处理——盘点那些常用的函数(上)

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

    1. Pandas数据处理三板斧——map、apply、applymap详解
    2. Pandas数据分析——超好用的Groupby详解
    3. Pandas数据分析——Merge数据拼接图文详解
    4. 提速百倍的Pandas性能优化方法,让你的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()

    作用对象:SeriesDataFrame

    主要用途:返回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()

    作用对象:SeriesDataFrame

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

    用法:

    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()

    作用对象:SeriesDataFrame

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

    用法:

    # 默认生成数值列的描述性统计
    # 使用 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()

    作用对象:SeriesDataFrame

    主要用途:判断数据是否为缺失值,是的话返回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()

    作用对象:SeriesDataFrame

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

    用法:

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

    .dropna()

    作用对象:SeriesDataFrame

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

    用法:

    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()

    作用对象: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  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()

    作用对象:SeriesDataFrame

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

    主要参数:

    • ascending (boolean, default True
      是否升序排列
    • 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()

    作用对象: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  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

     

    相关文章:

    1. Pandas数据处理三板斧——map、apply、applymap详解
    2. Pandas数据分析——超好用的Groupby详解
    3. Pandas数据处理——玩转时间序列数据
    4. Pandas数据分析——Merge数据拼接图文详解
    5. Pandas数据处理——盘点那些常用的函数(下)
    6. 天秀!Pandas还能用来写爬虫?
    7. 提高数据的颜值!一起看看Pandas中的那些Style
    8. 提速百倍的Pandas性能优化方法,让你的Pandas飞起来!

     转自https://zhuanlan.zhihu.com/p/106722583

  • 相关阅读:
    微信 播放视频
    json与页面动态绑定
    layer mobile开发layer.full
    Layer 使用
    分享一段,图片加水印的代码。本人修改过多次
    jenkins .net linux
    Jenkins .net windows
    《微服务-架构与实践》
    分布式网站架构
    Go 并发随机打印1-n
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/15137374.html
Copyright © 2011-2022 走看看