熊猫:如何相互绘制年度数据

熊猫:如何相互绘制年度数据,第1张

熊猫:如何相互绘制年度数据

假设以

pandas.TimeSeries
对象为起点,则可以使用ISO周编号和ISO周日将元素分组
datetime.date.isocalendar()
。以下语句(忽略ISO年)汇总了每天的最后一个样本。

In [95]: daily = ts.groupby(lambda x: x.isocalendar()[1:]).agg(lambda s: s[-1])In [96]: dailyOut[96]: key_0(1, 1)     63(1, 2)     91(1, 3)     73...(20, 5)    82(20, 6)    53(20, 7)    63Length: 140

可能有一种更干净的方法来执行下一步,但目标是将索引从元组数组更改为MultiIndex对象。

In [97]: daily.index = pandas.MultiIndex.from_tuples(daily.index, names=['W', 'D'])In [98]: dailyOut[98]: W   D1   1    63    2    91    3    73    4    88    5    84    6    95    7    72...20  1    81    2    53    3    78    4    64    5    82    6    53    7    63Length: 140

最后一步是从MultiIndex中“取消堆叠工作日,为每个工作日创建列,并将工作日数字替换为缩写,以提高可读性。

In [102]: dofw = "Mon Tue Wed Thu Fri Sat Sun".split()In [103]: grid = daily.unstack('D').rename(columns=lambda x: dofw[x-1])In [104]: gridOut[104]:     Mon  Tue  Wed  Thu  Fri  Sat  SunW   1    63   91   73   88   84   95   722    66   77   96   72   56   80   66...19   56   69   89   69   96   73   8020   81   53   78   64   82   53   63

要为每周创建一个折线图,请转置数据框,使列为周数,行为工作日(请注意,可以通过在上一步中取消堆叠周数来代替工作日来避免此步骤),并调用

plot

grid.T.plot()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存