透視表pivot_table和交叉表crosstab
本文介紹透視表pivot_table和交叉表crosstab。
import pandas as pd
import numpy as np
%matplotlib inline
%matplotlib notebook
import matplotlib.pyplot as plt
1.透視表pivot table
# 匯入資料
tips = pd.read_csv('data/tips/tips2.csv')
tips['tip_pct'] = tips['tip']/tips['total_bill']
print(tips.head())
# total_bill tip sex smoker day time size tip_pct
#0 16.99 1.01 Female No Sun Dinner 2 0.059447
#1 10.34 1.66 Male No Sun Dinner 3 0.160542
#2 21.01 3.50 Female No Sun Dinner 3 0.166587
#3 23.68 3.31 Male No Sun Dinner 2 0.139780
#4 24.59 3.61 Female No Sun Dinner 4 0.146808
1.1 製作資料透視表方法1 : groupby + 聚合函式
tips.groupby(['sex','smoker']).mean()
.
1.2 製作資料透視表方法2 :pivot_table
# pivot_table1:整個dataframe
tips.pivot_table(index=['sex','smoker'])
.
ivot_table2:dataframe中一部分資料
tips.pivot_table(['tip_pct','size'],index=['sex','day'],columns='smoker')
.
# pivot_table3:傳入小計margins=True
tips.pivot_table(['tip_pct','size'],index=['sex','day'],columns='smoker',margins=True)
.
# pivot_table4:傳入其他聚合函式aggfunc
tips.pivot_table('tip_pct',index=['sex','smoker'],columns='day',aggfunc=len,margins=True)
.
# pivot_table5:fill_value
tips.pivot_table('size',index=['time','sex','smoker'],columns='day',aggfunc=np.sum,fill_value=0)
.
2.交叉表crosstab
# 交叉表1
data=pd.DataFrame({'sample':[1,2,3,4,5,6,7,8,9,10],
'Gender': ['Female','Male','Female','Male','Male','Male','Female','Female','Male','Female'],
'Handedness':['Right-handed','Left-handed','Right-handed','Right-handed','Left-handed','Right-handed','Right-handed','Left-handed','Right-handed','Right-handed']})
data
# sample Gender Handedness
#0 1 Female Right-handed
#1 2 Male Left-handed
#2 3 Female Right-handed
#3 4 Male Right-handed
#4 5 Male Left-handed
#5 6 Male Right-handed
#6 7 Female Right-handed
#7 8 Female Left-handed
#8 9 Male Right-handed
#9 10 Female Right-handed
2.1 用groupby製作出crosstab
# 用groupby製作出crosstab
data.groupby(['Gender','Handedness']).count().unstack()
.
2.2 用pivot_table製作出crosstab
# 用pivot_table製作出crosstab
data.pivot_table('sample',index=['Gender'],columns='Handedness',aggfunc='count',margins=True)
.
2.3 crosstab函式
# crosstab1
pd.crosstab(data.Gender,data.Handedness,margins=True)
.
# crosstab2
pd.crosstab([tips.time,tips.day],tips.smoker,margins=True)
相關文章
- 透視表excel透視表怎麼做 excel的資料透視表怎麼弄Excel
- ActiveReports 報表應用教程 (7)---交叉報表及資料透檢視實現方案
- Pandas 基礎 (13) - Crosstab 交叉列表取值ROS
- Excel資料透視表怎麼做 Excel資料透視表技巧Excel
- 初學SQL-交叉表SQL
- 行列轉換 交叉表 (轉)
- Excel 透視表如何不重複計數Excel
- 怎麼製作動態列報表(非常規交叉表)
- Excel資料分析入門-資料透視表Excel
- EXCEL破冰 - 如何為透視表組織資料Excel
- powerbuilder crosstab資料視窗問題UIROS
- Java 建立、重新整理Excel透視表/設定透視錶行摺疊、展開JavaExcel
- Stimulsoft Reports報表使用者手冊:資料帶中的交叉表報表
- 四十三章 PHP 製作資料透視表PHP
- 檢視和表的區別
- 升值加薪Excel神助攻,資料透視表堪稱神器!Excel
- Excel實現動態行轉列(資料透視表)Excel
- BI 資料視覺化平臺建設(1)—交叉表元件演變實戰視覺化元件
- ORACLE常見檢視和表整理Oracle
- 如何使用Java建立資料透視表並匯出為PDFJava
- 【GP】透過資料字典檢視某個表的欄位
- 系統表和資料字典檢視
- trigger和物化檢視同步表
- 檢視mysql表大小和記錄數MySql
- 大資料交叉報表效能最佳化案例(方案)大資料
- Oracle中檢視所有表和欄位以及表註釋.欄位註釋Oracle
- sqlserver鎖表、解鎖、檢視銷表SQLServer
- oracle檢視和更新統計表的資訊Oracle
- Oracle Database中DBA常用的表和檢視OracleDatabase
- Oracle透過job定時建立表Oracle
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- MySQL優化表和分析表MySql優化
- 透過sql語句建立表時指定表空間的語法SQL
- ORACLE主要的系統表和系統檢視Oracle
- 透過圖表分析oracle的parallel效能OracleParallel
- 事實表和維表關係
- postgresql如何檢視所有表SQL
- oracle檢視鎖表程式Oracle