在matplotlib图上绘制时间序列p的多条线

2024-10-05 10:47:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个时间序列图,x轴是年份,y轴是县/失业率。在

这个问题与建议的重复问题类似,这是我想使用的方法。主要的区别在于,我无法正确地处理数据。在

数据就是这样出现的

name  employment_2007  employment_2008  employment_2009
Napa              200              230              215
Lake              140              130              150

Sample of what I'm going for

screenshot of code and error

请注意,在图中,为了简化问题,我将一个县分离出来,我计划在解决完这个问题后添加所有县。在

这可能更像是一个数据转换问题,所以我应该注意到我使用了Pandas数据帧来存储所有内容。在


Tags: of数据sample方法name时间what建议
1条回答
网友
1楼 · 发布于 2024-10-05 10:47:09

这可以通过以下步骤实现:

  1. 从列标签中提取年份字符串
  2. 将年份字符串转换为日期时间
  3. 通过迭代groupby对象在同一轴上绘图。在

比如:

from StringIO import StringIO
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv(StringIO("""name, employment_2007, employment_2008, employment_2016
Napa, 200, 230,215
Lake, 140, 130,150"""),sep=',',index_col=['name'])


#Get year string and convert to date time
df = df.unstack().reset_index()
df['Year'] = df['level_0'].str.split('_').apply(lambda x: x[1])        
df['TimeStamp'] = pd.to_datetime(df['Year'],format='%Y')

#Get Rid of extra columns and rename series to plot
df = df[['name',0,'TimeStamp']]
df = df.rename(columns={0:'Employment'})
fig,ax= plt.subplots()
for n, group in df.groupby('name'):
    group.plot(x='TimeStamp',y='Employment', ax=ax,label=n)

它产生了一个类似于:

enter image description here

相关问题 更多 >

    热门问题