![[利用python进行数据分析 书笔记]第9章 数据聚合和分组运算 [利用python进行数据分析 书笔记]第9章 数据聚合和分组运算](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpJNU1TOHdPV1ZrWVdSak9XUmlaR1V5TmpNd016a3hPVGMyTURFNVlXVTBZMlE0TXk1S1VFVkg=)
GroupBy技术
| 对分组进行迭代 | groupby对象支持迭代,可以产生一组二元元组(有分组名和数据块组成) |
| for name,group in df.groupby('key') |
| 选取一个或一组列 | df.groupby('key1')['data1'] 等于 df['data1'].groupby(df['key1']) |
| 以key1为目标分组出data1对应数据 |
| 通过字典或Series进行分组 | mapping = {‘a':'red' , 'b' = 'red' , 'c':'blue'} ----->df.groupby(mapping,axis = 1) |
| 将原来数据中的a和b分为一组称red,c为一组称blue |
| 通过函数进行分组 | people.groupby(len) 求取索引中字符串长度的数组 |
| 根据索引级别分组 | df.groupby(level = ) |
数据聚合
![[利用python进行数据分析 书笔记]第9章 数据聚合和分组运算 [利用python进行数据分析 书笔记]第9章 数据聚合和分组运算](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpneEwyWTROelF3TXpSbFlXWTJaREl6TXpKak4yRm1ZelZpWldJeFpXRXlaVFU1TGtwUVJVYz0=)
面向列的多函数应用
| grouped = tips.groupby(['sex']) | 根据sex对tips进行分组 |
| grouped_pct = grouped['tip_pct'] |
| grouped_pct.agg('mean') | 将函数名以字符串形式传入 |
以“无索引”的形式返回聚合数据
向groupby传入as_index = False禁用分组建组成的索引
分组级运算和转换
| transform方法 | 将一个函数应用到各个分组,然后将结果放置到适当的位置上。 |
| 如果各分组产生的是一个标量值,则该值就会被广播出去 |
| def demean(arr) : return arr - arr.mean() |
| demeaned = people .groupby(key).transform(demean) |
| apply方法(拆分——应用——合并) | 传入apply的函数在DataFrame的各个片段上调用,然后结果由pandas.concat组装到一起,并以分组名称进行标记 |
| def top (df,n=5,column = 'tip_pct'): return df.sort_index(by = column)[-n:] |
| tips.groupby('smoker').apply(top,n=1) |
| 传给apply的函数能够接受其他参数或关键字,可以将这些内容放在函数名后面一并传入 |
| group_key = false 传入groupby可禁止分组键 |
分位数和桶分析
| 1. cut和qcut方法 | 根据指定面元或样本分位数将数据拆分成多块 |
| 2. groupby | 将cut与groupby结合起来就能实现对数据集的桶或分位数分析 |
透视表和交叉表
透视表pivot_table
![[利用python进行数据分析 书笔记]第9章 数据聚合和分组运算 [利用python进行数据分析 书笔记]第9章 数据聚合和分组运算](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpRM0x6RmhNak5oTW1JMFl6TXhNV0U1WkRoak5tTmxZakppTlRVd05UUmlOV1ZtTGtwUVJVYz0=)
交叉表:crosstab
相关文章: