首页 宝宝起名正文

​cutecharts库,集Python数据可视化届万千宠爱于一生

本文概要Part one: 可视化库cutecharts基本使用介绍

Part two: 爬取中国电竞价值排行榜-外设排行榜,利用cutecharts数据可视化分析

Part three: 总结 抒情

Part one : 可视化库cutecharts基本使用介绍1.cutecharts 安装最简单的肯定是 pip​ ​安装:

$ pip3 install cutecharts当然,也可以进行源码安装:

$ git clone 编码,稍不注意,可能模板生成错误。

解决方法其实很简单,我们把渲染页面里的js脚本单独拿出来,放到js文件内,然后再在html页面内加载静态的js文件即可,说白了,就是不要让jinja2直接去渲染‘有问题’的js内容。

如果你嫌这个麻烦,还有一位朋友使用静态加载方法解决了该问题。

<script type="text/javascript" src="{{url_for('static',filename='js/echarts-gl.min.js')}}"></script>当然,没有遇到问题最好~我是直接用的jupyter notebook,所以没有这个问题。

关于jupyter notebook安装使用,你可以看我之前分享的文章:Windows/Mac 安装、使用 Python 环境 +jupyter notebook

2.基本使用目前cutecharts支持的可视化图像类型有:柱状图、折线图、饼状图、雷达图、散点图。 我想后续作者还会增加的,比如:词云图、3D柱状图、条形图等等。 另外,项目里已经给我们提供了测试用例,所以我们学习的时候就不用再去自己写测试用例了,直接调用即可。

​cutecharts库,集Python数据可视化届万千宠爱于一生

First : 柱状图# 导入cutecharts中的Barfrom cutecharts.charts import Bar# 导入测试用例from cutecharts.faker import Fakerdef bar_base() -> Bar: chart = Bar("Bar-基本示例") chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel") chart.add_series("series-A", Faker.values()) return chartbar_base().render_notebook()渲染引擎提供了两个

.render(html_name) :生成一个本地文件,html_name为文件名(html文件),默认名为:render.html.render_notebook() :可以在jupyter中直接运行显示,如上文代码本文案例代码都是在Jupyter Notebook上编写运行显示情况:

当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在Github里写的特别清楚,很方便阅读使用

​cutecharts库,集Python数据可视化届万千宠爱于一生

内容来自:github cutecharts

Second : 折线图from cutecharts.charts import Linefrom cutecharts.faker import Fakerdef line_base() -> Line: chart = Line("Line-基本示例") chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel", legend_pos="upRight") chart.add_series("series-A", Faker.values()) chart.add_series("series-B", Faker.values()) return chartline_base().render_notebook()显示情况:

当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在Github里写的特别清楚,很方便阅读使用

​cutecharts库,集Python数据可视化届万千宠爱于一生

内容来自:github cutecharts

Third : 饼图from cutecharts.charts import Piefrom cutecharts.faker import Fakerdef pie_base() -> Pie: chart = Pie("Pie-基本示例") chart.set_options(labels=Faker.choose()) chart.add_series(Faker.values()) return chartpie_base().render_notebook()显示情况:

当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在Github里写的特别清楚,很方便阅读使用

​cutecharts库,集Python数据可视化届万千宠爱于一生

内容来自:github cutecharts

Fourth : 雷达图from cutecharts.charts import Radarfrom cutecharts.faker import Fakerdef radar_base() -> Radar: chart = Radar("Radar-基本示例") chart.set_options(labels=Faker.choose()) chart.add_series("series-A", Faker.values()) chart.add_series("series-B", Faker.values()) return chartradar_base().render_notebook()显示情况:

当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在Github里写的特别清楚,很方便阅读使用

​cutecharts库,集Python数据可视化届万千宠爱于一生

内容来自:github cutecharts

Fifth : 散点图from cutecharts.charts import Scatterfrom cutecharts.faker import Fakerdef scatter_base() -> Scatter: chart = Scatter("Scatter-基本示例") chart.set_options(x_label="I'm xlabel", y_label="I'm ylabel") chart.add_series( "series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())] ) chart.add_series( "series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())] ) return chartscatter_base().render_notebook()显示情况:

