を動作しない合計しますヒントデータベースを使用して、各性別/喫煙者について、女性喫煙者/女性全員と女性非喫煙者/全女性の合計請求額の割合を確認したい(男性の場合も同じ)パンダのグループ化 - グループ化の割合などの値は、私はそれぞれの値は、カテゴリ「でグループ」の総計の割合</p> <p>ようであるかを把握しようとしています、データフレームとパンダを使用して
例えば、
完全なデータセットの場合:
Sex, Smoker, Day, Time, Size, Total Bill
Female,No,Sun,Dinner,2, 20
Female,No,Mon,Dinner,2, 40
Female,No,Wed,Dinner,1, 10
Female,Yes,Wed,Dinner,1, 15
最初の行の値は、(20 + 40 + 10)/(20 + 40 + 10 + 15)になり、それらは、非喫煙女性
ための他の3つの値であるように出力がはず以下のような
Female No 0.823529412
Female Yes 0.176470588
しかし、私は私が
import pandas as pd
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata- book/master/ch08/tips.csv", sep=',')
df.groupby(['sex', 'smoker'])[['total_bill']].apply(lambda x: x/x.sum()).head()
、私はこれを行うと、いくつかのトラブル
を持っているように見えます以下を得る:
total_bill
0 0.017378
1 0.005386
2 0.010944
3 0.
4 0.025151
それは
を返します。私はもっと
df.groupby(['sex', 'smoker'])[['total_bill']].sum()
ような何かを探しています各品目
のためにそれを計算するだけでグループを無視しているように見える
total_bill
sex smoker
Female No 977.68
Yes 593.27
Male No 1919.75
Yes 1337.07
しかし、これは個人の合計に対する合計の割合として表したがります性的な/喫煙者の組み合わせまたは
Female No 977.68/(977.68+593.27)
Female Yes 593.27/(977.68+593.27)
Male No 1919.75/(1919.75+1337.07)
Male Yes 1337.07/(1919.75+1337.07)
私は理想的には同じことを "tip"列で同時に行いたいと思います。
私は間違っていると私はこれをどのように修正しますか?ありがとうございました!
(df.groupby([ 'セックス'、 '喫煙を'])[ 'total_bill'、 '先端'] .sum() .groupby(レベル= 0).transform(ラムダx:x/x.sum()))これは同時にチップを計算する方法のようです...ありがとうございます! –
次の質問http://stackoverflow.com/questions/40049347/pandas-grouping-values-as-percent-of-grouped-totals-based-on-another-columnを見るのに十分親切でしょうか。ありがとう –