2013-02-18 3 views
2

Я новичок в Numpy и matplotlib.Python plot median value

У меня есть некоторые данные, которые я хочу построить против дат, и я хотел бы только отображать медианное значение для каждой даты. Количество точек данных для каждой даты отличается.

Я создал массив Numpy в 2-D, как это:

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

и т.д ....

Теперь я потерян. Как составить сюжетную медианную форму?

ответ

2

Для временных рядов я бы настоятельно рекомендовал использовать 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> 

pandas_example

+0

Спасибо, это очень полезно. Я нашел способ распечатать свои данные, но это намного проще и чище. – mandy

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

Если вы все еще застряли, посмотрев на них, попробуйте отправить часть своего кода или задать более конкретный вопрос.