Pandas数据框和matplotlib.pyplot

时间:2017-05-04 12:55:38

标签: pandas matplotlib

我创建了一个如下所示的数据框:

Data frame #1

使用以下内容绘制数据时没有问题:

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数据现在是索引,我试图做的任何事情来获得类似的散点图都会引发错误。

Summed data

问题1.是否有一种优雅的方式来对年份数据进行求和而不将YY数据作为新索引。还要注意我这样做的方式,我得到所有数据列的总和,如我想避免的纬度和经度。

问题2.如果您确实有一个数据变量作为索引,那么如何进行类似于上面第一个代码片段的散点图。我能够使用下面的代码得到一个线图,但它真的不是我想要的。

plt.plot(df_year.index, df_year['ALB_C'])

非常感谢您的帮助。我对python / pandas很新,但是就像功能一样,我确实通过问题搜索来找到答案,我已经在线查看了教程。再次谢谢。

2 个答案:

答案 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')