2016-11-02 144 views
1

我正在嘗試創建一個API以從我的神經網絡的poloniex獲取歷史數據以便學習一個學校項目。Python熊貓json_normalize如何

我得到一個json文件,但問題是poloinex_df是「空的」,所有的信息都在索引/列名行(與pic相關的變量資源管理器)中,我試圖轉置它,然後我有在這裏被告知,熊貓有這個功能。我閱讀了文檔,並在這裏環顧四周,但沒有找到我想要的東西。我想製作一個數據框,如日期打開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

石化公司從下載的數據變量探險:

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