Python|数据可视化之公众号得分的柱状图
1 前言
在日益发展的社会,人们每天都会产生大量的数据,很多工作中也常常涉及到对数据的处理。而众多的数据让人头昏眼花,所以需要对数据进行可视化。将数据转换为大脑更容易接受的图表形式。所以有了后来的excel表格,它在数据的可视化处理方面非常强大。但是随着数据量的增大,用excel往往都是重复之前的步骤。效率也就变得很低了,还容易枯燥。于是,python的可视化数据来了,在重复这件事上,相信没有谁可以比程序来得更快更好。所以今天小编就通过实例给大家简单展示下数据的可视化处理。
2 模块准备
首先是python环境不用多说,然后是可读取excel的xlrd模块和强大的可视化模块pyecharts。两者都通过pip安装即可。
pip install xlrd
pip install pyecharts
然后直接导入对应模块和类即可。
#导入模块
from pyecharts.charts import Bar
from pyecharts import options as opts
import xlrd #读取excel的模块
3 具体步骤
3.1 读取excel表格
图3.1excel表格
为了方便首先将准备好的excel表格放置在py文件同目录下,然后运行以下代码即可读取。
data = xlrd.open_workbook("gongzhonghao.xls") #打开工作表
table = data.sheets()[0] #找到excel中对应的sheet表,这里是第一个
读取excel表格的行和列都是以列表的形式返回的。
3.2 数据分析
通过以上代码读取到对应的excel表格后,在通过简单的代码对数据进行处理。首先要知道一个柱状图有什么。柱状图有x、y轴。一般x轴只有一条数据,所以通过上面excel表中的内容可以得出用作者作为x轴最好。然后小编这次的目的是统计每个作者发布的文章数和文章总得分(总得分=每篇文章的在看数加阅读数的1/10和点赞数的1/2)。所以就可以以文章数和得分作为y轴。
allData = {} #用来储存作者与文章的数据
for i in range(1,table.nrows): #遍历表格中的每一行
look = table.row_values(i)[2] #在看
read = table.row_values(i)[3] #阅读数
like = table.row_values(i)[4] #点赞
score = look + read * (1 / 10) + like * (1 / 2) #每篇文章得分
if table.row_values(i)[1] not in allData.keys(): #判断储存数据的字典中是否有该作者
allData.get(table.row_values(i)[1]) #没有就添加
allData[table.row_values(i)[1]] = [1,score] #为这个作者添加值(文章数和得分)
else:
allData[table.row_values(i)[1]][0] += 1 #有就文章数加一
allData[table.row_values(i)[1]][1] += score #累计得分
author = list(allData.keys()) #获取作者表
datas = list(allData.values()) #获取数据表
articleCount = [] #储存文章数
articleScore = [] #储存得分
for i in datas: #遍历数据表
articleCount.append(i[0]) #添加文章数
articleScore.append(round(i[1],1)) #添加的得分
上面的代码简单的运用了python的遍历和字典的知识。由于本文的重点是可视化,所以这里就不做详细说明了。
3.3可视化
通过上面的数据处理,就已经拿到了x,y轴的数据了,接下来就直接使用pyecharts模块进行渲染配置。
bar = (Bar() #对柱状图进行简单配置
.add_xaxis(author) #设置横坐标为作者
.add_yaxis('文章数',articleCount) #纵坐标一为文章数
.add_yaxis('得分',articleScore) #纵坐标二为得分
.set_global_opts( #全局配置,标题、副标题、坐标轴、主题等
title_opts=opts.TitleOpts(title = '公众号得分数据分析',subtitle = '近期作者发布文章数与得分情况')
)
)
bar.render() #生成html文件
图3.2柱状图
小编这里只是简单的配置了标题和副标题。对于pyecharts的全部配置可以说是九牛一毛。还有很多的参数可以更改,详情请到官网查看官方文档:
4 完整代码
#导入模块
from pyecharts.charts import Bar
from pyecharts import options as opts
import xlrd #读取excel的模块
data = xlrd.open_workbook("gongzhonghao.xls") #打开工作表
table = data.sheets()[0] #找到excel中对应的sheet表,这里是第一个
allData = {} #用来储存作者与文章的数据
for i in range(1,table.nrows): #遍历表格中的每一行
look = table.row_values(i)[2] #在看
read = table.row_values(i)[3] #阅读数
like = table.row_values(i)[4] #点赞
score = look + read * (1 / 10) + like * (1 / 2) #每篇文章得分
if table.row_values(i)[1] not in allData.keys(): #判断储存数据的字典中是否有该作者
allData.get(table.row_values(i)[1]) #没有就添加
allData[table.row_values(i)[1]] = [1,score] #为这个作者添加值(文章数和得分)
else:
allData[table.row_values(i)[1]][0] += 1 #有就文章数加一
allData[table.row_values(i)[1]][1] += score #累计得分
author = list(allData.keys()) #获取作者表
datas = list(allData.values()) #获取数据表
articleCount = [] #储存文章数
articleScore = [] #储存得分
for i in datas: #遍历数据表
articleCount.append(i[0]) #添加文章数
articleScore.append(round(i[1],1)) #添加的得分
bar = (Bar() #对柱状图进行简单配置
.add_xaxis(author) #设置横坐标为作者
.add_yaxis('文章数',articleCount) #纵坐标一为文章数
.add_yaxis('得分',articleScore) #纵坐标二为得分
.set_global_opts( #全局配置,标题、副标题、坐标轴、主题等
title_opts=opts.TitleOpts(title = '公众号得分数据分析',subtitle = '近期作者发布文章数与得分情况')
)
)
bar.render() #生成html文件
- 如何使用Anaconda设置机器学习和深度学习的Python环境
- MQ,互联网架构解耦神器
- 预测随机机器学习算法实验的重复次数
- 服务化了,没想到耦合更加严重?
- 如何在Python中扩展LSTM网络的数据
- 使用Keras的Python深度学习模型的学习率方案
- 全球电脑手机无一幸免,英特尔CPU“漏洞事件”到底多严重?
- 评估Keras深度学习模型的性能
- Python机器学习的练习二:多元线性回归
- 熔断器 Hystrix 源码解析 —— 命令合并执行
- Python机器学习的练习一:简单线性回归
- Dubbo源码解析 —— zookeeper连接
- 浣熊检测器实例, 如何用TensorFlow的Object Detector API来训练你的物体检测器
- 用Keras进行深度学习模式的正则化方法:Dropout
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- rt-thread的内存管理分析
- R平方/相关性取决于预测变量的方差
- stata具有异方差误差的区间回归
- R语言用于线性回归的稳健方差估计
- 用SAS进行泊松,零膨胀泊松和有限混合Poisson模型分析
- 东芝开发板驱动OLED模块显示LOGO图片
- sas文本挖掘案例:如何使用SAS计算Word Mover的距离
- R语言ggplot2 对Facebook用户数据可视化分析
- 如何实现一个圆弧倒计时进度条
- R语言Kaggle泰坦尼克号性别阶级模型数据分析案例
- 以图搜图系统概述
- GitHub Pages 配置 letsencrypt 开启HTTPS
- R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数据
- 以图搜图系统工程实践
- R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)