数据可视化-制作交易收盘价

思路:从网上下载json格式的文件----→先打开json格式的文件,储存月份、日期、星期等的数据----→建立收盘价折线图和收盘价对数变换折线图----→为做时间序列分析数据,先进行封装函数----→做按月份、按周期、按星期的对应图----→最后做数据仪表盘

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 = 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))#创建5个列表,分别存储日期和收盘价
dates = []
months = []
weeks = []
weekdays = []
close = []
for btc_dict in btc_data:dates.append(btc_dict['date'])months.append(btc_dict['month'])weeks.append(int(btc_dict['week']))weekdays.append(btc_dict['weekday'])close.append(int(float(btc_dict['close'])))import pygalline_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('收盘价', close)
line_chart.render_to_file('收盘价折线图(¥).svg')import pygal
import mathline_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]
close_log = [math.log10(_) for _ in close]
line_chart.add('log收盘价', close_log)
line_chart.render_to_file('收盘价对数变换折线图(¥).svg')from itertools import groupbydef draw_line(x_data, y_data, title, y_legend):xy_map = []for x, y in groupby(sorted(zip(x_data, y_data)), key=lambda _: _[0]):y_list = [v for _, v in y]xy_map.append([str(x), sum(y_list) / len(y_list)])#(x, x月的每日均值)x_unique, y_mean = [*zip(*xy_map)]line_chart = pygal.Line()line_chart.title = titleline_chart.x_labels = x_uniqueline_chart.add(y_legend, y_mean)line_chart.render_to_file(str(title)+' .svg')return line_chartidx_month = dates.index('2017-12-01')
line_chart_month = draw_line(months[:idx_month], close[:idx_month], '收盘价月日均值(¥)',  '月日均值')
line_chart_monthidx_week = dates.index('2017-12-11')
line_chart_week = draw_line(weeks[1:idx_week], close[1:idx_week], '收盘价周日均值(¥)', '周日均值')
line_chart_weekidx_week = dates.index('2017-12-11')
wd = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
weekdays_int = [wd.index(w) + 1 for w in weekdays[1:idx_week]]
line_chart_weekday = draw_line(weekdays_int, close[1:idx_week], '收盘价星期均值', '星期均值')
line_chart_weekday.x_labels = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']with open('收盘价Dashboard.html', 'w',encoding='utf8') as html_file:html_file.write('<html><head><title>收盘价Dashboard</title><metacharset="utf8"></head><body>\n')for svg in ['收盘价折线图(¥).svg', '收盘价对数变换折线图(¥).svg', '收盘价月日均值(¥).svg', '收盘价周日均值(¥).svg', '收盘价星期均值(¥).svg']:html_file.write('  <object type="image/svg+xml"data="{0}" height=500></object>\n'.format(svg))html_file.write('</body></html>')

最后生成5张图:

收盘价对数变换折线图为:

收盘价星期均值为:

收盘价月日均值:

收盘价折线图:

收盘价周日均值:

收盘价Dashboard:

过程中遇到的难点:
函数:以作月日均值为例
sorted(zip(x_data,y_data)返回一个排序后的元组列表为[(1,5383),(1,5566)…(1,7070)…(11,65583)]
lambda是隐形函数,key = lambda_: [0]是按元组中的第一个元素分组,[1]的话是按第二个元素分组
groupby()进行分组,key = lambda
: _[0]代表:按照元组列表中的第一个元素进行分类,可被分成11组,x为1~11月份,y是对应的元组,即:
1[(1,5383),(1,5566)…(1,7835)]
2[(2,6793),(2,6811)…(2,8076)]依次类推

数据可视化-制作交易收盘价相关推荐

  1. 数据可视化制作工具推荐

    转载自:http://www.itongji.cn/article/03111L42013.html [编者注] 数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息. 下面是@数据化管理 老 ...

  2. Python之基础详解(八):必备,以制作交易收盘价走趋图为例,来可视化处理json格式的文件

    在这里,我们将会用json模块来处理json格式文件.Pygal提供了一个适合初学者使用的绘图工具,我们在这里将使用它来对收盘价数据进行可视化,以帮助我们掌握基础技能.(本文所需要的文件都在资源中,记 ...

  3. 3D物联网大数据可视化制作平台

    大数据3D可视化产业正在用一个超乎我们想象的速度蓬勃发展,随着3D物联网大数据时代的来临,商迪3D身为拥有前沿3D物联网技术的我们,也要紧跟科技时代的步伐为各大企业打造优秀的信息数据库.3D物联网大数 ...

  4. Python 将JSON格式文件进行数据可视化制作世界人口地图

    (一) 制作世界人口地图:JSON格式 下载JSON格式的人口数据,并使用json模块来处理它,Pygal提供一个适合初学者使用的地图创建工具,使用它来对人口数据进行可视化,用来探索全球人口的分布情况 ...

  5. Python项目之制作交易收盘价走势图内的知识点总结

    1. 关于zip()与*zip() 简单例子 a = [1,2,3] b = [4,5,6] >>> print(zip(a,b))// 这里是不显示结果的,要想显示结果 需要加* ...

  6. 数据可视化:处理json文件

    来源:<Python编程:从入门到实践> 文章目录 1 制作交易收盘价走势图:JSON格式 1.1 下载收盘价数据 1.2 提取相关的数据 1.3 将字符串转换为数字值 1.4 绘制收盘价 ...

  7. 30个数据可视化小技巧(文末赠书)

    和数据打交道的朋友肯定经常会通过可视化的方式来呈现数据.在这里小编给大家总结了数据可视化制作的30个小技巧,通过列举一些容易被忽略的常见错误,希望最终能够快速提升和巩固你的可视化制作水平(来源:Dat ...

  8. 五分钟让你的数据动起来,动态数据可视化极简教程

    之前发了一条动态数据可视化的视频,有很多朋友来咨询怎么制作的,其实制作过程难度不大,上手很快,特地为大家整理了一篇制作教程,五分钟让你的数据动起来! 为什么做动态数据可视化? 动态数据可视化主要应用的 ...

  9. 天天在做的数据可视化,才是企业数字化转型的关键

    在疫情期间,数字化时代加速到来,大多数企业还没有完全准备好数字化转型,就已经被甩到了身后. 随着数字经济成为社会经济中心中的一环,数据已经变成了事实上的社会组成元素.借助大量数据,企业可以对几乎所有业 ...

  10. Excel实现数据可视化

    Excel实现数据可视化 文章目录 Excel实现数据可视化 制作气象站气温变化折线图 知识点: 新建文件夹及excel表格 制作气象站气温变化折线图 背景: 一天的天气变幻莫测,早晚温差也很大,因此 ...

最新文章

  1. 锚杆拉拔试验弹性模量计算_土钉、锚杆拉拔试验检测方案 - 图文 -
  2. 超图桌面版新建一个简单三维数据集并发布
  3. vs code python_用VScode配置Python开发环境
  4. Python正则表达式初识(九)
  5. 20051129: NetBeans
  6. Linux下SVN 命令操作手册
  7. 计算机组装与维护word,计算机组装与维护实训报告
  8. springboot GeoLite2-City.mmdb实现通过IP地址获取经纬度以及该IP的所属地区
  9. ANDROID仿淘宝商品浏览滑(拖)动查看详情界面
  10. Android Paint 详细讲解
  11. mysql 视图创建与查询数据库作业(10)
  12. 哦,梦想--我的语录
  13. Android8.0适配问题java.lang.IllegalStateException: Only fullscreen opaque activities can request orie…
  14. java大作穿越arpg_动作与角色扮演完美结合 精品ARPG游戏盘点
  15. 基于Java的vtt转txt程序
  16. 2017南京大学计算机考研复试分,2018.的南大复试考生,:2017南京大学中国古代史考研复试经...
  17. 简明python学习笔记—基本概念
  18. unity导入的模型的贴图十分暗看不清
  19. 如何将文件重置或恢复到特定版本?
  20. Win7目前支持哪些游戏

热门文章

  1. vba 汉字转拼音 -- wps office
  2. 用matplotlib中的FuncAnimation()实现GDP世界排名动态图
  3. centos7上安装Crucible教程及出现问题的解决
  4. (OK) MIMP - 18 ( 5 nodes) - 抓包-缺少 MPTCP-JION - 分析 mptcp-kmsg-client-5-nodes-no-ping.txt
  5. 使用-OB-ODC连接OceanBase数据库与模拟数据功能使用
  6. springboot项目在服务器怎么启动,springboot在服务器上启动的几种方式,亲测通过!...
  7. 2011 imac 固态_老款iMac 安装SSD固态硬盘
  8. 电商平台违规“二清”,将面临哪些处罚?
  9. 赵小楼《天道》《遥远的救世主》深度解析(109)天下乌鸦一般黑,不要幻想
  10. 计算机室英语单词怎么读,计算机英语单词怎么读