数据可视化:CSV格式,JSON格式
下载CSV格式数据,进行可视化
- csv.reader()创建一个与文件有关联的阅读器(reader)对象,reader处理文件中的第一行数据,并将每一项数据都存储在列表中
- head_row = next(reader) 返回文件的下一行,CSV文件第一行为头文件
- datetime.strptime(row[0], '%Y-%m-%d-%H-%M-%S') 将字符串'2018-2-15-13-35-1'转换为一个表示日期时间的对象
- plt.text() 给图表添加注释,其中%.nf其中n表示显示小数后面几位,%b表示只标注y
- plt.annotate() 参数xytext表示偏移距离,%b表示只标注y
- fill_between()接受一个x值系列和两个Y值系列,并填充两个y值系列之间的空间,参数alpha值代表颜色透明度,默认1
参数facecolor代表填充颜色
- from datetime import datetime
- import matplotlib.pyplot as plt
- import csv
- import numpy as np
- with open('csv_file\photo.csv') as f_obj:
- reader = csv.reader(f_obj)
- dates,heights_1,heights_2 = [],[],[]
- for row in reader:
- try:
- height_1 = float(row[3])#将字符串转换为浮点型
- height_2 = float(row[4])
- # 将字符串'2018-2-15-13-35-1'转换为一个表示日期时间的对象
- date = datetime.strptime(row[0], '%Y-%m-%d-%H-%M-%S')
- except ValueError: #如果有哪一天的数据缺失,打印缺失日期
- print(date,'missing data.')
- else:
- # 将所有高程插入列表
- dates.append(date)
- heights_1.append(height_1)
- heights_2.append(height_2)
- fig = plt.figure(figsize=(12,8))
- plt.tick_params(axis='both',labelsize=14)
- #为防止x轴标签重叠,让日期型的x轴标签自动展现
- fig.autofmt_xdate(rotation=45)
- #在同一个窗口中绘制两条折线
- x = np.array(dates)
- y = np.array(heights_1)
- for a,b in zip(x,y):
- #用text()标注,%.nf其中n表示显示小数后面几位,%b表示只标注y
- plt.text(a,b+0.1,'%.2f'%b,ha = 'center',va = 'bottom',
- fontsize=8)
- #用annotate()标注,xytext表示偏移距离,%b表示只标注y
- #plt.annotate('%s'%b,xy=(a,b),xytext=(-20,10),
- #textcoords='offset points',fontsize=8)
- plt.plot(dates,heights_1,linewidth=3,c='c')
- x = np.array(dates)
- y = np.array(heights_2)
- for a,b in zip(x,y):
- plt.text(a, b + 0.1, '%.2f' % b, ha='center', va='bottom',
- fontsize=8)
- plt.plot(dates,heights_2,linewidth=3,c='red')
- #fill_between()接受一个x值系列和两个Y值系列,并填充两个y值系列之间的空间
- plt.fill_between(dates,heights_1,heights_2,facecolor='greenyellow',
- alpha=0.3)#alpha值代表颜色透明度,默认1
- plt.show()
下载JSON格式文件可视化
import json --读取,写入json文件
from pygal.style import RotateStyle,LightColorizedStyle,LightenStyle --定义地图样式
import pygal_maps_world.maps (import pygal.maps.world也可以)
from pygal_maps_world.i18n import COUNTRIES -- 获取两位国别码和国家名
wm=pygal_maps_world.maps.World() --定义一个世界地图实例
南北美洲所有国家的国别码:
wm.add('North America',['ca','mx','us'])
wm.add('Central America',['bz','cr','gt','hn','ni','pa','sv'])
wm.add('South America',['ar','bo','br','cl','co','ec','gf',
'gy','pe','py','sr','uy','ve'])
Pygal样式保存在模块style中:
RotateStyle:修改风格(通过调整指定颜色创建样式)
LightenStyle:轻盈风格(通过赋予特定的色彩来营造风格)
DarkenStyle:黑暗风格(通过使给定颜色变暗创建样式)
SaturateStyle:饱和风格(通过饱和给定颜色创建样式)
DesaturateStyle:去饱和风格(通过淡化给定颜色创建样式)
LightColorizedStyle:加亮颜色(通过加亮给定颜色创建样式)
RotateStyle('#336699')给三个分组调整颜色,十六进制的RGB颜色是一个以#开头的
字符串,后面6个字符分别表示红绿蓝三个颜色占的分量;hex color chooser-十六进制
颜色选择器;LightColorizedStyle 此类可单独使用,加亮地图颜色(包括整个图表的主题)
同时也可以放在RotateStyl()函数中传给实参base_style
- import json
- from pygal.style import RotateStyle,LightColorizedStyle
- #import pygal.maps.world
- import pygal_maps_world.maps
- from pygal_maps_world.i18n import COUNTRIES
- #定义一个获取两位国别码的函数
- def get_country_code(country_name):
- for code,name in COUNTRIES.items():
- if name == country_name:
- return code
- return None
- filename = 'json_file\population_data.json'
- with open(filename) as f:
- #将文件中的字典存储到列表中
- pop_data = json.load(f)
- #将每个国家2010年的人口数据加入字典
- cc_populations = {}
- for pop_dict in pop_data:
- if pop_dict['Year'] == '':
- country_name = pop_dict["Country Name"]
- population = int(float(pop_dict['Value']))
- code = get_country_code(country_name)
- if code:
- cc_populations[code] = population
- #print(code + ':' + str(population))
- else:
- print( 'Error - ' + country_name)
- #将世界人口数量等级分为三组
- cc_pops_1,cc_pops_2,cc_pops_3 = {},{},{}
- for cc,pop in cc_populations.items():
- if pop < 10000000:
- cc_pops_1[cc] = pop
- elif pop < 1000000000:
- cc_pops_2[cc] = pop
- else:
- cc_pops_3[cc] = pop
- #看看每组有多少个国家
- print(len(cc_populations),len(cc_pops_1),len(cc_pops_2),len(cc_pops_3))
- wm_style = RotateStyle('#336699',base_style=LightColorizedStyle)
- #wm = pygal.maps.world.World()
- wm = pygal_maps_world.maps.World(style=wm_style)
- wm.title = 'World Population in 2010,by Country'
- wm.add('0-10m',cc_pops_1)
- wm.add('10m-1bn',cc_pops_2)
- wm.add('>1bn',cc_pops_3)
- wm.render_to_file('images\world_population.svg')
数据可视化:CSV格式,JSON格式的更多相关文章
- CSV和JSON格式相互转换
1.为什么要进行CSV与JSON格式之间的转换 CSV格式常用于一二维数据表示和存储,他是一种纯文本形式存储表格数据的表示方式.JSON也可以表示一二维数据.在网络信息传输中,可能需要统一表示方式,因 ...
- ajax数据请求2(json格式)
ajax数据请求2(json格式) <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- 将csv导出json格式
将csv导出json格式 import os,csv,json cf = open('D:\OneDrive\\Tech\\Script\\Powershell_Script\\Uxin_work\\ ...
- (Spring4 json入门)Spring4+SpringMVC+页面数据发送与接收(json格式)
jar包(Maven仓库): Spring4 jar包(Maven仓库): 在测试过程中我查看了网上的一些教程,但是那些教程都是在Spring3环境下的,Spring3和Spring4解析json需要 ...
- c# json数据解析——将字符串json格式数据转换成对象
网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋 ...
- 数据库获取map数据后转化成json格式的数据
一,从数据库查出来的数据 两张表先各自左外连接,然后在相互左外连接查找省市县的数据(业务需求必须这样做,省市去的是第一张表,而市县取的是第二张表,两张表中间通过市的名字连接)见这个博文的最后一张图片 ...
- 获取一个表单字段中多条数据并转化为json格式
如图需要获取下面两个li标签里面的数据,然后传给后台:而后台接收的数据格式是json的,所以需要把两个li里面的信息转化为以下格式的. {recieverName:小红,recieverPhone:1 ...
- c# json数据解析——将字符串json格式数据转换成对象或实体类
网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋 ...
- OpenRefine导入CSV文件,数据清理后导出JSON格式
第一步:选择要转换的CSV文件. 第二步:选择以逗号分割,并创建项目. 第三步:编辑,去掉特殊字符 Edit Cells > Transform... 第四步:导出文件,选择“Templatin ...
- charles抓取线上接口数据替换为本地json格式数据
最近要做下拉刷新,无奈测试服务器的测试数据太少,没有足够的数据做下拉刷新,所以用charles抓取了测试服务器的接口,然后在伪造了很多数据返回到我的电脑上,下面来说说使用方法: 第一步: 安装FQ软件 ...
随机推荐
- 配置 Nginx 的目录浏览功能
Nginx 默认是不允许列出整个目录的,需要配置 Nginx 自带的 ngx_http_autoindex_module 模块实现目录浏览功能 . location / { alias /opt/fi ...
- jQuery校验文件格式及大小
一.html页面 <input type="file" name="file" id="uploadFileId" style=&qu ...
- Myeclipse--jBPM4.3插件
http://www.baidupcs.com/file/c7f3b8fc57b056567b37d081b1bcd21e?xcode=3966699596a0e8ec88581bd8407457f9 ...
- 从零开始学 Web 之 ES6(四)ES6基础语法二
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十一):服务网关(Zuul)
在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡 ...
- javaWeb代码工程统计
直接放在src/test/java包内运行 /** * 代码行数统计 * @author ThinkGem * @version 2014-7-22 */ public class CodeCount ...
- java反转链表
/** * 遍历,将当前节点的下一个节点缓存后更改当前节点指针 */ public static Node reverse2(Node head) { if (head == null) return ...
- 【杂谈】Starter Template
Spring Boot 项目与普通项目在包管理上的差别主要差别就是,Spring Boot在包管理上用了starter template,你应该经常看到xxx-starter这类的dependency ...
- Qt5——从零开始的学生管理系统
Qt教程——从零开始的学生管理系统(文件) 一.项目设计 1.需求分析 记录并处理学生成绩信息. 1)添加新的学生数据: 2)根据学号对已有的学生数据进行修改: 3)根据学号删除已存在的学生信息: 4 ...
- Java 8 新特性-菜鸟教程 (7) -Java 8 Nashorn JavaScript
Java 8 Nashorn JavaScript Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java ...