python3使用pyecharts绘制excel表格内数据图表

前序

这次在工作中需要对一个excel表格的数据进行可视化显示,但是数据有些不规则以及空白内容,所以做了一点简单的处理,利用python的pyecharts模块进行绘图并保存为html格式
上代码!

import xlrd
import re
from pyecharts import Bar,Pie#直方图/饼状图

data = xlrd.open_workbook("xywy.xlsx")#打开文件
table = data.sheets()[0]#取第一个sheet
print(table.nrows)#打印行号列号
print(table.ncols)

xdata =[]
temp = []
ydata =[]
man_num = 0
woman_num = 0
age_dic = {}
age_value = []
age_num = []
for i in range(0,24):#二十四小时时间
    xdata.append(i)
for i in range(1,table.nrows):
    if len(table.row_values(i)[4]) == 19:#取出时间信息
        time = int(table.row_values(i)[4][10:13])#去除小时位置
        temp.append(time)
    if len(table.row_values(i)[2]) == 1:#取出性别信息
        if table.row_values(i)[2] == "男":
            man_num += 1
        else:
            woman_num += 1
    if len(table.row_values(i)[3]) >= 1 and len(table.row_values(i)[3]) <= 4:#取出年龄信息
        age = table.row_values(i)[3]
        if "月" in age or "天" in age:#年龄信息内含有月和天的视为0岁
            if '0' in age_dic:
                age_dic[0] += 1
            else:
                age_dic[0] = 1
        else:
            linee = re.sub('[\u4e00-\u9fa5]','',age)#过滤汉字得到实际年龄数字
            if int(linee) in age_dic:
                age_dic[int(linee)] += 1
            else:
                age_dic[int(linee)] = 1
                
for i in range(0,24):#统计20小时出现次数
    num = temp.count(i)
    if num != 0:
        ydata.append(num)
    else:
        ydata.append(0)
a = sorted(age_dic.items(),key = lambda x:x[0])#排序年龄
print(a)
print("-----------------------")
age_dic.clear()
for i in range(0,len(a),1):
    print(type(a[i]))
    age_dic[a[i][0]] = a[i][1]
print(age_dic)
for key in age_dic.keys():
    age_value.append(key)
    age_num.append(age_dic[key])
#以下就是数据作为参数最后输出html
bar_time = Bar("问诊时间","24小时制")
bar_time.add("Time",xdata,ydata)
bar_time.render("output/time.html")

people_num = [man_num,woman_num]
sex = ["Man","Woman"]
Pie_sex = Pie("性别分类","男女")

Pie_sex.add("sex",sex,people_num,is_label_show=True)
Pie_sex.render("output/sex.html")

bar_age = Bar("年龄分布","岁")
bar_age.add("Age",age_value,age_num)
bar_age.render("output/age.html")

以上就是程序主体内容,最后得到了绘制结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后续记录

记录一些写代码时遇到的问题的记录tips:
1.过滤字符串中汉字

linee = re.sub('[\u4e00-\u9fa5]','',age)
#linee是返回字符串,re是正则表达式模块,age是原字符串

2.对字典进行排序

a = sorted(age_dic.items(),key = lambda x:x[0])#排序年龄
#此处根据字典的key排序返回到a中,返回值是元组

3.元组转字典

for i in range(0,len(a),1):
    print(type(a[i]))
    age_dic[a[i][0]] = a[i][1]
#通过循环元组逐个赋值

4.最后是pyecharts库注意版本问题,最新的版本写法和成员函数都不太一样,我这下载的是0.1.9.4

>>> import pyecharts
>>> pyecharts.__version__
'0.1.9.4'
>>> 
  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值