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编写android截屏脚本双击运行即可
Jul 21 Python
Python中zip()函数用法实例教程
Jul 31 Python
Python的语言类型(详解)
Jun 24 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
Python下载网络小说实例代码
Feb 03 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
Python删除n行后的其他行方法
Jan 28 Python
详解Python:面向对象编程
Apr 10 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 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关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
Python实现网站文件的全备份和差异备份
2014/11/30 Python
如何在Python中编写并发程序
2016/02/27 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python实现简易版计算器
2020/06/22 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
戴森香港官方网站:Dyson香港
2021/02/11 全球购物
.NET方向面试题
2014/11/20 面试题
卫校毕业生自我鉴定
2013/10/31 职场文书
和解协议书
2014/04/16 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
平面设计师岗位职责
2014/09/18 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
史上最牛的辞职信
2015/02/28 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