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

 更新时间:2023年09月13日 09:31:05   作者:一只上班爱摸鱼的小菜鸡  
这篇文章主要介绍了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_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的官方文档。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Pycharm激活方法及详细教程(详细且实用)

    Pycharm激活方法及详细教程(详细且实用)

    这篇文章主要介绍了Pycharm激活方法及详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-05-05
  • python列表的常用操作方法小结

    python列表的常用操作方法小结

    这篇文章主要为大家详细介绍了python字典的常用操作方法,主要内容包含Python中列表(List)的详解操作方法,包含创建、访问、更新、删除、其它操作等,需要的朋友可以参考下
    2016-05-05
  • 使用Python3+PyQT5+Pyserial 实现简单的串口工具方法

    使用Python3+PyQT5+Pyserial 实现简单的串口工具方法

    今天小编就为大家分享一篇使用Python3+PyQT5+Pyserial 实现简单的串口工具方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python多线程实现模拟火车站售票

    Python多线程实现模拟火车站售票

    这篇文章主要为大家详细介绍了Python多线程实现模拟火车站售票,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 如何在Flask中实现数据分组流程详解

    如何在Flask中实现数据分组流程详解

    在Flask中,数据分组是指将一组数据按照某种方式进行分类,以便更好地对数据进行处理和展示,可以使用Python内置的itertools模块中的groupby方法,或者使用SQL语句中的GROUP BY子句来实现数据分组,这篇文章介绍了在Flask中实现数据分组,感兴趣的同学可以参考下文
    2023-05-05
  • python 实现图片特效处理

    python 实现图片特效处理

    这篇文章主要介绍了python 实现图片特效处理,对于 ​图片处理​,在日常生活中我们常常能够看到的,下面我们就来利用Python来对图片进行特效操作,需要的朋友可以参考一下
    2022-04-04
  • Python如何基于selenium实现自动登录博客园

    Python如何基于selenium实现自动登录博客园

    这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • django中操作mysql数据库的方法

    django中操作mysql数据库的方法

    对象关系映射模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,这篇文章主要介绍了django中操作mysql数据库的方法,需要的朋友可以参考下
    2022-09-09
  • Python使用pydub库对mp3与wav格式进行互转的方法

    Python使用pydub库对mp3与wav格式进行互转的方法

    今天小编就为大家分享一篇Python使用pydub库对mp3与wav格式进行互转的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • pycharm中jupyter的使用图文教程

    pycharm中jupyter的使用图文教程

    这篇文章主要介绍了pycharm中jupyter的使用图文教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论