​cutecharts库,集Python数据可视化届万千宠爱于一生

当然,里面的颜色、文字内容我们都是可以更改的。 相关函数参数,作者在Github里写的特别清楚,很方便阅读使用

​cutecharts库,集Python数据可视化届万千宠爱于一生

内容来自:github cutecharts

这里由于篇幅关系,本文只对cutecharts基本图像展现做了介绍,对于以上五个类型的可视化图像的具体参数没有做展开介绍,感兴趣的可以去github查看更详细内容:

地址:​ ​​ ​

Part two : 爬取中国电竞价值排行榜-外设排行榜,利用cutecharts数据可视化分析【注】本文所有代码都是在Jupyter Notebook下运行,理论上移到本地开发工具也是可以运行的,如有问题,请留言评论。

截止到2021.11.24 该网站外设入口已经不在了,但是数据接口还有,所以理论上以下代码大家运行不会有任何问题,当然,大家还可以用来分析其他页面数据,比如中国富豪榜单等,这类榜单数据大多是table标签包裹,且为静态加载,所以直接使用pandas.read_html即可很快获取到数据。

1.爬取数据​cutecharts库,集Python数据可视化届万千宠爱于一生

"""爬取中国电竞价值排行榜-外设排行榜网站:;具体实现代码:

# 爬取数据import pandas as pdurl = "里的数据。

​cutecharts库,集Python数据可视化届万千宠爱于一生

观察上面获取到的数据,我们发现,奇数行的数据有问题,我看了下网页源码,确实页面的table写的有点问题,表头在重复出现,这个数据处理很简单,我们取出偶数行的正确数据即可。

url_read=url_read[url_read.index%2==0]​cutecharts库,集Python数据可视化届万千宠爱于一生

我们会发现,数据里的​ ​综合指数​ ​数值为​ ​NaN​ ​,这是因为这一栏数据在网站中是以图像条显示的,存储在i标签的width里,这里我们就不获取了,要获取也是有办法的,比如:正则表达式,如果你感兴趣,可以去试试。

​cutecharts库,集Python数据可视化届万千宠爱于一生

电竞与外设-键盘前12名在3-7月的所有的数据。

# 爬取数据import pandas as pddef get_data(i): url = ")为了后续工作方便,我们最好是跑一次,然后把数据存到本地,方便读取处理。

df.to_csv(r'rich_list.csv', mode='a', encoding='utf_8_sig', header=0, index=False)2.数据可视化分析获取了电竞与外设-键盘前12名在3-7月的所有的数据,共60条数据,方便数据读取显示,以下代码是在Pycharm上编写,理论上移植到其他开发工具或平台也可运行,如有问题欢迎留言交流。 Core issues : 键盘品牌分析

读取数据import osimport pandas as pd# 数据统计函数def get_list_num(l): name = list(set(l)) # 名字 value = [] # 次数 for item in name: value.append(l.count(item)) return name, value# 获取当前文件父目录路径father_path = os.getcwd()# # 原始数据文件路径rpath_csv = father_path+r'/rich_list.csv'# 读取数据csv_read = pd.read_csv(rpath_csv)Question one: 对品牌分析读取数据manufacturer = list(csv_read["厂家"])statistical = get_list_num(manufacturer)可视化# 导入cutecharts中的Barfrom cutecharts.charts import Bardef bar_base() -> Bar: chart = Bar("3-7月键盘品牌") chart.set_options(labels=statistical[0], x_label="品牌名", y_label="出现次数") chart.add_series("品牌频数比较", statistical[1]) return chartbar_base().render()

​cutecharts库,集Python数据可视化届万千宠爱于一生

从这里看,我们可以发现达尔优、雷蛇、CHERRY、赛睿、海盗船都在排行榜上出现了10次,华硕ROG、雷柏略差一些,只出现了五次。 我们再来结合各个品牌对应的产品排名来分析一下: 数据处理

# 获取每个品牌对应的排名总和rank_list = []for i in statistical[0]: table = csv_read.loc[csv_read["厂家"] == i] rank_list.append(sum(table["排名"])/5) # 排名计算总和都除五可视化分析:

from cutecharts.charts import Linedef line_base() -> Line: chart = Line("3-7月键盘品牌") chart.set_options(labels=statistical[0], x_label="品牌名", y_label="总数") chart.add_series("品牌频数", statistical[1]) chart.add_series("品牌排名", rank_list) return chartline_base().render()

​cutecharts库,集Python数据可视化届万千宠爱于一生

首先我们要知道,第一次统计的品牌名出现次数,表示品牌旗下产品上榜的数量,可能是有多种产品上榜,也可能是部分产品多次上榜,第二次统计的产品排名数和(为了方便展示,我把数除五了),表示该品牌所有上榜产品的排名和,如果做对比的话,应该是在第一个条件(品牌出现次数)相同情况下做对比。 从图中我们很容易看出,品牌CHERYCHEℝY这个品牌出现次数多,而且排名靠前(因为排名数和低),其次是海盗船,第三可以算赛睿,雷蛇,达尔优,我们还可以看出雷柏和华硕ROG好像差不多。

​cutecharts库,集Python数据可视化届万千宠爱于一生

接下来我们再看看品牌热度,我们直接看综合指数综合指数,当然,如果你在做数据分析工作中,肯定不会这么选择,你应该选择和你目的最贴切的数据项进行分析,甚至进行一些进阶算法,给每个指数项一定权重然后分析。

index_list = []# 选取三个比较热门的产品model = ["MX8.0", "K70", "雷柏V500"]for i in model: print(i) table = csv_read.loc[csv_read["型号"] == i] print(table) # 显示查询数据​cutecharts库,集Python数据可视化届万千宠爱于一生

​cutecharts库,集Python数据可视化届万千宠爱于一生

从网页上我们可以轻易看到,七月综合指数最高是的是​ ​CHERRY​ ​​旗下的​ ​MX8.0​ ​,如果你感兴趣,可以像我什么一样,自己选3-5个热门产品,作出他们3-7月之间的综合指数或其他数据的变化图(一段时间内的变化,折线图会是一种比较好的显示方式)。

对于以上数据,你还有什么其他比较好的分析思路吗?欢迎你留言说说你的看法,由于时间和篇幅关系,我就不过多叙述了。

记住,本文主旨是给大家介绍​ ​cutecharts​ ​这个新的py可视化库。

cutecharts 项目源码,如果喜欢,请点个赞私信“111”。

Part three : 总结 抒情哇,终于写完了,虽然本文技术含量不是那么高,但还是有很多地方是大家可以学习的,比如:认识个牛逼的人。 最后,我代替大家,其实也就是我自己想问的,问了大佬三个问题,这里分享给大家:

Q:1. 目前 cutecharts 只支持部分图形,后续还会开发出其他图形支持吗?比如词云图?

A:cutecharts 是基于 chart.xkcd 开发的,目前 100% 支持其所有图形和配置项,如果 chart.xkcd 图表类型更新的话,cutecharts 也会同步更新的。

Q:2. 你觉得 cutecharts 和 pyecharts 的关系是什么?

A:cutecharts 和 pyecharts 属于同一类项目,都是使用 ​ ​Python、Notebook+JS​ ​ 实现数据的可视化,不过 pyecharts 目前有着更丰富的图形种类以及更多的配置项。

cutecharts 可以看做是精简版的 pyecharts,保留着 pyecharts 的所有核心功能,是学习 pyecharts 源码的很好的入手点。

Q:3. 你有没有什么想说的,对 cutecharts 和 pyecharts 的使用者?

A:开发一个类似的库并不难,无非是找到优秀的 JS 库,设计好 Python 接口,并将两者融合在一起。所以也希望有更多 Python 开发者能够参与到这方面的开发中来,为社区贡献出更多优秀的作品。

希望,我们都越来越优秀。

原文链接:

原地址:https://www.chinesefood8.com/33513.html
点击阅读全文
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。