admin管理员组文章数量:1609646
前序
这次在工作中需要对一个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'
>>>
版权声明:本文标题:python3使用pyecharts绘制excel表格内数据图表 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728571641a1164258.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论