10.1 数据分组
10.1 分组键是列名
import pandas as pd
import numpy as np
df = pd.read_csv(r"C:\Users\leadi\Python\01.python\input\train-pivot.csv",encoding="gbk")
df
单列
df.groupby("客户分类")
输出
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000013245A27588>
df.groupby("客户分类").count()
df.groupby("客户分类").sum()
多列
df.groupby(["客户分类","区域"]).sum()
10.1.2 分组键是Series
df.groupby(df["客户分类"]).sum()
与单列一致
df.groupby([df["客户分类"],df["区域"]]).sum()
10.1.3 神奇的aggregate方法
可以同时,做多个汇总
df.groupby("客户分类").aggregate(["count","sum"])
针对不同的列进行汇总
df.groupby("客户分类").aggregate({"用户ID":"count","7月销量":"sum"})
10.1.4 对分组后的结果重置索引
df.groupby("客户分类").aggregate({"用户ID":"count","7月销量":"sum"}).reset_index()
10.2 数据透视表
pd.pivot_table(df,values = "用户ID",columns = "区域",index = "客户分类",aggfunc = "count",margins = True)
-
df 数据框
-
value 对象为值
-
columns 列名分类
-
index 行分类
-
aggfunc 计算方式
-
margins 两边的all统计
-
margins _name 替换名
-
fill_value ,缺失填充值
替换名
pd.pivot_table(df,values = "用户ID",columns = "区域",index = "客户分类",aggfunc = "count",margins = True,margins_name = "总计")
填充
pd.pivot_table(df,values = "用户ID",columns = "区域",index = "客户分类",aggfunc = "count",margins = True,margins_name = "总计",fill_value = 0)
多列分别统计
pd.pivot_table(df,values = ["用户ID","7月销量"],columns = "区域",index = "客户分类",aggfunc = {"用户ID":"count","7月销量":"sum"},margins = True,margins_name = "总计",fill_value = 0)