pandas之分組統(tǒng)計(jì)列聯(lián)表pd.crosstab()問題
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ì),但是卻不利于開發(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入門系列之眾數(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索引列、過濾、分組、求和功能示例
- pandas數(shù)據(jù)分列實(shí)現(xiàn)分割符號(hào)&固定寬度
相關(guān)文章
python3使用libpcap庫(kù)進(jìn)行抓包及數(shù)據(jù)處理的操作方法
這篇文章主要介紹了python3使用libpcap庫(kù)進(jìn)行抓包及數(shù)據(jù)處理,需要的朋友可以參考下2022-10-10
python基于paramiko庫(kù)遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件
這篇文章主要介紹了python基于paramiko庫(kù)遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件的方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析
這篇文章主要介紹了Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python導(dǎo)出chrome書簽到markdown文件的實(shí)例代碼
python導(dǎo)出chrome書簽到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后輸出到文件即可。下面給大家分享實(shí)例代碼,需要的朋友參考下2017-12-12
python2.7實(shí)現(xiàn)復(fù)制大量文件及文件夾資料
這篇文章主要為大家詳細(xì)介紹了python2.7實(shí)現(xiàn)復(fù)制大量文件及文件夾資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Python正則表達(dá)式函數(shù)match()和search()使用全面指南
在Python中,正則表達(dá)式是強(qiáng)大的工具,能夠用于文本匹配、搜索和替換,re模塊提供了許多函數(shù)來處理正則表達(dá)式,其中match()和search()是兩個(gè)常用的函數(shù),本文將深入探討這兩個(gè)函數(shù)的用法、區(qū)別和示例,幫助你更好地理解它們的功能2024-01-01

