pandas 分组统计 列联表pd.crosstab()

2023-10-25 14:20

本文主要是介绍pandas 分组统计 列联表pd.crosstab(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pandas分组的统计方式

 

index减肥方式血压含量
0药物
1饮食
2锻炼正常
3抽脂
4药物
5抽脂
...  
498药物
499饮食

我们需要统计多个字段的次数:

如下表数据:

减肥方式

\血压含量

药物饮食锻炼抽脂总和
50383830156
正常46404045171
37443755173
总和133122115130500

通常多个组的统计可以采用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_2def 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的官方文档。

这篇关于pandas 分组统计 列联表pd.crosstab()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/283155

相关文章

Python的pandas库基础知识超详细教程

《Python的pandas库基础知识超详细教程》Pandas是Python数据处理核心库,提供Series和DataFrame结构,支持CSV/Excel/SQL等数据源导入及清洗、合并、统计等功能... 目录一、配置环境二、序列和数据表2.1 初始化2.2  获取数值2.3 获取索引2.4 索引取内容2

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的stream流分组示例详解

《Java中的stream流分组示例详解》Java8StreamAPI以函数式风格处理集合数据,支持分组、统计等操作,可按单/多字段分组,使用String、Map.Entry或Java16record... 目录什么是stream流1、根据某个字段分组2、按多个字段分组(组合分组)1、方法一:使用 Stri

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后