网站首页 > 技术文章 正文
1.数据分组
源数据表如下所示:
1.1 分组键是列名
分组键是列名时直接将某一列或多列的列名传给groupby()方法,groupby()方法就会按照这一列或多列进行分组。
- 按照一列进行分组
import pandas as pd
df = pd.DataFrame(pd.read_excel("Client_Data.xlsx"))
print(df)
#按照客户分类对数据进行分组
print (df.groupby("客户分类").count())
根据客户分类对所有数据进行分组,然后对分组以后的数据分别进行计数运算,最后进行合并,如下:
- 按照多列进行分组
import pandas as pd
df = pd.DataFrame(pd.read_excel("Client_Data.xlsx"))
print(df)
#按照多列对数据进行分组
print (df.groupby(["客户分类","区域"]).count())
执行结果如图:
1.2 分组键是Series
把DataFrame的其中一列取出来就是一个Series,比如df["客户分类"]就是一个Series。
分组键是列名与分组键是Series的唯一区别就是,给groupby()方法传入了什么,其他都一样。可以按照一个或多个Series进行分组,分组以后的汇总计算也是完全一样的,也支持对分组以后的某些列进行汇总计算。
#按单个Series进行分组
print (df.groupby(df["客户分类"]).count())
#按单个Series进行分组
print (df.groupby(df["客户分类"],df["区域"]).count())
1.3 神奇的aggregate方法
aggregate的第一个神奇之处在于,一次可以使用多种汇总方式,比如下面的例子先对分组后的所有列做计数汇总运算,然后对所有列做求和汇总运算。
import pandas as pd
df = pd.DataFrame(pd.read_excel("Client_Data.xlsx"))
#对数据进行计数汇总与求和汇总运算
print(df.groupby("客户分类").aggregate(["count","sum"]))
aggregate的第二个神奇之处在于,可以针对不同的列做不同的汇总运算,比如,想看不同类别的用户有多少,那么对用户ID进行计数;想看不同类别的用户在7/8/9的销量,则需要对销量进行求和。
import pandas as pd
df = pd.DataFrame(pd.read_excel("Client_Data.xlsx"))
print(df.groupby("客户分类").aggregate({"用户ID":"count","7月销量":"sum","8月销量":"sum","9月销量":"sum"}))
1.4 对分组后的结果重置索引
为了便于对分组结果进行进一步处理和分析,需要把非标准形式转化为标准的DataFrame形式,利用的方法就是重置索引reset_index()方法。
import pandas as pd
df = pd.DataFrame(pd.read_excel("Client_Data.xlsx"))
print(df.groupby("客户分类").count())
#利用reset_index()重置索引
print(df.groupby("客户分类").count().reset_index())
2.数据透视表
Python中的数据透视表用到的是pivot_table()方法,其全部参数如下:
pd.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna==True,margins_name='All')
#data:表示要做数据透视表的整个表
#values:对应excel中值那个框
#index:对应excel中行那个框
#columns:对应excel中列那个框
#aggfunc:表示对values的计算类型
#fill_value:表示对空值的填充值
#margins:表示是否显示合计列
#dropna:表示是否删除缺失,如果为真时,则把一整行全作为缺失值删除
#margins_name:表示合计列的列名
实例,客户分类作为index,区域作为columns,用户ID作为values,对values执行count运算:
import pandas as pd
df = pd.DataFrame(pd.read_excel("Client_Data.xlsx"))
#客户分类作为index,区域作为columns,用户ID作为values,对values执行count运算
print(pd.pivot_table(df,values="用户ID",index="客户分类",columns="区域",aggfunc='count',margins=True))
执行结果如下:
可用margins_name对合计列名称"All"进行修改。
可用fill_value对缺失值进行填充。
可用reset_index()对透视表结果进行重置索引。
猜你喜欢
- 2025-06-28 Python数据分析实战-dataframe分组提取每一组的首条记录
- 2025-06-28 如何使用Python将多个excel文件数据快速汇总?
- 2025-06-28 「Python数据分析」Pandas进阶,使用groupby分组聚合数据(二)
- 2025-06-28 还在熬夜合并30个Excel 3个案例,带你用Python玩转Excel高阶操作
- 2025-06-28 python数据分析实战:pandas分组聚合-自定义聚合函数
- 2025-06-28 Python 知识点 #31 - 分组和聚(python分层聚类)
- 2025-06-28 人生苦短,自学 python——pandas 的分组操作
- 2025-06-28 超实用!用Python快速实现数据分组统计与透视表
- 2025-06-28 Python 之 Pandas:数据分组聚合统计的魔法秘籍
- 2025-06-28 Python 数据分析——利用Pandas进行分组统计
- 272℃Python短文,Python中的嵌套条件语句(六)
- 271℃python笔记:for循环嵌套。end=""的作用,图形打印
- 269℃PythonNet:实现Python与.Net代码相互调用!
- 264℃Python实现字符串小写转大写并写入文件
- 263℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 122℃原来2025是完美的平方年,一起探索六种平方的算吧
- 104℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 99℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python数据分析实战-dataframe分组提取每一组的首条记录
- 如何使用Python将多个excel文件数据快速汇总?
- 「Python数据分析」Pandas进阶,使用groupby分组聚合数据(二)
- 还在熬夜合并30个Excel 3个案例,带你用Python玩转Excel高阶操作
- python数据分析实战:pandas分组聚合-自定义聚合函数
- Python 知识点 #31 - 分组和聚(python分层聚类)
- 人生苦短,自学 python——pandas 的分组操作
- 利用Python进行数据分组/数据透视表
- 超实用!用Python快速实现数据分组统计与透视表
- Python 之 Pandas:数据分组聚合统计的魔法秘籍
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)