数据可视化学习--------------------下载数据(二)

上章是讲得csv,这节是json

1.如何下载数据:

以下代码是利用模块urllib函数urlopen()下载数据

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from __future__ import (absolute_import,division,print_function,unicode_literals)
try:
	from urllib2 import urlopen
except ImportError:
	from urllib.request import urlopen
import json
json_url='https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json'
response=urlopen(json_url)
#读取数据
req=response.read()
#将数据写入文件
with open('btc_close_2017_urllib.json','wb') as f:
	f.write(req)
	#加载json格式
file_urllib=json.loads(req)
print(file_urllib)

还可以使用第三模块request。

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
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.txt)
file_requests=req.json()

提取相关的数据:

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import json
filename='btc_close_2017.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))

导入json模块,打开文件,把数据加载在btc_data里,遍历它 

将字符型装变为数字值:

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import json
filename='btc_close_2017.json'
with open(filename) as f:
	btc_data=json.load(f)
#打印每天的消息
for btc_dict in btc_data:
	date=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(date,month,week,weekday,close))

绘制折线图:

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import json
import pygal
filename='btc_close_2017.json'
with open(filename) as f:
	btc_data=json.load(f)
#打印每天的消息
dates=[]
months=[]
weeks=[]
weekdays=[]
closes=[]

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'])
	closes.append(int(float(btc_dict['close'])))


#可视化处理
line_chart=pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
line_chart.title='收盘价'
line_chart.x_labels=dates
N=20#x轴每隔20天显示一次
line_chart.x_labels_major=dates[::N]
line_chart.add('收盘价',closes)
line_chart.render_to_file("收盘价折线图.svg")

 再对数据进行数学分析,找找规律

对数据进行线性分析,做对数变换

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import json
import pygal
import math

filename='btc_close_2017.json'
with open(filename) as f:
	btc_data=json.load(f)
#打印每天的消息
dates=[]
months=[]
weeks=[]
weekdays=[]
closes=[]

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'])
	closes.append(int(float(btc_dict['close'])))


#可视化处理
line_chart=pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
line_chart.title='收盘价对数变换'
line_chart.x_labels=dates
N=20#x轴每隔20天显示一次
line_chart.x_labels_major=dates[::N]
closes_log=[math.log10(_) for _ in closes]
line_chart.add('log收盘价',closes_log)
line_chart.render_to_file("收盘价折线图.svg")

猜你喜欢

转载自blog.csdn.net/shinhwa96/article/details/84798166
今日推荐