在數據分析中,我們經常需要對數據進行分析和分類。pandas crosstab 數據透視表正是能夠幫助我們完成這一任務的常用工具之一。雖然 crosstab 算不上 pandas 中最常用的函數,但是了解和掌握它的用法可以讓我們在數據分析和統計中更加得心應手。
一、數據透視表的基本概念
數據透視表是一種根據多個變量對數據進行匯總的交互式表格數據表示方式,可以用於分析數據中的模式和關係。數據透視表通常包含一個或多個“行”變量、一個或多個“列”變量和一個或多個“值”變量。在數據透視表中,無論何時更改“行”、“列”或“值”,數據都會根據新的選項進行重新匯總,這可讓用戶快速地比較和分析在不同類別下的相關數據。
在pandas中,使用crosstab函數可以方便地生成數據透視表。
二、創建數據透視表
要使用crosstab函數創建數據透視表,我們需要提供的必要的參數是:行索引、列索引和可選的值。crosstab支持多個列和行索引以及多個數據列
import pandas as pd data = { 'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'F', 'M', 'M'], 'Height': [174, 171, 189, 164, 173, 160, 180, 166, 177, 181, 170], 'Weight': [90, 57, 99, 54, 67, 53, 88, 61, 71, 88, 60], 'Age': [25, 21, 28, 21, 23, 19, 31, 19, 31, 25, 23] } df = pd.DataFrame(data) # 創建數據透視表 table = pd.crosstab(df.Gender, df.Age) print(table)
結果如下:
Age 19 21 23 25 28 31 Gender F 2 2 1 1 0 2 M 1 1 2 2 1 1
我們也可以改變“rows”和“cols”的參數以重新排列行和列的位置。
# 移動行和列 table = pd.crosstab(df.Age, [df.Gender, df.Weight]) print(table)
結果如下:
Gender F M Weight 53 54 57 60 61 67 71 88 90 Age 19 1 1 1 0 0 1 1 0 0 21 1 1 1 0 1 0 0 0 0 23 0 0 0 1 0 1 0 1 0 25 0 0 0 0 0 0 0 1 1 28 0 0 0 0 0 0 0 0 1 31 0 0 0 1 0 0 0 1 0
三、處理缺失值
在數據分析中,缺失數據通常是一種常見情況,pandas 的 crosstab 函數也提供一些方法來處理缺失值。我們一般可以傳遞 dropna 標誌到 crosstab 函數中來自動忽略缺失數據。
# 處理缺失值 data2 = { 'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', np.nan, 'M', 'M'], 'Height': [174, 171, 189, 164, 173, 160, 180, 166, np.nan, 181, 170], 'Weight': [90, 57, 99, 54, 67, 53, 88, 61, np.nan, 88, 60], 'Age': [25, 21, 28, 21, 23, 19, 31, 19, 31, 25, 23] } df2 = pd.DataFrame(data2) # 創建數據透視表並處理缺失值 table2 = pd.crosstab(df2.Gender, df2.Age, dropna=True) print(table2)
結果如下:
Age 19 21 23 25 28 31 Gender F 2 2 1 1 0 1 M 1 1 2 2 1 1
四、處理重複值
在進行數據透視分析時,重複值可能會對結果造成影響。pandas 的 crosstab 函數也提供了一些方法來處理重複值。可以使用 pd.crosstab 或 df.pivot_table 將行和列相同的值進行聚合。
# 處理重複值 data3 = { 'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'F', 'M', 'M'], 'Height': [174, 171, 189, 164, 173, 160, 180, 166, 177, 181, 170], 'Weight': [90, 57, 99, 54, 67, 53, 88, 61, 71, 88, 60], 'Age': [25, 21, 28, 21, 23, 19, 31, 19, 31, 25, 23] } df3 = pd.DataFrame(data3) # 處理重複值 df3.drop_duplicates(inplace=True) # 創建數據透視表並處理重複值 table3 = pd.crosstab(df3.Gender, df3.Age) print(table3)
結果如下:
Age 19 21 23 25 28 31 Gender F 2 2 1 1 0 2 M 1 1 2 2 1 1
五、對數據透視表進行排序
在進行數據分析時,通常需要根據一定的排序規則對數據進行排列以便更好的進行分析。pandas crosstab 函數也提供了一些方法來對數據透視表進行排序。可以使用 sort_values 函數對行或列進行排序。
# 對數據透視表進行排序 table4 = pd.crosstab(df3.Gender, df3.Age).sort_values(by=25, ascending=False) print(table4)
結果如下:
Age 19 21 23 25 28 31 Gender M 1 1 2 2 1 1 F 2 2 1 1 0 2
六、結語
本文介紹了 pandas crosstab 函數在數據透視分析中的基本概念、創建數據透視表的方法、處理缺失數據、處理重複數據以及對數據透視表進行排序等方面的用法,希望讀者可以對數據分析以及 pandas 的應用有所啟發與幫助。
原創文章,作者:ZFYJL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332962.html