大数据,机器学习,人工智能人工智能/模式识别/机器学习精华专题玩转大数据

利用Python进行数据分析(4)- 数据聚合和分组操作

2020-04-09  本文已影响0人  皮皮大

第十章主要讲解的数据聚合与分组操作。对数据集进行分类,并在每一个组上应用一个聚合函数或者转换函数,是常见的数据分析的工作。

本文结合pandas官方文档整理而来。

**

groupby机制

组操作的术语:拆分-应用-联合split-apply-combine分离是在特定的轴上进行的axis=0表示axis=1表示

分组聚合示意图

image

groupby参数

Parameters参数

Returns返回值

分组键

分组键可以是多种形式,并且键不一定是完全相同的类型:

  1. 与需要分组的轴向长度一致的值列表或者值数组
  2. DataFrame列名的值
  3. 可以在轴索引或索引中的单个标签上调用的函数
  4. 可以将分组轴向上的值和分组名称相匹配的字典或者Series

特点

语法糖现象:

df.groupby('key1')['data1']

df['data1'].groupby(df['key1'])
df.groupby(['key1','key2'])[['data2']].mean()  # 传递列表形式

df.groupby(['key1','ley2'])['data2'].mean()   # 传递的是单个列名

数据聚合

聚合指的是所有根据数组产生标量值的数据转换过程。常见的聚合函数:

  1. count

  2. sum

  3. mean

  4. median

  5. std、var

  6. min、max

  7. prod

  8. fisrt、last

  9. 如果想使用自己的聚合函数,可以将函数传递给aggregate或者agg方法

image

笔记1:自定义的聚合函数通常比较慢,需要额外的开销:函数调用、数据重新排列等

import numpy as np
import pandas as pd
tips = pd.read_csv(path)
tips['tip_pct'] = tips['tip'] / tips['total_bill']

grouped = tips.groupby(['day','smoker'])  # 根据两个属性先分组
grouped_pct = grouped['tip_pct']
grouped_pct.agg('mean')   # 函数名通过字符串的形式传递
  1. 如果传递的是函数或者函数名的列表,则生成的DF数据的列名将会是这些函数名:
image image
  1. 如果传递的是(name,function)形式,则每个元组的name将会被作为DF数据的列名:
image
  1. 不同的函数应用到一个或者多个列上
image

笔记2:只有当多个函数应用到至少一个列时,DF才具有分层列

  1. 返回不含行索引的聚合数据:通过向groupby传递as_index=False来实现

数据透视表和交叉表

DF中的pivot-table方法能够实现透视表,默认求的是平均值mean交叉表是透视表的特殊情况

image

另一种方法:groupby+mean

image

透视表中常用的几个参数:

image

Groupby Dataframe with Index levels and columns

image

三种不同的方式来实现

df.groupby([pd.Grouper(level=1), 'A']).sum()
# df.groupby([pd.Grouper(level='second'), 'A']).sum()
# df.groupby(['second', 'A']).sum()
image

一图看懂透视表

image
上一篇 下一篇

猜你喜欢

热点阅读