这篇文章主要介绍 Pandas如何使用GroupBy分组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联公司主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务瑶海,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
import pandas as pd import numpy as np df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'], 'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C' : np.random.randn(8), 'D' : np.random.randn(8)}) gb.groupby('A') print(df.groupby('A')) <pandas.core.groupby.DataFrameGroupBy object at 0x00000000042F3470> In [26]: gb.<TAB> gb.agg gb.boxplot gb.cummin gb.describe gb.filter gb.get_group gb.height gb.last gb.median gb.ngroups gb.plot gb.rank gb.std gb.transform gb.aggregate gb.count gb.cumprod gb.dtype gb.first gb.groups gb.hist gb.max gb.min gb.nth gb.prod gb.resample gb.sum gb.var gb.apply gb.cummax gb.cumsum gb.fillna gb.gender gb.head gb.indices gb.mean gb.name gb.ohlc gb.quantile gb.size gb.tail gb.weight
In [41]: grouped = df.groupby('A') In [42]: for name, group in grouped: ....: print(name) ....: print(group) ....: bar A B C D1 bar one -0.042379 -0.0893293 bar three -0.009920 -0.9458675 bar two 0.495767 1.956030foo A B C D0 foo one -0.919854 -1.1313452 foo two 1.247642 0.3378634 foo two 0.290213 -0.9321326 foo one 0.362949 0.0175877 foo three 1.548106 -0.016692
In [44]: grouped.get_group('bar')Out[44]: A B C D1 bar one -0.042379 -0.0893293 bar three -0.009920 -0.9458675 bar two 0.495767 1.956030
In [56]: grouped = df.groupby('A')In [57]: grouped['C'].agg([np.sum, np.mean, np.std])Out[57]: sum mean stdA bar 0.443469 0.147823 0.301765foo 2.529056 0.505811 0.966450
In [60]: grouped.agg({'C' : np.sum, ....: 'D' : lambda x: np.std(x, ddof=1)}) ....: Out[60]: C D A bar 0.443469 1.490982foo 2.529056 0.645875
转变函数(transform)中需要返回一个和分组块(group chunk)同样大小的结果,比如我们需要标准化每一个分组的数据:
In [66]: index = pd.date_range('10/1/1999', periods=1100) In [67]: ts = pd.Series(np.random.normal(0.5, 2, 1100), index) In [68]: ts = ts.rolling(window=100,min_periods=100).mean().dropna() In [71]: key = lambda x: x.year#使用年来分组In [72]: zscore = lambda x: (x - x.mean()) / x.std()#标准化In [73]: transformed = ts.groupby(key).transform(zscore)#使用索引的年份来分组,然后标准化各组数据In [80]: compare = pd.DataFrame({'Original': ts, 'Transformed': transformed})# 做出图形
filter方法返回一个子集(subset)。比如我们只想要组长度大于2的分组:
In [105]: dff = pd.DataFrame({'A': np.arange(8), 'B': list('aabbbbcc')}) In [106]: dff.groupby('B').filter(lambda x: len(x) > 2) Out[106]: A B2 2 b3 3 b4 4 b5 5 b
In [123]: df Out[123]: A B C D0 foo one -0.919854 -1.1313451 bar one -0.042379 -0.0893292 foo two 1.247642 0.3378633 bar three -0.009920 -0.9458674 foo two 0.290213 -0.9321325 bar two 0.495767 1.9560306 foo one 0.362949 0.0175877 foo three 1.548106 -0.016692In [124]: grouped = df.groupby('A')# could also just call .describe()In [125]: grouped['C'].apply(lambda x: x.describe()) Out[125]: A bar count 3.000000 mean 0.147823 std 0.301765 min -0.042379 25% -0.026149 50% -0.009920 75% 0.242924... foo mean 0.505811 std 0.966450 min -0.919854 25% 0.290213 50% 0.362949 75% 1.247642 max 1.548106Name: C, dtype: float64
以上是“ Pandas如何使用GroupBy分组”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
名称栏目:Pandas如何使用GroupBy分组
转载来源:https://www.cdcxhl.com/article46/posjhg.html
成都网站建设公司_创新互联,为您提供移动网站建设、服务器托管、网站导航、网页设计公司、品牌网站建设、网站设计
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联