簡體   English   中英

如何使用Pandas Python中的分組列計算百分比?

[英]How to calculate a percentage using grouped columns in Pandas python?

熊貓新手,遇到一個我不知道的簡單問題。

我在美國有一個嬰兒名字的數據集,看起來像這樣:

原始數據

我正在嘗試編寫一個程序,可以在其中輸入名稱列表,並獲取該名稱是男性還是女性的百分比可能性(當前年份與我的目的無關)

我寫了groupby,然后將男性和女性的名字計數加在一起。

分組數據

現在,我所需要做的就是根據此數據計算百分比。 我認為這是某種transform (對嗎?),但是我似乎無法編寫任何有效的方法。 我知道我將如何在SQL中執行此操作,但我確實在嘗試弄清楚Pandas。 一些指針將不勝感激!

謝謝!

如果我正確理解了您要查找的內容,那么我會先用零填充缺失的值,即n.fillna(0) 然后計算百分比,並將結果分配到新列。 女性比例:

n['%F'] = n[('Count', 'F')] / n['sum'] * 100

甚至在執行總和之前,您都需要這樣做:

n.apply(lambda x: x / x.sum(), axis=1)

在各列中看起來像Multiindex

print n.columns
MultiIndex(levels=[[u'Count', u'sum'], [u'', u'F', u'M']],
           labels=[[0, 0, 1], [1, 2, 0]],
           names=[None, u'Gender'])

因此,首先通過使用切片器選擇列FM 然后將fillna除以0並除以列sum

idx = pd.IndexSlice
F = n.loc[:, idx['Count','F']] 
M = n.loc[:, idx['Count','M']] 
sum = n.loc[:, idx['sum','']]

n['%F'] = F.fillna(0)/sum * 100
n['%M'] = M.fillna(0)/sum * 100
print n

               Count                     sum          %F          %M
Gender             F           M                                    
Name                                                                
Aaban            NaN   10.285710   10.285710    0.000000  100.000000
Aabfla      7.000000         NaN    7.000000  100.000000    0.000000
Aabid            NaN    5.000000    5.000000    0.000000  100.000000
Aabrielle   5.000000         NaN    5.000000  100.000000    0.000000
Aadarn           NaN    8.521739    8.521739    0.000000  100.000000
Aadan            NaN   12.000000   12.000000    0.000000  100.000000
Aadar            NaN   11.285710   11.285710    0.000000  100.000000
Aaden       5.000000  279.002857  284.002857    1.760546   98.239454
Aade             NaN    5.000000    5.000000    0.000000  100.000000
Aadhav           NaN   12.750000   12.750000    0.000000  100.000000
Aadhavan         NaN    6.333333    6.333333    0.000000  100.000000
Aadhi            NaN    6.000000    6.000000    0.000000  100.000000
Aadhira     0.888857         NaN    9.000007    9.876181    0.000000
Aadhve     79.875000         NaN   79.875000  100.000000    0.000000
Aadhven          NaN    5.000000    5.000000    0.000000  100.000000
Aadi        5.333333   55.583333   60.910007    8.756087   91.254846
Aadian           NaN    5.000000    5.000000    0.000000  100.000000
Aadil            NaN   12.913003   12.913003    0.000000  100.000000
Aadin            NaN   12.000000   12.000000    0.000000  100.000000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM