Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Bittrex解析JSON_Python_Json_Urllib - Fatal编程技术网

Python 从Bittrex解析JSON

Python 从Bittrex解析JSON,python,json,urllib,Python,Json,Urllib,我有以下代码: import urllib2 import json from matplotlib.finance import candlestick2_ohlc import matplotlib.pyplot as plt import matplotlib.ticker as ticker import datetime as datetime import numpy as np import csv l = [] date = [] date_intermediaire = []

我有以下代码:

import urllib2
import json
from matplotlib.finance import candlestick2_ohlc
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import datetime as datetime
import numpy as np
import csv

l = []
date = []
date_intermediaire = []

response = urllib2.urlopen('https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=BTC-ETH&tickInterval=thirtyMin&_=')
data = json.load(response)
其中,
data['result'][:]['T']
包含时间,
data['result'][:]['V']
包含卷,
data['result'][i]['O']
包含打开部分,
data['result'][i]['C']
包含关闭部分,
data['result']['L']
包含低位,
data['result']['H']
包含高位

实际上,我想让定义r变得更容易,就像这样:

r['date'][i] = data['result'][i]['T']
r['open'][i] = data['result'][i]['O']
r['close'][i] = data['result'][i]['C']
r['max'][i] = data['result'][i]['H']
r['min'][i] = data['result'][i]['L']
r['volume'][i] = data['result'][i]['V']
但是我不知道如何在Python中做到这一点。

您想在这里“减少”数据。您可以在这里使用,但只编写自己的函数可能会更容易。循环遍历每个结果并将其附加到相关列的内容

def map_response(data):
    retval = {
      'date': [],
      'open': [],
      # ...
    }
    for result in data['result']:
       retval['date'].append(result['T'])
       retval['open'].append(result['O'])
       # ...

    return retval
您可能还可以通过描述映射来自动化这一点

def map_response(data):
    mappings = {'T': 'date', 'O': 'open', '...': '...'}
    retval = {val: [] for val in mappings.values()}
    for result in data['result']:
        for key, value: result.items():
             retval[mappings[key]] = value

    return retval

但对我来说,这看起来不太清楚,只是省去了重复。

如果我理解正确,你不知道如何在解析的JSON中循环字典或列表

results = data['result']
r = []
for res in results:
    value = {}
    value['date']= res['T']
     # TODO: Get other values 
    r.append(value)

您可以使用熊猫:

import pandas as pd
...
df = pd.DataFrame.from_dict(data['result']) 
df.columns=['volume','close','max','min','open','date','last_column'] 
df.head()
输出:

      volume     close       max       min      open                 date  \
0  19.949007  0.056340  0.056560  0.056302  0.056340  2018-03-29T02:00:00   
1  28.811991  0.056302  0.056540  0.056301  0.056350  2018-03-29T02:30:00   
2  17.516028  0.056170  0.056488  0.056150  0.056302  2018-03-29T03:00:00   
3  33.393220  0.056030  0.056450  0.056020  0.056450  2018-03-29T03:30:00   
4  29.046574  0.055430  0.056140  0.055300  0.056030  2018-03-29T04:00:00   

   last_column  
0   354.123891  
1   511.145471  
2   311.468766  
3   594.549165  
4   521.328565  

这已经是解析字典的大部分有效Python代码。。。有什么问题吗?看来你有了numpy。。。。你也有熊猫吗?