2017-03-22 5 views
2

나는 팬더 스 (그리고 파이썬)에 새로 왔으며 야후 API와의 주식 가격에 관심이있다.팬더 야후 증권 API

데이터를 가져 와서 반복하고 날짜와 값을 가져와야합니다. 여기

df = pd.get_data_yahoo(symbols = 'AAPL', 
    start = datetime(2011, 1, 1), 
    end = datetime(2012, 1, 1), 
    interval = 'm') 

결과는 코드입니다 : (?)는 인덱스 때문에

df 
      Open  High   Low  Close  Volume 
Date                  
2011-01-03 325.640015 348.600006 324.840027 339.320007 140234700 
2011-02-01 341.299988 364.899994 337.720001 353.210022 127618700 
2011-03-01 355.470001 361.669983 326.259979 348.510010 125874700 

내가 날짜가 아니라 달 날짜 값을 얻을 수 있습니다

최선의 방법 이 정보에 대한 데이터를 순환 시키시겠습니까? 이는 데이터를 처리하고 정렬하거나 검색하지 않는 것입니다.

+3

'DF = df.assign (월 = df.index.month)' –

+1

는 당신이 달성하고자하는지 우리에게 보여줍니다. –

답변

1

데이터 프레임의 행을 반복하고 처리해야하는 경우 pandas.DataFrame.apply()이 효과적입니다.

코드 :

일부 모의 처리 코드 ...

def process_data(row): 
    # the index becomes the name when converted to a series (row) 
    print(row.name.month, row.Close) 

시험 코드 :

import datetime as dt 
from pandas_datareader import data 

df = data.get_data_yahoo(
    'AAPL', 
    start=dt.datetime(2011, 1, 1), 
    end=dt.datetime(2011, 5, 1), 
    interval='m') 
print(df) 

# process each row 
df.apply(process_data, axis=1) 

결과 :

,536,
    Open  High   Low  Close  Volume \ 
Date                  
2011-01-03 325.640015 348.600006 324.840027 339.320007 140234700 
2011-02-01 341.299988 364.899994 337.720001 353.210022 127618700 
2011-03-01 355.470001 361.669983 326.259979 348.510010 125874700 
2011-04-01 351.110016 355.130005 320.160004 350.130005 128252100 

      Adj Close 
Date     
2011-01-03 43.962147 
2011-02-01 45.761730 
2011-03-01 45.152802 
2011-04-01 45.362682 

1 339.320007 
2 353.210022 
3 348.51001 
4 350.130005 
0

여기 야후의 데이터로 작업 할 때 내 인생을 멋지게 만들었습니다. 먼저 데이터 프레임 인덱스에서 날짜를 가져 왔습니다.

df = df.assign(date = df.index.date) 

여기 데이터를 다루는 데 도움이되는 몇 가지 다른 정보가 있습니다.

df [ 'diff' ] = df [ 'Close' ].diff() 
df [ 'pct_chg' ] = df [ 'Close' ].pct_change() 
df [ 'hl' ] = df [ 'High' ] - df [ 'Low' ] 

팬더는 놀라운 것입니다.

0

나는 이것이 당신을 위해 일해야한다고 생각합니다.

import pandas_datareader.data as web 
import datetime  

start = datetime.datetime(2013, 1, 1) 
end = datetime.datetime(2016, 1, 27) 
df = web.DataReader("GOOGL", 'yahoo', start, end) 

dates =[] 
for x in range(len(df)): 
    newdate = str(df.index[x]) 
    newdate = newdate[0:10] 
    dates.append(newdate) 

df['dates'] = dates 

print df.head() 
print df.tail() 

또한 아래 링크를 통해 이러한 종류의 작업을 수행하는 방법에 대한 유용한 정보를 얻을 수 있습니다.

https://pandas-datareader.readthedocs.io/en/latest/remote_data.html#yahoo-finance