2015-12-31 2 views
0

Я только начал изучать панды. Я наткнулся на это;Кадр данных в Panda с данными временного ряда

d = date_range('1/1/2011', periods=72, freq='H') 
s = Series(randn(len(rng)), index=rng) 

я понял, что вышеуказанные средства передачи данных, и я попытался с IPython:

import numpy as np 
from numpy.random import randn 
import time 
r = date_range('1/1/2011', periods=72, freq='H') 
r 
len(r) 
[r[i] for i in range(len(r))] 
s = Series(randn(len(r)), index=r) 
s 
s.plot() 
df_new = DataFrame(data = s, columns=['Random Number Generated']) 

Является ли это правильный способ создания кадра данных?

Следующий шаг дается заключается в следующем: Возвращение серии, где абсолютная разница между числом и следующим номером в серии меньше, чем 0,5

Мне нужно найти разницу между каждым случайным числом генерируемой и хранить ли только наборы, где abs diff - < 0,5? Может кто-нибудь объяснить, как я могу это сделать в пандах?

Также я попытался построить серию как гистограмму;

df_new.diff().hist() 

График отображает x как случайное число с осью Y от 0 до 18 (что я не понимаю). Может ли кто-нибудь объяснить это мне также?

+0

Учитывая DATE_RANGE, г, что кадр данных может быть создан как: 'DataFrame (индекс = г, данных = randn (Len (г)), столбцы = [ «Произвольный номер сгенерирован»]). – Dthal

+0

В чем разница между созданным мной способом и предложенным вами способом. Можете ли вы объяснить мне, что я новый для Панд. – Sarah

+0

Я просто указывал, что создание Серии не требуется. – Dthal

ответ

1

Чтобы дать вам несколько советов в дополнение к @ комментарии Dthal по:

r = pd.date_range('1/1/2011', periods=72, freq='H') 

Как прокомментировал @Dthal, вы можете упростить создание вашей DataFrame случайно отобранного от нормального распределения, как так:

df = pd.DataFrame(index=r, data=randn(len(r)), columns=['Random Number Generated']) 

Для того, чтобы показать, что только values отличаются менее чем 0.5 от предыдущего значения:

diff = df.diff() 
diff[abs(diff['Random Number Generated']) < 0.5] 

        Random Number Generated 
2011-01-01 02:00:00     0.061821 
2011-01-01 05:00:00     0.463712 
2011-01-01 09:00:00    -0.402802 
2011-01-01 11:00:00    -0.000434 
2011-01-01 22:00:00     0.295019 
2011-01-02 03:00:00     0.215095 
2011-01-02 05:00:00     0.424368 
2011-01-02 08:00:00    -0.452416 
2011-01-02 09:00:00    -0.474999 
2011-01-02 11:00:00     0.385204 
2011-01-02 12:00:00    -0.248396 
2011-01-02 14:00:00     0.081890 
2011-01-02 17:00:00     0.421897 
2011-01-02 18:00:00     0.104898 
2011-01-03 05:00:00    -0.071969 
2011-01-03 15:00:00     0.101156 
2011-01-03 18:00:00    -0.175296 
2011-01-03 20:00:00    -0.371812 

Может упростить использование .dropna(), чтобы избавиться от недостающих значений.

pandas.Series.hist() The docs сообщает, что номер по умолчанию bins является 10, так что число bars вы должны ожидать, и так получается, в этом случае примерно симметричной вокруг нуля в диапазоне примерно [-4, +4].

Series.hist (по = нет, ах = нет, сетки = True, xlabelsize = нет, xrot = нет, ylabelsize = None, yrot = None, figsize = нет, бункеры = 10, ** kwds) diff.hist()

enter image description here

+0

Спасибо за объяснение stefen :) Я пробовал то же самое, но когда я попытался создать панель: df_new = diff [abs (diff ['Random Number Generated']) <0.5], df_new.diff(). Hist (bins = 10). Я получаю разный график – Sarah

+0

Я что-то упустил? – Sarah

+0

Нужно ли указывать ось явно? – Sarah