2013-11-30 2 views
1

Я взял некоторые данные из Интернета и загрузить его в панд dataframeнеожиданные колебания при использовании панд участка()

import pandas as pd 
%pylab inline 

loc = 'https://blockchain.info/charts/hash-rate?showDataPoints=false&timespan=all&show_header=true&daysAverageString=1&scale=1&format=csv&address=' 
df = pd.read_csv(loc, parse_dates = True, 
       index_col = 0, skiprows = 1, 
       names = ['Date', 'Hash Rate (Gh/s)']) 

Я затем попытаться построить его с помощью панд df.plot заповедую

df['Hash Rate (Gh/s)'].plot(logy = True) 

участок я получаю обратно имеет неожиданные колебания made with pandas

, но если я сюжет одни и те же данные с Matplotlib

plt.semilogy(df['Hash Rate (Gh/s)']) 

made with matplotlib

Там нет ни одного из этих колебаний.

Я попытался использовать панд переиндексации функциональность

df_idx = pd.date_range(df.index[0], df.index[-1]) 
df = df.reindex(df_idx, fill_value=nan) 

но пока не нашли каких-либо средств, чтобы избавиться от этих паразитных колебаний в сюжете. Как удалить эти колебания или переиндексировать в пандах, чтобы их устранить?

ответ

1

Ваши данные не обрабатываются правильно: у них есть дни сперва. Если вы пройдете dayfirst=True до read_csv, это должно устранить проблему.

In [6]: df = pd.read_csv("ooo.csv", skiprows=1, names=['Date', 'Hash Rate (Gh/s)'], parse_dates=True, index_col=0, dayfirst=True) 

In [7]: df.head(10) 
Out[7]: 
        Hash Rate (Gh/s) 
Date         
2009-01-04 18:15:05   0.000000 
2009-01-05 18:15:05   0.000000 
2009-01-06 18:15:05   0.000000 
2009-01-07 18:15:05   0.000000 
2009-01-08 18:15:05   0.000000 
2009-01-09 18:15:05   0.000696 
2009-01-10 18:15:05   0.001541 
2009-01-11 18:15:05   0.005269 
2009-01-12 18:15:05   0.004424 
2009-01-13 18:15:05   0.005717 

[10 rows x 1 columns] 

In [8]: !head ooo.csv 
03/01/2009 18:15:05,0.00004971026962962963 
04/01/2009 18:15:05,0.0 
05/01/2009 18:15:05,0.0 
06/01/2009 18:15:05,0.0 
07/01/2009 18:15:05,0.0 
08/01/2009 18:15:05,0.0 
09/01/2009 18:15:05,0.0006959437748148148 
10/01/2009 18:15:05,0.0015410183585185184 
11/01/2009 18:15:05,0.005269288580740741 
12/01/2009 18:15:05,0.004424213997037036 

In [9]: df["Hash Rate (Gh/s)"].plot(logy=True) 
Out[9]: <matplotlib.axes._subplots.AxesSubplot at 0xc4ea58c> 

производит

figure w/o oscillations

+0

Спасибо. Очень простое решение. Мне жаль, что мне не показалось, что форматирование даты и времени было просто выключено. –

Смежные вопросы