首页 > python3使用pyecharts绘制excel内数据图表
头像
橙木
编辑于 2020-12-07 11:30
+ 关注

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'
>>> 

全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

热门推荐