我是 Numpy 和 matplotlib 的新手。
我有一些数据要针对日期绘制,我只想绘制每个日期的中值。每个日期的数据点数不同。
我创建了一个像这样的二维 numpy 数组:
[[date1, v1], [date1, v2], [date2, v3], [date3, v4], [date3, v5], [date3, v6]]
ETC....
现在我迷路了。如何绘制每日中位数?
我是 Numpy 和 matplotlib 的新手。
我有一些数据要针对日期绘制,我只想绘制每个日期的中值。每个日期的数据点数不同。
我创建了一个像这样的二维 numpy 数组:
[[date1, v1], [date1, v2], [date2, v3], [date3, v4], [date3, v5], [date3, v6]]
ETC....
现在我迷路了。如何绘制每日中位数?
对于中位数,只需使用 numpy.median:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.median.html
有关日期,请查看 matplotlib 日期文档:
http://matplotlib.org/api/dates_api.html
这是一个简单的日期演示,可能会对您有所帮助:
http://matplotlib.org/examples/api/date_demo.html
如果您在查看这些内容后仍然卡住,请尝试发布您的一些代码或提出更具体的问题。
对于时间序列,我强烈建议使用pandas
基于numpy
.
它有一些方便的方法来处理像你这样的问题。
In [5]: import pandas as pd
# generate some data
In [6]: idx = pd.date_range('2013-01-01', pd.datetime.today(), freq='H')
In [7]: s = pd.Series(np.random.random_sample(idx.size) * 1000, index=idx)
In [8]: s.describe() # print some statistics
Out[8]:
count 1184.000000
mean 499.817905
std 291.446537
min 0.292728
25% 252.537037
50% 485.828521
75% 758.535148
max 999.681320
In [9]: s.index
Out[9]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01 00:00:00, ..., 2013-02-19 07:00:00]
Length: 1184, Freq: H, Timezone: None
# downsample to daily using median value for a day and plot it
In [10]: s.resample('D', how='median').plot()
Out[10]: <matplotlib.axes.AxesSubplot at 0x3d88ad0>