2016-11-02 5 views
1

Я пытаюсь создать API для получения исторических данных из poloniex для моей нейронной сети, чтобы учиться на школьный проект.Python panda json_normalize как

Я получаю файл json, но проблема в том, что poloinex_df является «пустым», вся информация находится в строке index/columnnames (pic realated, variable explorer), я попытался каким-то образом транспонировать, тогда у меня есть было сказано здесь, что у панды есть функция для этого. Я прочитал документацию и осмотрелся здесь, но не нашел того, что искал. я хотел бы сделать dataframes с индексами, такими как даты open close 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

Pic в переменной исследователь из загруженных данных:

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 ... –

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