使用散景中的每日数据进行年度折线图的最佳方法是什么?
目前我正在为日常值的初始数据框添加日期行(2016年任意)和年份列。然后按年份填充纳入广泛的数据(缺少数据随年份变化),然后逐年建立散景图:
说我有三年数据表:
栏目:日期和价值
df = df.set_index('Date')
df['dateline'] = df.index.to_series().dt.strftime('%d-%b-2016')
df['year'] = df.index.to_series().dt.strftime('%Y')
pv = pd.pivot_table(df, index=df['dateline'], columns=df.index.year,
values='value', aggfunc='sum')
pv.index = pd.to_datetime(pv.index, format = '%d-%b-%Y' )
pv.sort_index(inplace=True)
pv = pv.apply(lambda x: x.fillna(method = 'ffill' , limit = 4))
p.line(x= pv.index , y = pv[2017], line_width=1.5, line_color = "red" ,legend = '2017')
p.line(x= pv.index , y = pv[2016], line_width=1.5, line_color = "blue" ,legend = '2016')
p.line(x= pv.index , y = pv[2015], line_width=1.5, line_color = "green" , legend = '2015')
p.line(x= pv.index , y = pv[2014], line_width=1.5, line_color = "orange" ,legend = '2014')
我的问题是可以进一步优化吗?我想将来使用悬停所以最好的设置是什么?下一步将是多年的循环列,但我是否需要走这条路?
来自R我希望以长格式保存数据并执行以下操作:
p.line(df, x='dateline' , y = 'value' , color = 'year')
感谢您的提示。
答案 0 :(得分:0)
一种解决方案是使用.dt访问者获取日期并创建年份列和年份列
请确保df [' date']是日期时间列。
df['year'] = df['date'].dt.year
df['dayofyear'] = df['date'].dt.dayofyear
df.head()
year value dayofyear
date
2014-01-31 2014 1.964372 31
2014-02-28 2014 2.386228 59
2014-03-31 2014 2.695743 90
2014-04-30 2014 2.712133 120
2014-05-31 2014 2.033271 150
from bokeh.charts import Line
p = Line(df,x='dayofyear', y='value',color='year')
show(p)