Python JSON анализирует из второго списка и сохраняет в виде pandas dataframe как данные OHLC для статистического анализа - PullRequest
0 голосов
/ 25 октября 2018

Вот вывод JSON из ссылки на источник URL, который извлекается с использованием приведенного ниже кода (спасибо за поддержку jezreal)

В нем время выравнивания времени открытия и закрытия необходимо выровнять в данных пандкадр, как показано ниже, и время в формате Unix. Можно также позаботиться о том, чтобы показывать читаемое время в одной и той же строке покрытия.

time             open    high    low      close 
1539799200       6552.03 6561.18 6536.5   6559.63
1539810000       6560.84 6578.1  6555.33  6574.52


{"Response":"Success","Type":100,"Aggregated":true,"Data":[{"time":1539799200,"close":6559.63,"high":6561.18,"low":6536.5,"open":6552.03,"volumefrom":4624.82,"volumeto":30479248.75},{"time":1539810000,"close":6574.52,"high":6578.1,"low":6555.33,"open":6560.84,"volumefrom":2368.81,"volumeto":15594716.12},{"time":1539820800,"close":6573.91,"high":6585.42,"low":6560.31,"open":6576.4,"volumefrom":3144.75,"volumeto":20776589.48},{"time":1539831600,"close":6576.48,"high":6616.27,"low":6568.41,"open":6573.91,"volumefrom":6208.05,"volumeto":40945806.05},{"time":1539842400,"close":6560.13,"high":6579.81,"low":6542.31,"open":6576.48,"volumefrom":8045.66,"volumeto":52659570.56},{"time":1539853200,"close":6546.74,"high":6566.63,"low":6541.93,"open":6560.13,"volumefrom":4540.41,"volumeto":29713532.97},{"time":1539864000,"close":6546.59,"high":6560.14,"low":6541.11,"open":6546.74,"volumefrom":5465.11,"volumeto":35723664.51},{"time":1539874800,"close":6499.07,"high":6552.18,"low":6468.72,"open":6546.59,"volumefrom":9674.57,"volumeto":63221298.41},{"time":1539885600,"close":6483.95,"high":6511.51,"low":6471.98,"open":6499.39,"volumefrom":6698.95,"volumeto":43509638.59},{"time":1539896400,"close":6488.72,"high":6497.04,"low":6445.05,"open":6483.95,"volumefrom":6947.84,"volumeto":45211014.91},{"time":1539907200,"close":6490.42,"high":6503.09,"low":6471.97,"open":6489.37,"volumefrom":4423.34,"volumeto":28794167.92},{"time":1539918000,"close":6461.14,"high":6494.75,"low":6460.48,"open":6490.42,"volumefrom":5162.67,"volumeto":33678228.34},{"time":1539928800,"close":6470.87,"high":6481.89,"low":6449.36,"open":6461.39,"volumefrom":6860.66,"volumeto":44505867.3},{"time":1539939600,"close":6478.1,"high":6491.73,"low":6466.29,"open":6471.4,"volumefrom":4692.68,"volumeto":30512532.85},{"time":1539950400,"close":6465.38,"high":6480.59,"low":6450.43,"open":6478.46,"volumefrom":4686.65,"volumeto":30447205.19},{"time":1539961200,"close":6474.23,"high":6490.73,"low":6461.29,"open":6465.38,"volumefrom":4031.97,"volumeto":26204586.39},{"time":1539972000,"close":6463.07,"high":6491.25,"low":6456.37,"open":6475.34,"volumefrom":4705.28,"volumeto":30503295.6},{"time":1539982800,"close":6469.28,"high":6481.32,"low":6461.01,"open":6463.07,"volumefrom":2036.37,"volumeto":13209201.82},{"time":1539993600,"close":6475.71,"high":6490.09,"low":6457.34,"open":6469.28,"volumefrom":2819.04,"volumeto":18270501.18},{"time":1540004400,"close":6472.47,"high":6480.5,"low":6466.73,"open":6475.71,"volumefrom":1283.87,"volumeto":8371731.17},{"time":1540015200,"close":6492.87,"high":6514.63,"low":6469.83,"open":6472.48,"volumefrom":5611.77,"volumeto":36422917.95},{"time":1540026000,"close":6492.14,"high":6499.02,"low":6481.22,"open":6493.1,"volumefrom":2627.8,"volumeto":17028821.55},{"time":1540036800,"close":6485.75,"high":6503.24,"low":6481.35,"open":6492.86,"volumefrom":1688.73,"volumeto":11050199.06},{"time":1540047600,"close":6474.56,"high":6491.55,"low":6467.06,"open":6485.75,"volumefrom":2174.05,"volumeto":14174026.53},{"time":1540058400,"close":6449.62,"high":6620.03,"low":6395.45,"open":6474.84,"volumefrom":1618.05,"volumeto":10591087.07},{"time":1540069200,"close":6490.56,"high":6645.2,"low":6409.58,"open":6449.62,"volumefrom":1720.45,"volumeto":11276563.25},{"time":1540080000,"close":6523.14,"high":6537.85,"low":6474.47,"open":6490.6,"volumefrom":3119.01,"volumeto":20414111.11},{"time":1540090800,"close":6512.33,"high":6527.19,"low":6505.1,"open":6523.14,"volumefrom":1428.44,"volumeto":9410771.05},{"time":1540101600,"close":6521.18,"high":6531.31,"low":6505.24,"open":6512.33,"volumefrom":1154.44,"volumeto":7602973.18},{"time":1540112400,"close":6532.94,"high":6547.63,"low":6519.27,"open":6521.06,"volumefrom":2493.15,"volumeto":16460093.6},{"time":1540123200,"close":6553.24,"high":6557.39,"low":6528.7,"open":6532.94,"volumefrom":2073.1,"volumeto":13648215},{"time":1540134000,"close":6541.43,"high":6555.82,"low":6536.35,"open":6554.68,"volumefrom":1961.45,"volumeto":12892589.57},{"time":1540144800,"close":6540.79,"high":6544.87,"low":6536.15,"open":6541.47,"volumefrom":1343.65,"volumeto":8836846.92},{"time":1540155600,"close":6509.87,"high":6544.03,"low":6505.93,"open":6541.09,"volumefrom":2446.25,"volumeto":16018328.61},{"time":1540166400,"close":6512.88,"high":6521.91,"low":6490.91,"open":6509.87,"volumefrom":2808.98,"volumeto":18326028.18},{"time":1540177200,"close":6513.97,"high":6531.23,"low":6506.3,"open":6512.89,"volumefrom":2789.67,"volumeto":18120642.6},{"time":1540188000,"close":6490.33,"high":6523.38,"low":6486.56,"open":6513.94,"volumefrom":4780.49,"volumeto":30938881.1},{"time":1540198800,"close":6487.27,"high":6495.84,"low":6483.85,"open":6490.37,"volumefrom":4514.42,"volumeto":29184642.35},{"time":1540209600,"close":6475.55,"high":6487.75,"low":6460.38,"open":6487.27,"volumefrom":4501.18,"volumeto":29396797.66},{"time":1540220400,"close":6482.89,"high":6488.84,"low":6475,"open":6475.55,"volumefrom":3796.89,"volumeto":24634623.93},{"time":1540231200,"close":6492.22,"high":6492.82,"low":6467.97,"open":6482.92,"volumefrom":4610.63,"volumeto":29857061.51},{"time":1540242000,"close":6483.23,"high":6493.26,"low":6480.04,"open":6492.58,"volumefrom":3436.8,"volumeto":22308237.06},{"time":1540252800,"close":6486.84,"high":6490.71,"low":6474.37,"open":6484.32,"volumefrom":3630.53,"volumeto":23554296.71},{"time":1540263600,"close":6478.56,"high":6486.84,"low":6463.04,"open":6486.84,"volumefrom":3944.16,"volumeto":25539762.26},{"time":1540274400,"close":6470.69,"high":6480.85,"low":6466.25,"open":6478.56,"volumefrom":5576.22,"volumeto":36107314.56},{"time":1540285200,"close":6450.77,"high":6475.53,"low":6438.99,"open":6470.79,"volumefrom":6005.54,"volumeto":38830627.57},{"time":1540296000,"close":6465.51,"high":6486.24,"low":6447.5,"open":6450.7,"volumefrom":4398.41,"volumeto":28561892.47},{"time":1540306800,"close":6465.95,"high":6482.38,"low":6464.26,"open":6465.94,"volumefrom":3560.77,"volumeto":23168362.41},{"time":1540317600,"close":6470.21,"high":6496.2,"low":6464.86,"open":6466.89,"volumefrom":4605.72,"volumeto":29864291.15},{"time":1540328400,"close":6470.22,"high":6479.57,"low":6464.04,"open":6470.39,"volumefrom":2350.25,"volumeto":15286746.48},{"time":1540339200,"close":6482.54,"high":6482.86,"low":6465.73,"open":6470.63,"volumefrom":2430.51,"volumeto":15796676.89},{"time":1540350000,"close":6519.77,"high":6538.35,"low":6479.98,"open":6483.11,"volumefrom":6768.62,"volumeto":44074393.78},{"time":1540360800,"close":6506.2,"high":6524.39,"low":6501.02,"open":6519.77,"volumefrom":5465.81,"volumeto":35521973.45},{"time":1540371600,"close":6501.81,"high":6521.51,"low":6498.7,"open":6506.2,"volumefrom":4070.56,"volumeto":26564829.78},{"time":1540382400,"close":6507.85,"high":6511.7,"low":6498.39,"open":6502.6,"volumefrom":4094.13,"volumeto":26658796.94},{"time":1540393200,"close":6495.16,"high":6508.67,"low":6481.44,"open":6507.9,"volumefrom":4215.83,"volumeto":27453667.29},{"time":1540404000,"close":6491.62,"high":6499.79,"low":6475.42,"open":6494.86,"volumefrom":4470.52,"volumeto":29077607.29},{"time":1540414800,"close":6476.25,"high":6494.04,"low":6469.75,"open":6492.04,"volumefrom":2595.67,"volumeto":16920186.4},{"time":1540425600,"close":6459.38,"high":6497.9,"low":6432.3,"open":6476.52,"volumefrom":6492.6,"volumeto":42043551.31},{"time":1540436400,"close":6464.79,"high":6470.14,"low":6450.03,"open":6459.38,"volumefrom":3505.93,"volumeto":22669303.87},{"time":1540447200,"close":6470.36,"high":6470.36,"low":6463.61,"open":6464.79,"volumefrom":101.44,"volumeto":658683.69}],"TimeTo":1540447200,"TimeFrom":1539799200,"FirstValueInArray":true,"ConversionType":{"type":"direct","conversionSymbol":""}}

