JSON格式读取与可视化
一 JSON
JSON(JavaScript Object Notation),json本来是用于js的一种文件格式,后来这种文件格式得到普及,其他语言也开始接受这种文件格式。
举个🌰,就是这个亚子。类似于列表,而列表里面的元素都是字典的形式。
[{
“date”: “2017-01-01”,
“month”: “01”,
“week”: “52”,
“weekday”: “Sunday”,
“close”: “6928.6492”
},
{
“date”: “2017-01-02”,
“month”: “01”,
“week”: “1”,
“weekday”: “Monday”,
“close”: “7070.2554”
}]
二 下载JSON格式文件
1.利用request下载
import json
import requests
json_url ='https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json'
# 文件所在的网址
req = requests.get(json_url
)#下载json文件数据到本地
with open('btc_close_2017.json', 'w') as f:
f.write(req.text)
# 读取文本,并写入我们创建的文件中
file_requests = req.json()
# 将req转化为json格式
print(type(file_requests))#下载后依然是列表
2 利用urlopen下载
from __future__ import (absolute_import, division, print_function, unicode_literals)
from urllib.request import urlopen
#调用urlopen函数
import json
json_url = 'https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json'
reponse = urlopen(json_url)
req = reponse.read()# 下载数据
with open('btc_close_2017.json', 'wb') as f:
f.write(req)# 写入
file = json.loads(req)#格式转换
3 手动操作(手动狗头)
将文件下载后移到脚本所在的文件夹中
with open('btc_close_2017.json','r') as f:
file = json.load(f)
个人觉得方法一更简便一点- -)
三 数据的读取
import json
import pygal
#弄几个空列表储存一下数据
dates = []
months = []
weeks = []
weekdays = []
closes = []
with open('btc_close_2017.json') as f:
j = json.load(f)
for data in j:
# 这一块是可以省略着写,根据键来寻找相应的对
date = data['date']
month = int(data['month'])
week = int(data['week'])
weekday = data['weekday']
close = float(data['close'])# 注意数据类型
dates.append(date)
months.append(month)
weeks.append(week)
closes.append(close)
四 数据的可视化
通过python中的pygal库实现可视化
line_chart = pygal.Line(x_label_rotation=20, show_minor_x_labels=False)
# 前面是x轴的旋转程度
line_chart.title = '收盘价¥'
line_chart.x_labels = dates
# x轴的坐标是date
N=20 # 每隔20天取一次
line_chart.x_labels_major = dates[::N]
line_chart.add('收盘价', closes)
line_chart.render_to_file('收盘价折线图(¥).svg')