python从入门到实践:JSON格式

python从入门到实践:JSON格式

本题目来自:《python编程:从入门到实践》(偷偷告诉你:这是本好书,小白入门python推荐)

准备阶段:

数据来源:https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json

运用到的工具:python爬虫,pygal

主要的步骤是:下载数据——对数据进行分类储存——将数据在图表中体现

主要库的导入

import urllib.request
import json
import pygal
import math

下载数据:

json_url = "https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json"
req = urllib.request.urlopen(json_url)
json = req.read()#将数据写入文件
with open("E://Jupyter.json","wb") as f:
    f.write(json)

将下载的数据进行分类储存:

filename = "E://Jupyter.json"
with open(filename) as f:
    btc_data = json.load(f)
打印每一天的信息(获取数据过程)
for btc_dict in btc_data:
   data = btc_dict["date"]
   month = int(btc_dict["month"])
   week = int(btc_dict["week"])
   weekday = btc_dict["weekday"]
   close = int(float(btc_dict["close"]))
   print("{} is month {} week {},{},the close price is {}RMB".format(data,month,weekday,weekday,close))#将每个数据打印出来,后续可以不要

到这里为止,如过前两步操作成功的话,我们可以将,前两步取代

绘制图像

dates = []
month = []
weeks = []
weekdays = []
close = []
#每一天信息
for btc_dict in btc_data:
    dates.append(btc_dict["date"])
    month.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 = True)#此处是将x轴的坐标旋转20度,以及不用显示x轴的标签
line_chart.title = "收盘价"
line_chart.x_label = dates
N = 20 #x轴每隔20天显示一次
line_chart.x_labels_major = dates[::N]
close_log = [math.log10(_) for _ in close]#此处是将数据经行对数化
line_chart.add("收盘价",close_log)
line_chart.render_to_file("收盘对数变换价折现图.svg")

最终的程序:

import urllib.request
import json
import pygal
import math
filename = "E://Jupyter.json"
with open(filename) as f:
    btc_data = json.load(f)
dates = []
month = []
weeks = []
weekdays = []
close = []
#每一天信息
for btc_dict in btc_data:
    dates.append(btc_dict["date"])
    month.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 = True)
line_chart.title = "收盘价"
line_chart.x_label = dates
N = 20 #x轴每隔20天显示一次
line_chart.x_labels_major = dates[::N]
close_log = [math.log10(_) for _ in close]
line_chart.add("收盘价",close_log)
line_chart.render_to_file("收盘对数变换价折现图.svg")

附图:

本文后期会不断的更新,为了收到第一消息,望收藏,点赞

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值