如何解决如何找到同一年所有分数的平均值Python
我正在使用Jupyter Notebook分析电影数据的.CSV文件。我创建了一个较小的示例来显示我遇到的问题。以下是与电影相关的年份和得分示例。如果给定电影是同一年的电影,我想查找该年所有电影的平均值,然后在图表中显示平均值。目前仅显示最高分数。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
xx = [ 1994,2008,2010,2018,2018] #year
yy = [ 8.9,9.0,8.8,7.8,5.2] #scores
plt.bar(xx,yy)
plt.xlabel('Years')
plt.ylabel('scores')
plt.title('scores over the Years')
plt.show()
我尝试了一堆,但似乎无法弄清楚。如果有人能帮助我,我会很感激。
解决方法
matplotlib
是用于可视化数据的软件包。要分析数据(例如查找平均年数),可以使用pandas
软件包。我鼓励您阅读更多有关它的信息。
为您提供样品:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(data={"Year":[ 1994,2008,2010,2018,2018],"Score": [ 8.9,9.0,8.8,7.8,5.2]})
years_list = []
avg_scores = []
for year in np.unique(df["Year"]):
years_list.append(year)
avg_scores.append(df.loc[df["Year"]==year,"Score"].mean())
plt.bar(years_list,avg_scores)
plt.xlabel('Years')
plt.ylabel('Scores')
plt.title('Scores over the Years')
plt.show()
首先,我创建了一个用于存储数据的数据框对象。然后,我创建了一个列表来保存所有年份和每年的平均分数。 for
循环在所有年份中都在迭代,并且每年对同一年所有电影的得分进行平均。最后几行只是在绘制它们。
有很多更有效的方法来处理大熊猫(例如groupby
),但是如果您不熟悉大熊猫,可能会有些困惑,所以我建议从该解决方案开始。
groupby
解决方案将像这样工作:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(data={"Year":[ 1994,5.2]})
plt.bar(df.grouby('Year').mean())
plt.xlabel('Years')
plt.ylabel('Scores')
plt.title('Scores over the Years')
plt.show()
它按“年”列对所有电影进行分组,并取每个组中的平均值。它的映射取决于您的数据的外观(如果有其他任何列),因此不要指望仅将其复制粘贴。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。