pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問(wèn)題
pandas分組的統(tǒng)計(jì)方式
index | 減肥方式 | 血壓含量 |
0 | 藥物 | 高 |
1 | 飲食 | 低 |
2 | 鍛煉 | 正常 |
3 | 抽脂 | 高 |
4 | 藥物 | 高 |
5 | 抽脂 | 正 |
... | ||
498 | 藥物 | 低 |
499 | 飲食 | 高 |
我們需要統(tǒng)計(jì)多個(gè)字段的次數(shù)
如下表數(shù)據(jù):
減肥方式 \血壓含量 | 藥物 | 飲食 | 鍛煉 | 抽脂 | 總和 |
高 | 50 | 38 | 38 | 30 | 156 |
正常 | 46 | 40 | 40 | 45 | 171 |
低 | 37 | 44 | 37 | 55 | 173 |
總和 | 133 | 122 | 115 | 130 | 500 |
通常多個(gè)組的統(tǒng)計(jì)可以采用
DataFrame.groupby(by=['減肥方式','血壓含量'])['減肥方式'].count().reset_index(name='次數(shù)')
這里我們能看到我們采用分組統(tǒng)計(jì)之后,能詳細(xì)看到表格的統(tǒng)計(jì),但是卻不利于開(kāi)發(fā)的統(tǒng)計(jì)
附下,采用分組統(tǒng)計(jì)的方式
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='次數(shù)') 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,'減肥方式','血壓含量'))
結(jié)果如下:
在查閱pandas的官方文檔之后,我們了解到了這種叫做列聯(lián)表,pandas.crosstab()的函數(shù)
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())
后續(xù)還有透視表pandas.pivot_table(),就自行查看pandas的官方文檔。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python?Pandas:DataFrame一列切分成多列、分隔符切分選字段方式
- Python pandas入門(mén)系列之眾數(shù)和分位數(shù)
- pandas 實(shí)現(xiàn)某一列分組,其他列合并成list
- pandas將list數(shù)據(jù)拆分成行或列的實(shí)現(xiàn)
- Pandas實(shí)現(xiàn)一列數(shù)據(jù)分隔為兩列
- pandas 使用均值填充缺失值列的小技巧分享
- Python學(xué)習(xí)筆記之pandas索引列、過(guò)濾、分組、求和功能示例
- pandas數(shù)據(jù)分列實(shí)現(xiàn)分割符號(hào)&固定寬度
相關(guān)文章
Pycharm激活方法及詳細(xì)教程(詳細(xì)且實(shí)用)
這篇文章主要介紹了Pycharm激活方法及詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-05-05使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法
今天小編就為大家分享一篇使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02Python多線(xiàn)程實(shí)現(xiàn)模擬火車(chē)站售票
這篇文章主要為大家詳細(xì)介紹了Python多線(xiàn)程實(shí)現(xiàn)模擬火車(chē)站售票,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08如何在Flask中實(shí)現(xiàn)數(shù)據(jù)分組流程詳解
在Flask中,數(shù)據(jù)分組是指將一組數(shù)據(jù)按照某種方式進(jìn)行分類(lèi),以便更好地對(duì)數(shù)據(jù)進(jìn)行處理和展示,可以使用Python內(nèi)置的itertools模塊中的groupby方法,或者使用SQL語(yǔ)句中的GROUP?BY子句來(lái)實(shí)現(xiàn)數(shù)據(jù)分組,這篇文章介紹了在Flask中實(shí)現(xiàn)數(shù)據(jù)分組,感興趣的同學(xué)可以參考下文2023-05-05Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園
這篇文章主要介紹了Python如何基于selenium實(shí)現(xiàn)自動(dòng)登錄博客園,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12django中操作mysql數(shù)據(jù)庫(kù)的方法
對(duì)象關(guān)系映射模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的現(xiàn)象的技術(shù),這篇文章主要介紹了django中操作mysql數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下2022-09-09Python使用pydub庫(kù)對(duì)mp3與wav格式進(jìn)行互轉(zhuǎn)的方法
今天小編就為大家分享一篇Python使用pydub庫(kù)對(duì)mp3與wav格式進(jìn)行互轉(zhuǎn)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01