如何迭代特定列以创建折线图

问题描述 投票:0回答:1

这里是初学者编码器。我遇到的问题是使用 for 循环迭代特定列以生成折线图。

dataframe first 5 rows

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

它工作得很好,但就像我之前说的,我想避免硬编码。

python pandas loops for-loop charts
1个回答
0
投票

您可以按

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

剧情:

© www.soinside.com 2019 - 2024. All rights reserved.