要求:

从网上下载数据,并对这些数据进行可视化。

以两种常见格式存储的数据:

CSV、JSON

CSV格式数据的处理:

要在文本文件中存储数据,最简单的方式是将数据作为一系列以逗号分隔的值(CSV)写入文件。

Example 1:处理锡特卡的天气数据

import csvfrom matplotlib import pyplot as plt
from datetime import datetime#从文件中获取日期、最高气温、最低气温
filename = 'sitka_weather_2014.csv'
with open(filename) as f:reader = csv.reader(f) #创建一个阅读器对象header_row = next(reader) #next()返回文件中的下一行"""#我们对列表调用了enumerate()来获取每个元素的索引及其值for index, colom_header in enumerate(header_row):print(index, colom_header)"""dates, highs, lows =[], [], []for row in reader:#创建一个日期对象current_date = datetime.strptime(row[0], "%Y-%m-%d")dates.append(current_date)high = int(row[1])highs.append(high)low = int(row[3])lows.append(low)print(highs)#根据数据绘制图形
fig = plt.figure(figsize=(10,6))
plt.plot(dates, highs, c='red', alpha=0.5)
plt.plot(dates, lows, c='blue', alpha=0.5)
"""
给图表区域着色,接受一个x和两个y,填充两个y之间的区域
alpha指定颜色透明度,0表示完全透明,1(默认)表示完全不透明
"""
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)#设置图形的格式
plt.title("Daily high and low temperatures - 2014", fontsize=24)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate() #绘制斜的日期,避免重叠
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)plt.show()

Example 2:绘制图像时错误检查

处理死亡谷的天气数据。