сделал некоторую попытку и получил ошибку, как разрешить и получить правильный формат кадра данныхДанные OHLC.

import requests
import pandas as pd
import json
from pandas.io.json import json_normalize

url = 'https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=USD&limit=60&aggregate=3&e=CCCAGG'
res = requests.get(url)
j = res.json()
df = pd.DataFrame(json_normalize(j))
print(df[['Data'][0]['time'])

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Добавьте ключ Data к json_normalize и при необходимости создайте индекс с помощью set_index:

df = json_normalize(j, 'Data').set_index('time')
#another solution
#df = json_normalize(j['Data']).set_index('time')
print (df.head(10))
            close  high  low  open  volumefrom  volumeto
time                                                    
1539810000    0.0   0.0    0     0           0         0
1539820800    0.0   0.0    0     0           0         0
1539831600    0.0   0.0    0     0           0         0
1539842400    0.0   0.0    0     0           0         0
1539853200    0.0   0.0    0     0           0         0
1539864000    0.0   0.0    0     0           0         0
1539874800    0.0   0.0    0     0           0         0
1539885600    0.0   0.0    0     0           0         0
1539896400    0.0   0.0    0     0           0         0
1539907200    0.0   0.0    0     0           0         0
0 голосов
/ 25 октября 2018

Вы можете использовать панд set_index () .В этом случае нет необходимости в json_normalize, то есть:

import requests
import pandas as pd

url = 'https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=USD&limit=60&aggregate=3&e=CCCAGG'
try:
    df = pd.DataFrame(requests.get(url).json()['Data']).set_index('time')
    print(df)
except Exception as e:
    print(e)

              close     high      low     open  volumefrom     volumeto
time                                                                   
1539810000  6574.52  6578.10  6555.33  6560.84     2368.81  15594716.12
1539820800  6573.91  6585.42  6560.31  6576.40     3144.75  20776589.48
1539831600  6576.48  6616.27  6568.41  6573.91     6208.05  40945806.05
1539842400  6560.13  6579.81  6542.31  6576.48     8045.66  52659570.56
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...