我想有一个时间序列图,其中x轴为数年,y轴为县/失业率。
问题类似于建议的副本,这是我想要使用的方法。主要区别在于我无法弄清楚如何正确地纠缠数据。
数据显示为
name employment_2007 employment_2008 employment_2009
Napa 200 230 215
Lake 140 130 150
在图片中注意我已经隔离了一个县以使问题更简单,我计划在我完成这项工作后添加所有县。
这可能更像是一个数据转换问题,所以我应该注意到我正在使用Pandas数据帧来存储所有内容。
答案 0 :(得分:0)
这可以通过以下步骤实现:
类似的东西:
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)
产生如下情节: