作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在从 12 月到 1 月的一个 12 个月轴上绘制 6 年的 12 个月周期数据。
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
df = pd.Series(np.random.randn(72), index=pd.date_range('1/1/2000', periods=72, freq='M'))
# display(df.head())
2000-01-31 0.713724
2000-02-29 0.416233
2000-03-31 -0.147765
2000-04-30 0.141021
2000-05-31 0.966261
Freq: M, dtype: float64
grouped = df.groupby(df.index.map(lambda x: x.year))
grouped.plot()
我在每年之间的界线中得到突破。然而,我想做的是让年份相互叠加。有什么简单干净的方法吗?
最佳答案
可能有比这更好的方法:
In [44]: vals = df.groupby(lambda x: (x.year, x.month)).sum()
In [45]: vals
Out[45]:
(2000, 1) -0.235044
(2000, 2) -1.196815
(2000, 3) -0.370850
(2000, 4) 0.719915
(2000, 5) -1.228286
(2000, 6) -0.192108
(2000, 7) -0.337032
(2000, 8) -0.174219
(2000, 9) 0.605742
(2000, 10) 1.061558
(2000, 11) -0.683674
(2000, 12) -0.813779
(2001, 1) 2.103178
(2001, 2) -1.099845
(2001, 3) 0.366811
...
(2004, 10) -0.905740
(2004, 11) -0.143628
(2004, 12) 2.166758
(2005, 1) 0.944993
(2005, 2) -0.741785
(2005, 3) 1.531754
(2005, 4) -1.106024
(2005, 5) -1.925078
(2005, 6) 0.400930
(2005, 7) 0.321962
(2005, 8) -0.851656
(2005, 9) 0.371305
(2005, 10) -0.868836
(2005, 11) -0.932977
(2005, 12) -0.530207
Length: 72, dtype: float64
现在将 vals
上的索引更改为 MultiIndex
In [46]: vals.index = pd.MultiIndex.from_tuples(vals.index)
In [47]: vals.head()
Out[47]:
2000 1 -0.235044
2 -1.196815
3 -0.370850
4 0.719915
5 -1.228286
dtype: float64
然后展开并绘图:
In [48]: vals.unstack(0).plot()
Out[48]: <matplotlib.axes.AxesSubplot at 0x1171a2dd0>
关于python - 在 12 个月轴上逐年绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21798829/
我是一名优秀的程序员,十分优秀!