• 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

  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/15137374.html
Copyright © 2020-2023  润新知