【问题标题】:Python : Find the Top 10 between multiple columnsPython:在多列之间查找前 10 名
【发布时间】:2021-07-12 18:06:04
【问题描述】:

我想发布平均分高于 7 分的美国作品中出现次数最多的前 10 位演员。

我已经尝试了几种组合并且我已经在堆栈上进行了搜索,但我真的无法弄清楚

df['actors'] = pd.Series(df['cast'].str.split(',', expand=True).stack().reset_index(drop=True))

top_actors = df[df['country'] == 'United States']

top_actors = df[df.actors != 'No Actors'].set_index('averageRating').actors.str.split(', ', expand=True).stack().reset_index(level=1, drop=True)
plt.figure(figsize=(13,7))
plt.title('Top 10 des acteurs américain')

sns.countplot(y = top_actors, order=top_actors.value_counts().index[:10], palette='Blues')
plt.show()

【问题讨论】:

  • 您是否尝试过让列表理解方法适应您的问题? lang-python top_actors_above_7_rating = [actor for actor in complete_list if actor.rating > 7.0]
  • 不...我必须承认我是初学者
  • 您有什么想法,我该如何解决我的问题?
  • 如果您可以从表格中读取一行并访问其内容 - 那么您可以使用上述方法。问题是您如何准确地阅读这些行以及它们是如何存储的。如果它们被存储为对象 - 您将需要访问适当的属性,例如 object.attribute > 7.0。如果它们被存储为列表元素 - 您将需要 list[element_number] > 7.0。如果像 '6.4' 这样的值被存储为字符串而不是浮点数,您可能需要转换为浮点数。
  • 这看起来与您的问题有关:stackoverflow.com/questions/11350770/…

标签: python pandas pandas-groupby seaborn


【解决方案1】:

有人帮助我,所以我们可以使用数据透视表:

us_actors = df[df['country'] == 'United States']

rate_over_7 = us_actors[us_actors['averageRating'] >7]

actors = pd.Series(df['cast'].str.split(',', expand=True).stack().reset_index(drop=True))

table = pd.pivot_table(rate_over_7, values=['averageRating'], index=actors, aggfunc= np.mean)

top_10 = table.iloc[:10]
top_10_sort = top_10.sort_values(by=['averageRating'], ascending=False)

sns.barplot(data=top_10_sort, x="averageRating", y=top_10_sort.index)```

【讨论】:

    【解决方案2】:

    这可能会有所帮助。

        df = pd.read_csv("filename.csv")
        df_ = df.copy()
        for i,r in df_.iterrows():
          if (r['averageRating'] < 7):
            df_.drop(i,inplace=True)
    

    在上述代码中,我们遍历行并检查“averageRating”是否小于 7,如果该条件为真,那么我们将删除整行。

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多