发现运行时出现了一个错误。Python无法处理某一天的最高气温,因为它无法将空字符串(’ ')转换为整数。

    for row in reader:#处理异常try:current_date = datetime.strptime(row[0], "%Y-%m-%d")high = int(row[1])low = int(row[3])except ValueError:print(current_date, 'missing data')else:dates.append(current_date)highs.append(high)lows.append(low)

Example 3:制作交易收盘价走势图:JSON格式

import json
import pygal#将数据加载到一个列表中
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))#创建5个列表,分别存储日期和收盘价
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'])))"""
x_label_rotation=20让x轴上的日期标签顺时针旋转20度
show_minor_x_labels告诉图形不用显示所有的x轴标签
"""
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('收盘价', close)
line_chart.render_to_file('收盘价折线图($).svg')

时间序列特征初探:

进行时间序列分析总是期望发现趋势,周期性和噪声,从而能够描述事实,预测未来,做出决策。

对数变换:

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]
close_log = [math.log10(_) for _ in close]
line_chart.add('log收盘价', close_log)
line_chart.render_to_file('收盘价对数变换折线图($).svg')

收盘价均值+数据仪表盘

import json
import pygal
import math
from itertools import groupby#将数据加载到一个列表中
filename = 'btc_close_2017.json'
with open(filename) as f:btc_data = json.load(f)#创建5个列表,分别存储日期和收盘价
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'])))def 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([x, sum(y_list) / len(y_list)])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(title + '.svg')return line_chartidx_month = dates.index('2017-12-01')
line_chart_month = draw_line(months[:idx_month], close[:idx_month], '收盘价月日均值($)', '月日均值')idx_week = dates.index('2017-12-11')
line_chart_week = draw_line(weeks[1:idx_week], close[1:idx_week], '收盘价周日均值($)', '周日均值')idx_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 = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
line_chart_weekday.render_to_file('收盘价星期均值($).svg')#数据仪表盘
with open('收盘价Dashboard.html', 'w', encoding='utf8') as html_file:html_file.write('<html><head><title>收盘价Dashboard</title><meta charset="utf-8"></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>')


Python 数据可视化 下载数据相关推荐

  1. Python 数据可视化—下载数据(CSV文件格式、JSON格式)

    Python 数据可视化-下载数据CSV文件格式.JSON格式 网上下载数据,并对这些数据进行可视化,可视化以两种常见格式存储的数据:CSV 和JSON. 我们将使用Python模块csv 来处理以C ...

  2. python利用tushare下载数据并计算当日收益率

    python利用tushare下载数据并计算当日收益率 计算股票收益率的程序主要有以下几部分构成: 1.获取股票接口数据函数:pro_daily_stock() 2.计算收益率函数:cal_stock ...

  3. python可视化的优势_「数据可视化」数据可视化的优势有哪些?

    数据可视化的优势有哪些?大数据可视化的实际意义是协助人更强的分析数据,信息内容的品质挺大水平上取决于其表达形式.对大数字列举所构成的数据信息中所包括的实际意义开展剖析,使剖析結果数据可视化. 实际上大 ...

  4. 什么是数据可视化,数据可视化有什么价值

    "数据可视化"这个词看上去似乎让人有点摸不着头脑,但其实在实际生活中也有类似的应用. 举个例子,媒婆给你介绍对象,前面给你铺垫一堆,如五官端正.身材修长.皮肤雪白(各种繁杂的信息描 ...

  5. MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测

    MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...

  6. Tikz作图教程:pgfplots宏包二维数据可视化的数据导入方法

    pgfplots 绘图思想简介 下面一段介绍来自pgfplots说明文档的引言部分,它对pgfplots的绘图思想作了清晰地描述: 科研工作者在交流研究结果.论文时,将数据可视化往往是必要和方便的. ...

  7. python学习之下载数据可视化(一)

    本文地址https://blog.csdn.net/sidens/article/details/80710006,转载请说明 使用网上下载的CSV文件,利用matplotlib生成可视化图表 以下代 ...

  8. python交互式数据可视化_python数据可视化工具

    熟知python的人都知道,python上常用的一款数据可视化工具是Matplotlib,但是Matplotlib是静态的.那么,Python中除了matplotlib外,还有哪些数据可视化工具呢?其 ...

  9. python怎么实现数据可视化_数据之美,python实现数据可视化!

    我们这次主要用到两个库来画图,Matplotlib 库和 seaborn 库. 我们先要安装这两个库,分别用 pip 命令安装即可. pip install matplotlib pip instal ...

  10. 属于python应用领域的有数据可视化_Python数据可视化

    译者序 前 言 第1章 数据可视化概念框架1 1.1 数据.信息.知识和观点2 1.1.1 数据2 1.1.2 信息2 1.1.3 知识3 1.1.4 数据分析和观点3 1.2 数据转换4 1.2.1 ...

最新文章

  1. repo file=sys.stderr 错误解决
  2. 查找数据挖掘的相关资料
  3. 体重 年龄 性别 身高 预测鞋码_【新手扫盲】身高体重性别年龄身体素质影响玩滑板吗?...
  4. 私有private成员和保护protected成员的区别
  5. 【资讯】2017年最好的25大发明,你最钟爱哪个?
  6. c# uwp html源码,C#UWP使用Microsoft Edge打开Web URL
  7. 基于DIou改进的YOLOv3目标检测
  8. document.getElementById() 的作用
  9. html打印表格样式,HTML打印表格
  10. Could not find a version that satisfies the requirement PyQt5-Qt5>=5.15.2 (from pyqt5) (from version
  11. 希尔密码_密码学中的希尔密码
  12. SSH框架之理解Spring的IOC反转控制DI依赖注入--入门小实例
  13. 七里香计算机音乐谱子,七里香(改编自《新经典》)
  14. coward的个人简介
  15. BIOS追code之SEC phase
  16. 分布式事务(三):分布式事务解决方案之TCC(Try、Confirm、Cancel)
  17. android+酷炫动画效果,Android简单酷炫点击动画(附源码)
  18. mysql 根据分数分等级_数分面试-SQL篇
  19. Java简单的身份证枚举器
  20. 计算机硬件维护的注意事项有哪些,计算机的硬件维护注意事项

热门文章

  1. 数字图像处理——灰度级、动态范围、对比度
  2. Error response from daemon: Container XXX is restarting, wait until the container is running
  3. 交换安全(局域网安全)
  4. 几个炫酷且实用的CSS动画效果
  5. 多个mysql共存_双mysql共存(MySQL8.0与MySQL5.7)
  6. [SIGMOD 2021] SharPer: Sharding Permissioned Blockchains Over Network Clusters
  7. 巴西柔术的原理和技术
  8. Win10系统自带的备份,恢复功能
  9. 如何获取微信小店小程序的AppID
  10. 跟我一起水疗的哥俩儿,其实挺猛的!