Python Pandas DataFrame分组排序

  • 转载自 https://blog.csdn.net/ai_1046067944/article/details/86300634

一、pandas分组*

1、分组运算过程:split->apply->combine

  • 拆分:进行分组的根据
  • 应用:每个分组运行的计算规则
  • 合并:把每个分组的计算结果合并起来

img

2、分组函数

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs



 



by: 依据哪些列进行分组,值可以是:mapping, function, label, or list of labels

3、聚合函数

img

4、分组聚合实例

  • 单列分组
>>> import pandas as pd



>>> df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'], 'B': [2, 8, 1, 4,



3, 2, 5, 9], 'C': [102, 98, 107, 104, 115, 87, 92, 123], 'D': [2, 98, 17, 14, 15, 7, 92,



 13]})



>>> df



   A  B    C   D



0  a  2  102   2



1  b  8   98  98



2  a  1  107  17



3  c  4  104  14



4  a  3  115  15



5  c  2   87   7



6  b  5   92  92



7  c  9  123  13



>>> df.groupby(by='A').sum()



    B    C    D



A



a   6  324   34



b  13  190  190



c  15  314   34
  • 多列分组
>>> df.groupby(by=['A','B']).sum()             ###A,B成索引



       C   D



A B



a 1  107  17



  2  102   2



  3  115  15



b 5   92  92



  8   98  98



c 2   87   7



  4  104  14



  9  123  13
  • 多列聚合
>>> df.groupby(by=['A','B'])['C'].sum()      ###1个列



A  B



a  1    107



   2    102



   3    115



b  5     92



   8     98



c  2     87



   4    104



   9    123



 



>>> df.groupby(by=['A','B'])['C','D'].sum()   ###2个列



       C   D



A B



a 1  107  17



  2  102   2



  3  115  15



b 5   92  92



  8   98  98



c 2   87   7



  4  104  14



  9  123  13
  • 多列不同聚合方式
>>> import numpy as np



>>> df.groupby(by=['A']).agg({'C':[np.mean, 'sum'], 'D':['count',np.std]})



            C          D



         mean  sum count       std



A



a  108.000000  324     3  8.144528



b   95.000000  190     2  4.242641



c  104.666667  314     3  3.785939



 



 



>>>ps: 不同列使用多个不同函数进行聚合C: mean,sum;D:count,std
  • 返回值类型区别
方法1:agg



>>> df.groupby(by=['A']).agg({'C':[np.mean]})



            C



         mean



A



a  108.000000



b   95.000000



c  104.666667



>>> type(df.groupby(by=['A']).agg({'C':[np.mean]}))



<class 'pandas.core.frame.DataFrame'>



 



 



方法2:索引



>>> df.groupby(by=['A'])['C'].mean()



A



a    108.000000



b     95.000000



c    104.666667



Name: C, dtype: float64



>>> type(df.groupby(by=['A'])['C'].mean())



<class 'pandas.core.series.Series'>



 



 



 



总结: 两种方法结果一样,但是一个类型是DataFrame,一个为Series;有时候会用上

二、pandas排序

  • 按索引进行降序排列
>>> df



   A  B    C   D



0  a  2  102   2



1  b  8   98  98



2  a  1  107  17



3  c  4  104  14



4  a  3  115  15



5  c  2   87   7



6  b  5   92  92



7  c  9  123  13



>>> df.sort_index(ascending=False)       ### 索引



   A  B    C   D



7  c  9  123  13



6  b  5   92  92



5  c  2   87   7



4  a  3  115  15



3  c  4  104  14



2  a  1  107  17



1  b  8   98  98



0  a  2  102   2
  • 按值进行降序排列
>>> df.sort_values(by="A",ascending=False)        # 按某一列



   A  B    C   D



3  c  4  104  14



5  c  2   87   7



7  c  9  123  13



1  b  8   98  98



6  b  5   92  92



0  a  2  102   2



2  a  1  107  17



4  a  3  115  15



 



>>> df.sort_values(by=["B","A"],ascending=False)   # 按2列



   A  B    C   D



7  c  9  123  13



1  b  8   98  98



6  b  5   92  92



3  c  4  104  14



4  a  3  115  15



5  c  2   87   7



0  a  2  102   2



2  a  1  107  17



 



 



 



 
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python pandas是一个数据分析工具,提供了DataFrame数据结构,它有许多常见的函数可以对数据进行处理和分析。 1. 读取数据:通过read_csv()函数可以将csv格式的文件读取为DataFrame对象,并通过to_csv()函数将DataFrame对象保存为csv文件。 2. 选取数据:使用loc()和iloc()函数可以根据标签或索引选取DataFrame中的行和列。例如,df.loc[0]可以选择第一行,df.loc[:, 'A']可以选择'A'列。 3. 描述数据:describe()函数可以提供DataFrame中数值列的基本统计信息,如计数、均值、标准差等。 4. 排序数据:通过sort_values()函数可以根据指定的列或多个列对DataFrame进行排序。 5. 筛选数据:使用条件表达式可以筛选出满足条件的数据,例如df[df['A'] > 0]可以筛选出'A'列大于0的数据。 6. 缺失值处理:fillna()函数可以将DataFrame中的缺失值用指定的值进行填充,dropna()函数可以删除包含缺失值的行或列。 7. 合并数据:通过concat()和merge()函数可以将多个DataFrame对象按指定的方式合并成一个新的DataFrame。 8. 统计计算:DataFrame提供了一些常见的统计计算函数,如sum()、mean()、median()等,可以对指定的列进行计算。 9. 分组操作:使用groupby()函数可以按照指定的列对DataFrame进行分组操作,然后进行聚合计算,如求和、平均值等。 10. 数据透视表:使用pivot_table()函数可以根据指定的行和列对DataFrame进行透视操作,类似于Excel中的数据透视表。 这些函数只是常见的一部分,Python pandas还提供了很多其他强大的函数和特性,可以根据实际需求去探索和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值