为什么这不能正确地分割流派?(Python)

2024-10-05 14:24:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力为这个data set找到评级最好的类型。我开始拆分类型,因为大多数行中有多个类型。然后,我对这些类型和它们的分数进行排序,计算出每种类型的平均分数。然后,我用每种类型和它们的平均分数更新数据框。然而,由于某种原因,列表中有重复的类型,我不知道为什么

dataGenre = data
df5 = pd.DataFrame(data={"Genre":dataYearScore['Genre'], "Score": dataYearScore['Score']})
df5 = df5.assign(Genre=df5['Genre'].str.split(',')).explode('Genre').reset_index(drop=True)

genre_list5 = []
avg_scores5 = []

for genre in df5["Genre"].unique():
    genre_list5.append(genre)
    avg_scores5.append(df5.loc[df5["Genre"]==genre, "Score"].mean())

plt.bar(genre_list5, avg_scores5, width = 0.8)
plt.xlabel('Genre')
plt.ylabel('Average Score')
plt.xticks(rotation=65)
plt.title('Average Score for Each Genre')
plt.show()


df5 = pd.DataFrame(data={"Genre":genre_list5, "Score": avg_scores5})
df5

我相信问题要么在第3行,要么在for循环中,但我不确定是什么在起作用。 任何帮助都将不胜感激:)

更新:

数据可以在这里找到https://www.kaggle.com/isaactaylorofficial/imdb-10000-most-voted-feature-films-041118

这是进口的

data = pd.read_csv('movies.csv')

我真的不需要图形,我只需要数据框有一个列,列中有类型(无重复)和它们的平均分数

df5 = pd.DataFrame(data={"Genre":genre_list5, "Score": avg_scores5})
df5

这是使用上面的代码检查的^


Tags: 数据类型dataframefordataplt分数avg
1条回答
网友
1楼 · 发布于 2024-10-05 14:24:29

由于comma之前或之后可能有一些空格分隔两种类型,因此需要使用正则表达式模式\s*,\s*Series.str.split来正确分割Genres

s = data[['Score']].assign(
    Genre=data['Genre'].str.split(r'\s*,\s*')).explode('Genre')
avg = s.groupby('Genre')['Score'].mean()

绘制平均评分:

avg.plot(kind='bar', width=0.8)
plt.ylabel('Average Rating')
plt.title('Average Score for Each Genre')

结果:

enter image description here

相关问题 更多 >