JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
JSON最常用的格式是对象的 键值对。例如下面这样:
1 |
|
------参照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')
效果如下: