【问题标题】:Python pandas json_normalize how toPython pandas json_normalize 如何
【发布时间】:2017-03-15 16:21:46
【问题描述】:

我正在尝试创建一个 API,以从 poloniex 获取历史数据,供我的神经网络学习以用于学校项目。

我得到一个 json 文件,但问题是 poloinex_df 是“空的”,所有信息都在索引/列名行中(图片真实,变量资源管理器),我试图以某种方式转置它,然后我一直告诉这里,熊猫有这个功能。我阅读了文档,并在这里四处寻找答案,但并没有完全找到我想要的东西。我想制作一个数据框,其中包含日期打开关闭卷等索引以及相应的数据。我怎么做?现在我得到了错误:

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

Traceback(最近一次通话最后一次):

文件“”,第 1 行,在 data_frame = json_normalize(poloinex_df, 'date' ,['high', 'low', 'open', 'close','volume','quoteVolume','weightedAverage'])

文件 "C:\ToolBox\Anaconda2\lib\site-packages\pandas\io\json.py", 第 761 行,在 json_normalize _recursive_extract(data, record_path, {}, level=0)

文件 "C:\ToolBox\Anaconda2\lib\site-packages\pandas\io\json.py", 第 747 行,在 _recursive_extract 中 recs = _pull_field(obj, path[0])

文件 "C:\ToolBox\Anaconda2\lib\site-packages\pandas\io\json.py", 第 698 行,在 _pull_field 结果 = 结果[规格]

TypeError: 字符串索引必须是整数,而不是 str

来自下载数据的变量资源管理器中的图片:

我必须遵循以下代码:

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())

感谢您的帮助和洞察力

【问题讨论】:

    标签: python json pandas transpose


    【解决方案1】:
    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)
    

    【讨论】:

      猜你喜欢
      • 2018-01-05
      • 2018-08-19
      • 2019-07-13
      • 2019-06-17
      • 2021-03-26
      • 1970-01-01
      • 2019-04-21
      • 2022-08-18
      • 2021-12-30
      相关资源
      最近更新 更多