透視表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
- Pandas 基礎 (13) - Crosstab 交叉列表取值ROS
- Excel資料透視表怎麼做 Excel資料透視表技巧Excel
- (三、四)Superset 1.3圖表篇——透視表-Pivot Table
- Excel 透視表如何不重複計數Excel
- 怎麼製作動態列報表(非常規交叉表)
- Stimulsoft Reports報表使用者手冊:資料帶中的交叉表報表
- EXCEL破冰 - 如何為透視表組織資料Excel
- Java 建立、重新整理Excel透視表/設定透視錶行摺疊、展開JavaExcel
- 四十三章 PHP 製作資料透視表PHP
- ORACLE常見檢視和表整理Oracle
- BI 資料視覺化平臺建設(1)—交叉表元件演變實戰視覺化元件
- 升值加薪Excel神助攻,資料透視表堪稱神器!Excel
- 如何使用Java建立資料透視表並匯出為PDFJava
- 系統表和資料字典檢視
- 檢視錶名和表的行數
- 大資料交叉報表效能最佳化案例(方案)大資料
- 製作多維度分組交叉銷售統計表
- 檢視鎖表
- MySQL 全域性表和表鎖MySql
- JPA透過表反向生成相關類
- 常見光學材料透過波段表
- MySQL命令檢視資料庫和表容量大小MySql資料庫
- oracle分割槽表和分割槽表exchangeOracle
- 將檢視轉為表
- Postgresql系統表/檢視SQL
- postgresql如何檢視所有表SQL
- 2021年美國主要短視訊平臺滲透率(附原資料表)
- 輕鬆透視財務資料:免費工具助力公司打造財務報表視覺化看板視覺化
- Hive內部表和外部表的區別Hive
- oracle分割槽表和非分割槽表exchangeOracle
- hive 分割槽表和分桶表區別Hive
- mysql透過計劃任務建立月表MySql
- 複雜SQL查詢和視覺化報表構建SQL視覺化
- 交叉編譯和 RPC編譯RPC
- MySQL檢視建表語句MySql
- excel表1和表2資料匹配 vlookup跨表兩個表格匹配Excel
- 012---表單、下拉選單和表單域