pandas之分组统计列联表pd.crosstab()问题
pandas分组的统计方式
| index | 减肥方式 | 血压含量 |
| 0 | 药物 | 高 |
| 1 | 饮食 | 低 |
| 2 | 锻炼 | 正常 |
| 3 | 抽脂 | 高 |
| 4 | 药物 | 高 |
| 5 | 抽脂 | 正 |
| ... | ||
| 498 | 药物 | 低 |
| 499 | 饮食 | 高 |
我们需要统计多个字段的次数
如下表数据:
减肥方式 \血压含量 | 药物 | 饮食 | 锻炼 | 抽脂 | 总和 |
| 高 | 50 | 38 | 38 | 30 | 156 |
| 正常 | 46 | 40 | 40 | 45 | 171 |
| 低 | 37 | 44 | 37 | 55 | 173 |
| 总和 | 133 | 122 | 115 | 130 | 500 |
通常多个组的统计可以采用
DataFrame.groupby(by=['减肥方式','血压含量'])['减肥方式'].count().reset_index(name='次数')

这里我们能看到我们采用分组统计之后,能详细看到表格的统计,但是却不利于开发的统计
附下,采用分组统计的方式
def list_set(list_1):
list_2 = list(set(list_1))
list_2.sort(key=list_1.index)
return list_2
def func(df,df_title_X,df_title_Y):
df_data = df.groupby(by=[df_title_X,df_title_Y])[df_title_X].count().reset_index(name='次数')
data_dict = {}
for i in df_data[df_data.columns[0]]:
data_dict[i] = {}
for a in df_data[df_data.columns[1]]:
data_dict[i][a] = {}
for i in range(df_data.shape[0]):
data_dict[df_data[df_data.columns[0]].loc[i]][df_data[df_data.columns[1]].loc[i]] = df_data[df_data.columns[2]].loc[i]
l = [list(i.values()) for i in data_dict.values()]
return pd.DataFrame(np.array(l).T,columns=list_set(df_data[df_title_X].to_list()),
index=list_set(df_data[df_title_X].to_list()))
print(func(df,'减肥方式','血压含量'))结果如下:

在查阅pandas的官方文档之后,我们了解到了这种叫做列联表,pandas.crosstab()的函数
import pandas as pd pd.crosstab()
print(pd.crosstab(df['血压含量'],df['减肥方式'],margins=True,margins_name='总和')) print(pd.crosstab(df['血压含量'],df['减肥方式'],margins=True,margins_name='总和').to_dict())



后续还有透视表pandas.pivot_table(),就自行查看pandas的官方文档。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
python3使用libpcap库进行抓包及数据处理的操作方法
这篇文章主要介绍了python3使用libpcap库进行抓包及数据处理,需要的朋友可以参考下2022-10-10
python基于paramiko库远程执行 SSH 命令,实现 sftp 下载文件
这篇文章主要介绍了python基于paramiko库远程执行 SSH 命令,实现 sftp 下载文件的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下2021-03-03
Python爬虫图片懒加载技术 selenium和PhantomJS解析
这篇文章主要介绍了Python爬虫图片懒加载技术 selenium和PhantomJS解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-09-09
python导出chrome书签到markdown文件的实例代码
python导出chrome书签到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后输出到文件即可。下面给大家分享实例代码,需要的朋友参考下2017-12-12
Python正则表达式函数match()和search()使用全面指南
在Python中,正则表达式是强大的工具,能够用于文本匹配、搜索和替换,re模块提供了许多函数来处理正则表达式,其中match()和search()是两个常用的函数,本文将深入探讨这两个函数的用法、区别和示例,帮助你更好地理解它们的功能2024-01-01


最新评论