【问题标题】:Python plot median valuePython绘制中值
【发布时间】:2013-02-03 09:19:08
【问题描述】:

我是 Numpy 和 matplotlib 的新手。

我有一些数据要针对日期绘制,我只想绘制每个日期的中值。每个日期的数据点数不同。

我创建了一个像这样的二维 numpy 数组:

[[date1, v1], [date1, v2], [date2, v3], [date3, v4], [date3, v5], [date3, v6]] 

等等……

现在我迷路了。如何绘制每日中位数?

【问题讨论】:

    标签: python numpy matplotlib time-series


    【解决方案1】:

    对于时间序列,我强烈建议使用基于numpypandas

    它有一些方便的方法来处理像你这样的问题。

    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>
    

    【讨论】:

    • 谢谢,这很有帮助。我找到了一种方法来绘制我的数据,但这更简单、更清晰。
    【解决方案2】:

    对于中位数,只需使用 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

    如果您在查看这些内容后仍然感到困惑,请尝试发布您的一些代码或提出更具体的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多