python pyecharts 对excel数据_python3使用pyecharts绘制excel内数据图表

本文介绍了如何使用Python的Pyecharts库对Excel数据进行处理和可视化,包括直方图和饼状图的绘制,以及数据清洗的过程。通过读取Excel文件,提取时间、性别和年龄信息,生成24小时问诊时间分布、性别分类和年龄分布的图表,并保存为HTML格式。
摘要由CSDN通过智能技术生成

前序

这次在工作中需要对一个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'

>>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值