私はWes McKinneyのPython for Data Analysisの例を理解しようとしています。私はパンダ料理の本、ドキュメント、そしてそれを見てきましたが、このような例は見つかりません。Pandasのapplyとgroupbyを理解する
この例では2012年の連邦選挙委員会データベース(https://github.com/wesm/pydata-book/blob/master/ch09.ipynb)を見ています。下のコードは、オバマとロムニーに寄付するトップドナーの職業を決定します。
私は、関数がgroupbyオブジェクトをどのように受け取り、別のgroupby操作を実行するかを理解するのに苦労しています。関数の外でこれを実行すると、エラーが発生します。誰かがこの行動についていくつかの光を当てることができましたか?
おかげで、
イワン
# top donor occupations donating to Obama or Romney
def get_top_amounts(group, key, n = 5):
totals = group.groupby(key)['contb_receipt_amt'].sum()
return totals.sort_values(ascending = False)[:n]
# first group by candidate
grouped = fec_mrbo.groupby('cand_nm')
# for each group, group again by contb_receipt_amt so we have a hierarchical index
# take the contribution amount
# then return the total amount for each occupation by cand sorted to give top n
grouped.apply(get_top_amounts, 'contbr_occupation', n= 5)
あなたが実際にグループを反復処理しているグループ化されたデータフレームにapply
を使用し、各グループを渡すと、結果はこの
cand_nm contbr_occupation
Obama, Barack RETIRED 25270507.23
ATTORNEY 11126932.97
INFORMATION REQUESTED 4849801.96
HOMEMAKER 4243394.30
PHYSICIAN 3732387.44
LAWYER 3159391.87
CONSULTANT 2459812.71
Romney, Mitt RETIRED 11266949.23
INFORMATION REQUESTED PER BEST EFFORTS 11173374.84
HOMEMAKER 8037250.86
ATTORNEY 5302578.82
PRESIDENT 2403439.77
EXECUTIVE 2230653.79
C.E.O. 1893931.11
ありがとうございましたJan!だから私はこれを確かめるために。 上記で定義したグループ化された変数は、DataFrameGroupByオブジェクトです。しかし、apply関数が実行すると、DataFrameのように動作します。これは、second_group_sumの場合と同様に、セカンダリグループを実行するためのものです。 –
はい、 'grouped'は' DataFrameGroupBy'オブジェクトです。また、 'apply(function)'を使うと、根底にあるDataFrameを各グループごとに複数のDataFramesに分割することができます。 –