簡體   English   中英

與 pandas groupby&aggregate 一起使用的 Python 函數

[英]Python function used with pandas groupby&aggregate

我正在使用來自 kaggle 的 imdb 數據集進行數據分析。

我正在對這樣的幾個功能進行分組:

color = df_q6.groupby('color', as_index=False).agg(profit_margin_mean=('profit_margin', 'mean'), \
                                               year_mean=('title_year', 'mean'), \
                                              critic_mean=('num_critic_for_reviews', 'mean'), \
                                              duration_mean=('duration', 'mean'), \
                                              cast_fb_mean=('cast_total_facebook_likes', 'mean'), \
                                              user_review_mean=('num_user_for_reviews', 'mean'), \
                                              imdb_mean=('imdb_score', 'mean')).round(2)

我正在嘗試定義一個函數以使此類分組更容易。

到目前為止,我已經這樣做了:

def group_by_label(dataset, label, columns=[]):
   agg_list = []
   for i in columns:
       agg_list.append("%s=(%s, 'mean')" % (i, i))
   grouped = dataset.groupby(label, as_index=False).agg(*[x for x in agg_list])
   return grouped

這會返回:

AttributeError: 'profit_margin=(profit_margin, 'mean')' is not a valid function for 'DataFrameGroupBy' object

我曾假設(錯誤地)這個函數至少應該在columns只有 1 個項目時工作。

您能否建議我如何使這項工作?

謝謝。

您想使用.agg()函數,它需要一個字典,其中列名作為鍵,所需的聚合函數作為值,所以你的聚合函數:

color = df_q6.groupby('color', as_index=False).agg(profit_margin_mean=('profit_margin', 'mean'), \
                                               year_mean=('title_year', 'mean'), \
                                              critic_mean=('num_critic_for_reviews', 'mean'), \
                                              duration_mean=('duration', 'mean'), \
                                              cast_fb_mean=('cast_total_facebook_likes', 'mean'), \
                                              user_review_mean=('num_user_for_reviews', 'mean'), \
                                              imdb_mean=('imdb_score', 'mean')).round(2)

應該更像:

color = df_q6.groupby('color', as_index=False).agg({'profit_margin': 'mean',
                                            'num_critic_for_reviews':'mean',
                                            'duration': 'mean',
                                            'cast_total_facebook_likes': 'mean',
                                            'num_user_for_reviews': 'mean',
                                            'imdb_score': 'mean'}).round(2)

如果在您的情況下使用類似的函數,請確保它以類似的方式格式化列及其聚合函數。

暫無
暫無

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

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