1-groupby 分组统计
( 与统计函数连用才有意义)
# 分组
import pandas as pd
data = pd.read_excel('../data/pivot_table_demo.xlsx') # 读取数据
print(data.head())
输出结果:(展示文件中的数据)
学习中心 招生批次 院校名称 层次 ... 身份证号码 费用科目 缴费方式 已缴纳学费
0 大连学习中心 201209 东北财经大学 专升本 ... 210204190001097607 学费 POS直汇院校 3000
1 大连学习中心 201209 重庆大学 专升本 ... 210204190001092022 学费 POS直汇院校 2800
2 大连学习中心 201209 重庆大学 专升本 ... 210204190001096379 学费 POS直汇院校 2800
3 大连学习中心 201209 东北财经大学 专升本 ... 210204190001099505 学费 POS直汇院校 4500
4 天通苑学习中心 201209 北京交通大学 高起专 ... 210204190001098058 学费 POS直汇总部 3500
# 统计各个学习中心的缴费总数
r1 = data.groupby('学习中心')['已缴纳学费'].sum()
print(r1.head())
输出结果:
学习中心
上海管理中心 215430
北京学习中心 45500
北京通州服务站 22700
南京管理中心 5760
嘉兴学习中心 23020
Name: 已缴纳学费, dtype: int64
# 统计各个学习中心的报名人数
r2 = data.groupby('学习中心')['身份证号码'].count()
print(r2.head())
输出结果:
学习中心
上海管理中心 57
北京学习中心 19
北京通州服务站 5
南京管理中心 2
嘉兴学习中心 9
Name: 身份证号码, dtype: int64
2-apply 主要用于数据聚合运算,可以很方便地对数据应用系统函数或者自定义的函数
import pandas as pd
data = pd.read_csv('../data/data.csv', index_col='年份')
print(data.head())
输出结果:
年份 人均GDP(元) 啤酒产量(万千升) 居民消费价格指数(上面=100)
2000 7857.7 2231.3 100.4
2001 8621.7 2288.9 100.7
2002 9398.1 2402.7 99.2
2003 10542.0 2540.5 101.2
2004 12335.6 2948.6 103.9
# 按列应用max
r = data.apply(max, axis=0)
print(r)
输出结果:
人均GDP(元) 41907.6
啤酒产量(万千升) 5061.5
居民消费价格指数(上面=100) 105.9
dtype: float64
# 按行应用max
r = data.apply(max, axis=1)
print(r.head())
输出结果:
年份
2000 7857.7
2001 8621.7
2002 9398.1
2003 10542.0
2004 12335.6
dtype: float64
3-stack---将数据的列“旋转”为行 unstack---将数据的行“旋转”为列
import pandas as pd
data = pd.read_csv('../data/data.csv', index_col='年份')
print(data.head())
输出结果:
年份 人均GDP(元) 啤酒产量(万千升) 居民消费价格指数(上面=100)
2000 7857.7 2231.3 100.4
2001 8621.7 2288.9 100.7
2002 9398.1 2402.7 99.2
2003 10542.0 2540.5 101.2
2004 12335.6 2948.6 103.9
# stack---将数据的列“旋转”为行、
r = data.stack()
print(r.head())
输出结果:
年份
2000 人均GDP(元) 7857.7
啤酒产量(万千升) 2231.3
居民消费价格指数(上面=100) 100.4
2001 人均GDP(元) 8621.7
啤酒产量(万千升) 2288.9
dtype: float64
# unstack---将数据的行“旋转”为列
r = data.stack().unstack()
print(r.head())
输出结果 :
年份 人均GDP(元) 啤酒产量(万千升) 居民消费价格指数(上面=100)
2000 7857.7 2231.3 100.4
2001 8621.7 2288.9 100.7
2002 9398.1 2402.7 99.2
2003 10542.0 2540.5 101.2
2004 12335.6 2948.6 103.9