[英]How to use pivot table to show percent of common values between multiple columns?
我有 6 列 - 每列代表不同的公司。 然后,我在 6 列中有 600 多行 1 或 0,表示零件是否與每家公司簽訂合同(即列)。 這些部分可以在所有公司之間共享(即,每列的值可以為 1,這意味着該部分在所有公司中具有 100% 的通用性)。
我如何在 excel 中直觀地表示這一點? 我是 pivot 表的新手,基本上想分解每一行,看看每家公司之間公共部分的分布情況。
我已經總結了每一行(“總”列)以及每家公司旁邊的命中百分比(“1”)。 我希望按公司划分哪些共同部分相對於其他公司。
import pandas as pd
df=pd.DataFrame({'Comp_A':[1,1,1,1,0,1],
'Comp_B':[1,1,1,1,1,1],
'Comp_C':[1,1,1,1,1,1],
'Comp_D':[0,1,1,1,0,1],
'Comp_E':[1,0,1,1,0,1],
'Comp_F':[1,1,0,1,1,0],
'Sum': [df.sum()]})
對於 6 家公司的每一行 - 我想直觀地表示找到的 1 和 0 的數量。 這將告訴我有 x 數量的零件在所有公司中 100% 通用,僅在 Comp_B、C 和 D 等。
我對 Excel 或 Python 都開放。
樣品 DataFrame
import pandas as pd
df=pd.DataFrame({'Comp_A':[1,1,1,1,0,1],
'Comp_B':[1,1,1,1,1,1],
'Comp_C':[1,1,1,1,1,1],
'Comp_D':[0,1,1,1,0,1],
'Comp_E':[1,0,1,1,0,1],
'Comp_F':[1,1,0,1,1,0],
})
print(df)
Comp_A Comp_B Comp_C Comp_D Comp_E Comp_F
0 1 1 1 0 1 1
1 1 1 1 1 0 1
2 1 1 1 1 1 0
3 1 1 1 1 1 1
4 0 1 1 0 0 1
5 1 1 1 1 1 0
使用DataFrame.apply
+ Series.value_counts
:
count_df=df.apply(lambda x: x.value_counts(),axis=1).fillna(0)
print(count_df)
0 1
0 1.0 5.0
1 1.0 5.0
2 1.0 5.0
3 0.0 6.0
4 3.0 3.0
5 1.0 5.0
import matplotlib.pyplot as plt
%matplotlib inline
count_df.plot(kind='bar')
Output 圖像:
如您所見,第 3 行對所有公司都是通用的
百分比:
percentages_comun=(df.sum(axis=1)/len(df.columns))*100
print(percentages_comun)
0 83.333333
1 83.333333
2 83.333333
3 100.000000
4 50.000000
5 83.333333
dtype: float64
percentages_comun.plot(kind='bar')
Output 圖像:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.