------来自百度百科
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
JSON最常用的格式是对象的 键值对。例如下面这样:
1
|
{"firstName": "Brett", "lastName": "McLaughlin"}
|
------参照Python编程从入门到实践(第三版)
------Python 3
------
一、下载json格式文件
书中介绍了两种下载方法,我用来requests的方法,(相对简单)
方法如下:
1.载入requests库 (如果没有需要先下载)import requests
2.设置url
3.使用requests.get(url)方法,向服务器发送请求,获取数据
4.写入文件
源码如下:
import requests
json_url = 'https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json'
req = requests.get(json_url)
#将数据写入文件
with open('btc_close_2017_request.json','w')as f:
f.write(req.text)
file_requests = req.json()
print(file_requests)
运行后,可以看到一大串键值对组成的字典。
二、提取数据
1.导入json模块
2.加载json文件
3.格式化打印
import json
#加载数据至列表
filename = 'btc_close_2017_request.json'
with open (filename) as f:
btc_data = json.load(f)
#打印每一天的消息
for btc_dict in btc_data:
date = btc_dict['date']
month = btc_dict['month']
week = btc_dict['week']
weekday = btc_dict['weekday']
close = btc_dict['close']
print("{} is month {} week {},{},the close price is {} RMB".format(date, month,week, weekday, close))
效果如下:
3.处理数据,将字符串转化成数字。
使用int()将字符串转化成整数
注意含小数点的字符串(此处为close)需要先转化成float,然后再转化成int.
4.绘制折线图
使用pygal
import json
import pygal
#加载数据至列表
filename = 'btc_close_2017_request.json'
with open (filename) as f:
btc_data = json.load(f)
dates =[]
months = []
weeks = []
weekdays =[]
close =[]
for btc_dict in btc_data:
dates.append(btc_dict['date'])
months.append(int(btc_dict['month']))
weeks.append(int(btc_dict['week']))
weekdays.append( btc_dict['weekday'])
close.append(int(float(btc_dict['close'])))
line_chart =pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
line_chart.title = ' 收盘价RMB '
line_chart.x_labels =dates
N = 20
line_chart.x_labels_major = dates[::N]
line_chart.add('收盘价', close)
line_chart.render_to_file('收盘价折线图.svg')
效果如下: