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抓取网页内容示例分享
Feb 24 Python
Python中的闭包详细介绍和实例
Nov 21 Python
python的else子句使用指南
Feb 27 Python
对Python的Django框架中的项目进行单元测试的方法
Apr 11 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
Python实现发送QQ邮件的封装
Jul 14 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
django允许外部访问的实例讲解
May 14 Python
python 提取key 为中文的json 串方法
Dec 31 Python
关于sys.stdout和print的区别详解
Dec 05 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 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之第八天
2006/10/09 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
javascript事件问题
2009/09/05 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
使用python实现名片管理系统
2020/06/18 Python
外贸采购员求职的自我评价
2013/11/26 职场文书
英文自我鉴定
2013/12/10 职场文书
财务会计专业求职信范文
2013/12/31 职场文书
《手指教学》反思
2014/02/14 职场文书
低碳环保倡议书
2014/04/14 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
销售员自我评价
2015/03/11 职场文书
老人院义工活动感想
2015/08/07 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server