dg se
29 10
37 22
3 13
15 7
42 20
31 23
26 17
7 1
36 19
5 7
21 5
37 13
37 6
2 24
在上面的数据框中,我想计算0-30、30-40和> 40之间的每列值中出现的百分比;以及两个列的值都在0-30到30-40之间的出现百分比。我当时在考虑使用熊猫hist
函数,但这不能满足我的要求
答案 0 :(得分:1)
使用cut
合并两个列:
bins = [0, 30, 40, np.inf]
labels = ['0-30','30-40','40+']
dg = pd.cut(df['dg'], bins=bins, labels = labels, include_lowest=True)
se = pd.cut(df['se'], bins=bins, labels = labels, include_lowest=True)
然后是value_counts
:
dg_per = dg.value_counts(normalize=True)
print (dg_per)
0-30 0.571429
30-40 0.357143
40+ 0.071429
Name: dg, dtype: float64
se_per = se.value_counts(normalize=True)
print (se_per)
0-30 1.0
40+ 0.0
30-40 0.0
Name: se, dtype: float64
对于两列中的相同值,请先过滤:
both = (dg[dg == se])
print (both.value_counts(normalize=True))
0-30 1.0
40+ 0.0
30-40 0.0
Name: dg, dtype: float64