我创建了一个如下所示的数据框:
使用以下内容绘制数据时没有问题:
df_catch.plot(x='YY', y='ALB_C', kind='scatter',
figsize=(12,6), title='ALB catch/hooks')
plt.xlabel('Year')
plt.ylabel('ALB catch/hooks')
plt.show()
很多个月和几年都有很多行数据。我想将数据连接几年(即每年的月数据总和)。我这样做有以下几点:
name = df_catch.groupby('YY')
# Apply the sum function to the groupby object
df_year = name.sum()
df_year.head(5)
这主要产生了预期的结果,除了YY数据现在是索引,我试图做的任何事情来获得类似的散点图都会引发错误。
问题1.是否有一种优雅的方式来对年份数据进行求和而不将YY数据作为新索引。还要注意我这样做的方式,我得到所有数据列的总和,如我想避免的纬度和经度。
问题2.如果您确实有一个数据变量作为索引,那么如何进行类似于上面第一个代码片段的散点图。我能够使用下面的代码得到一个线图,但它真的不是我想要的。
plt.plot(df_year.index, df_year['ALB_C'])
非常感谢您的帮助。我对python / pandas很新,但是就像功能一样,我确实通过问题搜索来找到答案,我已经在线查看了教程。再次谢谢。
答案 0 :(得分:1)
将index
转换为列是2个解决方案:
需要reset_index
:
name = df_catch.groupby('YY')
# Apply the sum function to the groupby object
df_year = name.sum().reset_index()
df_year.head(5)
或者将参数as_index=False
添加到groupby
:
name = df_catch.groupby('YY', as_index=False)
# Apply the sum function to the groupby object
df_year = name.sum()
df_year.head(5)
答案 1 :(得分:1)
问题1:我们试试
name = df_catch.groupby('YY', as_index=False)
或
name.sum().reset_index()
问题2:我们这样做
plt.plot(df_year.index, df_year['ALB_C'], marker="o", linestyle='none')