前言
最近B站百大up揭晓了,想用爬虫抓点数据对数据进行分析并进行可视化。
Mac用matplotlib画图一直有中文乱码的问题,所以干脆用pyecharts了。但是感觉这个库也有“bug”。就是莫名其妙的就会出现控制台打印有数据。把数据原封不动的复制到相应的图表中也可以正常显示,但是把结果直接赋值给pyecharts就没有数据,打开html文件查看,发现数据为null。如下图,中文没有问题,但是到数字就变成null了。
百思不得其解,我最开始甚至怀疑是不是存在异步问题(当然这是没有道理的,因为name有数据,只是value为null),于是休眠了几秒。当然结果显而易见还是没有解决问题。
kv_data = list(zip(c_key, c_value))
print(type(c_value[0]))
print(type(0))
print(list(zip(c_key, c_value)))
pie = Pie()
# 休眠
time.sleep(2.2)
pie.add(series_name='百大性别比', data_pair=kv_data)
pie.render("./html/性别占比.html")
问题解决
最后怀疑到了数据类型上面。于是试着打印了一下数据类型,结果如下,虽然都是int,但是存在差别。。
试着把numpy.int64转成int类型
c_value = [int(i) for i in aa.values[:, 0]]
我需要的饼状图终于正常输出了!
总结
pyecharts库只能识别int类型的整型数据。但是pandas结果数据一般是numpy.int类型,pyecharts无法识别,导致数值数据变成null。这应该算这个库的bug吧。