web-dev-qa-db-ja.com

Pandas Groupby:カウントと平均の組み合わせ

PANDAS=を使用して、特定のカテゴリのカウントとしてのデータフレーム、およびこれらのカテゴリの平均センチメントスコアを試して要約します。

異なる感情スコアを持つ文字列でいっぱいのテーブルがあり、投稿の数とこれらの投稿の平均感情を言って、各テキストソースをグループ化します。

私の(簡略化された)データフレームは次のようになります。

source    text              sent
--------------------------------
bar       some string       0.13
foo       alt string        -0.8
bar       another str       0.7
foo       some text         -0.2
foo       more text         -0.5

これからの出力は次のようになります。

source    count     mean_sent
-----------------------------
foo       3         -0.5
bar       2         0.415

答えは次のようなものです。

df['sent'].groupby(df['source']).mean()

ただし、各ソースのみが提供され、列ヘッダーはありません。

前もって感謝します!

14
Lewis Anderson

groupbyaggregate と組み合わせて使用​​できます。

df = df.groupby('source') \
       .agg({'text':'size', 'sent':'mean'}) \
       .rename(columns={'text':'count','sent':'mean_sent'}) \
       .reset_index()
print (df)
  source  count  mean_sent
0    bar      2      0.415
1    foo      3     -0.500
17
jezrael