这里是初学者编码器。我遇到的问题是使用 for 循环迭代特定列以生成折线图。
df 是电影信息的集合,特别是片名、工作室、年份、国内、国外和总票房。
我正在尝试使用 for 循环将每年所有总收入的总和相加,即 2012 年的所有总收入相加,其余年份也是如此,以创建一个带有指出每年的总和。假设 2012 年总收入为 200b,2013 年总收入为 150b。
我已经创建了一个函数来查找单个年份的总收入,但在 for 循环中遇到了困难,因为 for 循环是我的弱点。另外,我不想对每个数据点的值进行硬编码,因为这显然对于更大的数据集合是不可行的,而且我想学习如何使用 for 循环来做到这一点。
最初尝试让情节看起来像这样:
x = np.array(df['year'])
y = np.array(df['total_gross'])
plt.plot(x,y)
plt.show();
这创建了一个每年都有垂直线的图表。这时我意识到它并不是对每年的值求和,而只是简单地将每个gross_value放在自己的位置。
这是我创建的用于收集一年总收入的函数
def year_gross(year):
year_list = df[df['year'] == year]
gross = sum(year_list['total_gross'])
return gross
它工作得很好,但就像我之前说的,我想避免硬编码。
您可以按
year
进行分组,并取 total_gross
值的 sum并绘制结果序列。这是一个包含一些随机数据的示例:
random.seed(0)
df = pd.DataFrame({
'year' : random.choices(range(2010,2025),k=50),
'total_gross' : random.choices(range(500,1500),k=50)
})
data = df.groupby('year').sum()
plt.plot(data)
plt.show()
中间输出(
data
):
total_gross
year
2010 2224
2011 589
2012 1293
2013 5076
2014 4699
2015 1349
2016 3269
2017 6706
2018 2834
2019 2463
2020 4242
2021 2659
2022 6087
2023 8101
2024 3212