python绘图pyecharts+pandas的使用详解


Posted in Python onDecember 13, 2020

pyecharts介绍

pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒

为避免绘制缺漏,建议全部安装

为了避免下载缓慢,作者全部使用镜像源下载过了

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-countries-pypkg
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-china-provinces-pypkg
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-china-cities-pypkg
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-china-counties-pypkg
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-china-misc-pypkg
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-united-kingdom-pypkg

python绘图pyecharts+pandas的使用详解 

基础案例

from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(['小嘉','小琪','大嘉琪','小嘉琪'])
bar.add_yaxis('得票数',[60,60,70,100])
#render会生成本地HTML文件,默认在当前目录生成render.html
# bar.render()
#可以传入路径参数,如 bar.render("mycharts.html")
#可以将图形在jupyter中输出,如 bar.render_notebook()
bar.render_notebook()

python绘图pyecharts+pandas的使用详解

from pyecharts.charts import Bar
from pyecharts import options as opts

# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data1 = [123, 153, 89, 107, 98, 23]
data2 = [56, 77, 93, 68, 45, 67]

# 1.x版本支持链式调用
bar = (Bar()
    .add_xaxis(cate)
    .add_yaxis('渠道', data1)
    .add_yaxis('门店', data2)
    .set_global_opts(title_opts=opts.TitleOpts(title="示例", subtitle="副标"))
   )
bar.render_notebook()

python绘图pyecharts+pandas的使用详解

from pyecharts.charts import Pie
from pyecharts import options as opts

# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data = [153, 124, 107, 99, 89, 46]

pie = (Pie()
    .add('', [list(z) for z in zip(cate, data)],
      radius=["30%", "75%"],
      rosetype="radius")
    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例", subtitle="我是副标题"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
   )

pie.render_notebook()

python绘图pyecharts+pandas的使用详解

from pyecharts.charts import Line
from pyecharts import options as opts

# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data1 = [123, 153, 89, 107, 98, 23]
data2 = [56, 77, 93, 68, 45, 67]

"""
折线图示例:
1. is_smooth 折线 OR 平滑
2. markline_opts 标记线 OR 标记点
"""
line = (Line()
    .add_xaxis(cate)
    .add_yaxis('电商渠道', data1, 
         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
    .add_yaxis('门店', data2, 
         is_smooth=True, 
         markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name="自定义标记点", 
                                       coord=[cate[2], data2[2]], value=data2[2])]))
    .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例", subtitle="我是副标题"))
   )

line.render_notebook()

python绘图pyecharts+pandas的使用详解

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType
import random

province = ['福州市', '莆田市', '泉州市', '厦门市', '漳州市', '龙岩市', '三明市', '南平']
data = [(i, random.randint(200, 550)) for i in province]

geo = (Geo()
    .add_schema(maptype="福建")
    .add("门店数", data,
      type_=ChartType.HEATMAP)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
      visualmap_opts=opts.VisualMapOpts(),
      legend_opts=opts.LegendOpts(is_show=False),
      title_opts=opts.TitleOpts(title="福建热力地图"))
   )

geo.render_notebook()

python绘图pyecharts+pandas的使用详解

python绘图pyecharts+pandas的使用详解

啊哈这个还访问不了哈

ImportError: Missing optional dependency ‘xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.

python绘图pyecharts+pandas的使用详解

python绘图pyecharts+pandas的使用详解

20200822pyecharts+pandas 初步学习

作者今天学习做数据分析,有错误请指出
下面贴出源代码

# 获取数据
import requests
import json
china_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
#foreign_url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_foreign'
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36 Edg/84.0.522.59',
  'referer': 'https://news.qq.com/zt2020/page/feiyan.htm'
}
#获取json数据
response = requests.get(url=china_url,headers=headers).json()

print(response)
#先将json数据转 python的字典
data = json.loads(response['data'])

#保存数据 这里使用encoding='utf-8' 是因为作者想在jupyter上面看
with open('./国内疫情.json','w',encoding='utf-8') as f:
  #再将python的字典转json数据
  # json默认中文以ASCII码显示 在这里我们以中文显示 所以False
  #indent=2:开头空格2 

  f.write(json.dumps(data,ensure_ascii=False,indent=2))

转换为json格式输出的文件

python绘图pyecharts+pandas的使用详解

# 将json数据转存到Excel中
import pandas as pd
#读取文件
with open('./国内疫情.json',encoding='utf-8') as f:
  data = f.read()
  
#将数据转为python数据格式
data = json.loads(data)
type(data)#字典类型
lastUpdateTime = data['lastUpdateTime']
#获取中国所有数据
chinaAreaDict = data['areaTree'][0]
#获取省级数据
provinceList = chinaAreaDict['children']
# 获取的数据有几个省市和地区
print('数据共有:',len(provinceList),'省市和地区')
#将中国数据按城市封装,例如【{湖北,武汉},{湖北,襄阳}】,为了方便放在dataframe中
china_citylist = []
for x in range(len(provinceList)):
  # 每一个省份的数据
  province =provinceList[x]['name']
  #有多少个市
  province_list = provinceList[x]['children']
  
  for y in range(len(province_list)):
    # 每一个市的数据
    city = province_list[y]['name']
    # 累积所有的数据
    total = province_list[y]['total']
    # 今日的数据
    today = province_list[y]['today']
    china_dict = {'省份':province,
           '城市':city,
           'total':total,
           'today':today
           }
    china_citylist.append(china_dict)


chinaTotaldata = pd.DataFrame(china_citylist)
nowconfirmlist=[]
confirmlist=[]
suspectlist=[]
deadlist=[]
heallist=[]
deadRatelist=[]
healRatelist=[]

# 将整体数据chinaTotaldata的数据添加dataframe
for value in chinaTotaldata['total'] .values.tolist():#转成列表
  confirmlist.append(value['confirm'])
  suspectlist.append(value['suspect'])
  deadlist.append(value['dead'])
  heallist.append(value['heal'])
  deadRatelist.append(value['deadRate'])
  healRatelist.append(value['healRate'])
  nowconfirmlist.append(value['nowConfirm'])
  
chinaTotaldata['现有确诊']=nowconfirmlist  
chinaTotaldata['累计确诊']=confirmlist
chinaTotaldata['疑似']=suspectlist
chinaTotaldata['死亡']=deadlist
chinaTotaldata['治愈']=heallist
chinaTotaldata['死亡率']=deadRatelist
chinaTotaldata['治愈率']=healRatelist

#拆分today列
today_confirmlist=[]
today_confirmCutlist=[]

for value in chinaTotaldata['today'].values.tolist():
  today_confirmlist.append(value['confirm'])
  today_confirmCutlist.append(value['confirmCuts'])
chinaTotaldata['今日确诊']=today_confirmlist
chinaTotaldata['今日死亡']=today_confirmCutlist

#删除total列 在原有的数据基础
chinaTotaldata.drop(['total','today'],axis=1,inplace=True)

# 将其保存到excel中
from openpyxl import load_workbook
book = load_workbook('国内疫情.xlsx')
# 避免了数据覆盖
writer = pd.ExcelWriter('国内疫情.xlsx',engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title,ws) for ws in book.worksheets)
chinaTotaldata.to_excel(writer,index=False)
writer.save()
writer.close()

chinaTotaldata

python绘图pyecharts+pandas的使用详解

python绘图pyecharts+pandas的使用详解

python绘图pyecharts+pandas的使用详解

python绘图pyecharts+pandas的使用详解

作者这边还有国外的,不过没打算分享出来,大家就看看,总的来说我们国内情况还是非常良好的

python绘图pyecharts+pandas的使用详解

到此这篇关于python绘图pyecharts+pandas的使用详解的文章就介绍到这了,更多相关pyecharts pandas使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中用Ctrl+C终止多线程程序的问题解决
Mar 30 Python
Python中为什么要用self探讨
Apr 14 Python
python不换行之end=与逗号的意思及用途
Nov 21 Python
Python实现的购物车功能示例
Feb 11 Python
python+opencv实现霍夫变换检测直线
Oct 23 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
Django model select的多种用法详解
Jul 16 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
Python list与NumPy array 区分详解
Nov 06 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
Python celery原理及运行流程解析
Jun 13 Python
Pandas对每个分组应用apply函数的实现
Dec 13 #Python
python安装及变量名介绍详解
Dec 12 #Python
在python中对于bool布尔值的取反操作
Dec 11 #Python
python 基于opencv 绘制图像轮廓
Dec 11 #Python
python通过cython加密代码
Dec 11 #Python
python 对象真假值的实例(哪些视为False)
Dec 11 #Python
Python排序函数的使用方法详解
Dec 11 #Python
You might like
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
javascript比较文档位置
2008/04/08 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
详解参数传递四种形式
2015/07/21 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
工商学院毕业生自荐信
2013/11/12 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏
python实现双向链表原理
2022/05/25 Python