2016-11-02 1 views
1

폴로 넥스 (Poloniex)의 내 neuralnetwork에서 학교 프로젝트를 배우기 위해 API를 만들려고합니다.Python panda json_normalize how to

나는 json 파일을 되 찾을 수 있지만 문제는 poloinex_df가 "비어있다"는 것입니다. 모든 정보는 색인/columnnames 행 (pic realated, 변수 탐색기)에 있으며, 어떻게 든이 코드를 변환하려고했습니다. 여기에는 팬더가이 기능을 가지고 있다고 들었습니다. 나는 설명서를 읽고 여기 anserws에 대해 살펴 보았으나 내가 찾고있는 것을 찾지 못했습니다. 나는 날짜를 닫는 volumne 등의 인덱스와 해당 데이터를 사용하여 데이터 프레임을 만들고 싶습니다. 어떻게해야합니까? 다운로드 된 데이터에서 변수 탐색기에서

data_frame = json_normalize(poloinex_df, 'date' ,['high', 'low', 'open', 'close','volume','quoteVolume','weightedAverage']) 

Traceback (most recent call last):

File "", line 1, in data_frame = json_normalize(poloinex_df, 'date' ,['high', 'low', 'open', 'close','volume','quoteVolume','weightedAverage'])

File "C:\ToolBox\Anaconda2\lib\site-packages\pandas\io\json.py", line 761, in json_normalize _recursive_extract(data, record_path, {}, level=0)

File "C:\ToolBox\Anaconda2\lib\site-packages\pandas\io\json.py", line 747, in _recursive_extract recs = _pull_field(obj, path[0])

File "C:\ToolBox\Anaconda2\lib\site-packages\pandas\io\json.py", line 698, in _pull_field result = result[spec]

TypeError: string indices must be integers, not str

그림 : 지금은 오류를 얻을

enter image description here 나는 다음과 같은 코드가

:

import chainer as chain 
import pandas as pd 
import numpy as np 
from matplotlib import pylab 
from pandas.io.json import json_normalize 

def get_poloinex_data(s, a, b, c): 

    import requests 
    from pandas import DataFrame 
    from io import StringIO 

    url = 'https://poloniex.com/public?command=returnChartData' 

    url += '&currencyPair=' + s #USDT for USD 
    url += '&start=' + a 
    url += '&end=' + b 
    url += '&period=' + c 

    csv = requests.get(url) 

    if csv.ok: 
     return DataFrame.from_csv(StringIO(csv.text), sep=',') #Separator here 
    else: 
     return None 

params = { 
    # specify stock 
    "s": 'USDT_ETH', # BTC_ETH, USDT_ETH stb 

    # query data from 
    'a': '1422230400',  # unix date stamp, 2015 jan 26 : 1422230400 

    # query until 
    'b': '1492905600',  # unix dates tamp, 2016 sep 23 : 1492905600 

    # frequency 
    'c': '14400'  # unix time stamp 
} 


poloinex_df = get_poloinex_data(**params) 
data_frame = json_normalize(poloinex_df, 'date' ,['high', 'low', 'open', 'close','volume','quoteVolume','weightedAverage']) 
#data_frame = json_normalize(poloinex_df.json()) 
#TransposedData = poloinex_df.transpose() 
#data_frame = json_normalize(resp.json()) 

이 주셔서 감사합니다 당신의 도움과 통찰력

답변

2
import pandas as pd 
import requests 

def get_poloinex_data(s, a, b, c): 

    url = 'https://poloniex.com/public?command=returnChartData' 

    url += '&currencyPair=' + s #USDT for USD 
    url += '&start=' + a 
    url += '&end=' + b 
    url += '&period=' + c 
    data = requests.get(url) 

    return data.content 

params = { 
    # specify stock 
    "s": 'USDT_ETH', # BTC_ETH, USDT_ETH stb 

    # query data from 
    'a': '1422230400',  # unix date stamp, 2015 jan 26 : 1422230400 

    # query until 
    'b': '1492905600',  # unix dates tamp, 2016 sep 23 : 1492905600 

    # frequency 
    'c': '14400'  # unix time stamp 
} 

poloinex_df = get_poloinex_data(**params) 
data_frame = pd.read_json(poloinex_df) 
+0

감사합니다. read_json을 놓친 것 ... –