Python 和 Pyecharts 对Taptap相关数据可视化分析

结果展示:

数据来源:

Python爬取TapTap 热门游戏信息并存储到数据库(详细版)

目录

结果展示:

数据来源:

Python爬取TapTap 热门游戏信息并存储到数据库(详细版

一、引言

二、准备工作

三、代码详解

1、游戏评分分布可视化(visualize_game_scores函数)

2、游戏标签分布可视化(visualize_game_tags函数)

3、各评分区间内不同标签的游戏数量可视化(visualize_tags函数)

4、各评分区间内不同标签的游戏数量可视化(visualize_tags_函数)

四、总结


一、引言

        在游戏领域,数据可视化能够帮助我们更直观地了解游戏的各种情况,比如游戏评分分布、游戏标签分布、不同开发商的游戏数量以及各评分区间内不同标签的游戏数量等。本文将介绍如何通过 Python 结合 Pyecharts 库对从数据库中获取的游戏相关数据进行可视化处理,让数据 “说话”,呈现出有价值的信息。

二、准备工作

        在开始之前,我们需要确保已经安装了以下必要的库:

pip install pymysql
pip install pyecharts
  • pyecharts:用于创建各种精美的图表,如柱状图、饼图等,方便进行数据可视化。
  • pymysql:用于连接 MySQL 数据库,以便从数据库中获取我们所需的游戏相关数据。

三、代码详解

1、游戏评分分布可视化(visualize_game_scores函数)

        首先,通过pymysql连接到本地的 MySQL 数据库(地址为127.0.0.1,端口3306,用户名为root,密码为921108,数据库名为fjj)。

db = pymysql.Connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='921108',
    db='fjj'
)
cursor = db.cursor()
  • 接着,从名为Taptap的表中查询游戏评分数据,并将获取到的数据进行处理,转换为合适的格式(将评分数据从元组形式转换为浮点数列表)。
sql = "SELECT score FROM Taptap"
cursor.execute(sql)
scores = cursor.fetchall()
score_list = [float(score[0]) for score in scores]
  • 然后,统计不同评分区间(如0-22-44-66-88-10)的游戏数量,并存入字典score_count中。
score_count = {}
for score in score_list:
    if score < 2:
        score_count.setdefault('0-2', 0)
        score_count['0-2'] += 1
    elif score < 4:
        score_count.setdefault('2-4', 0)
        score_count['2-4'] += 1
    elif score < 6:
        score_count.setdefault('4-6', 0)
        score_count['4-6'] += 1
    elif score < 8:
        score_count.setdefault('6-8', 0)
        score_count['6-8'] += 1
    elif score <= 10:
        score_count.setdefault('8-10', 0)
        score_count['8-10'] += 1
  • 之后,使用Pyecharts创建一个柱状图,设置其宽度、高度等初始化参数,并添加x轴(评分区间)和y轴(各评分区间对应的游戏数量)数据,同时设置了全局选项(如标题、坐标轴名称及样式、提示框样式等)和系列选项(在柱状图上显示数据标签)。
bar = Bar(init_opts=opts.InitOpts(width='800px', height='500px'))
bar.add_xaxis(list(score_count.keys()))
bar.add_yaxis("游戏数量", list(score_count.values()),
              itemstyle_opts=opts.ItemStyleOpts(color='#009688'))
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="游戏评分分布", title_textstyle_opts=opts.TextStyleOpts(font_size=20)),
    xaxis_opts=opts.AxisOpts(name="评分区间", axislabel_opts=opts.LabelOpts(font_size=14)),
    yaxis_opts=opts.AxisOpts(name="游戏数量", axislabel_opts=opts.LabelOpts(font_size=14)),
    tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
bar.set_series_opts(
    label_opts=opts.LabelOpts(position='top', font_size=12)
)
  • 最后,将生成的柱状图渲染为game_scores.html文件,可在浏览器中查看可视化结果。
bar.render("game_scores.html")

2、游戏标签分布可视化(visualize_game_tags函数)

    同样先连接数据库,查询游戏标签数据。

db = pymysql.Connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='921108',
    db='fjj'
)
cursor = db.cursor()
sql = "SELECT tags FROM Taptap"
cursor.execute(sql)
tags_data = cursor.fetchall()
  • 处理数据时,将所有标签提取出来并统计每个标签出现的次数。先将获取到的标签字符串按特定分隔符(这里是 “、”)分割成列表,再将所有标签合并到一个列表中,最后统计每个标签的出现次数并存入字典tag_count
all_tags = []
for tags in tags_data:
    tag_list = tags[0].split("、")
    all_tags.extend(tag_list)

tag_count = {}
for tag in all_tags:
    tag_count[tag] = tag_count.get(tag, 0) + 1
  • 创建饼图,设置其初始化参数、添加数据(标签及对应的出现次数),并设置全局选项(如标题样式、图例选项、提示框样式等)和系列选项(这里隐藏了游戏标签,将show属性设置为False)。
pie = Pie(init_opts=opts.InitOpts(width='800px', height='500px'))
pie.add("", [(tag, count) for tag, count in tag_count.items()],
        radius=["30%", "60%"],
        center=["50%", "50%"],
        itemstyle_opts=opts.ItemStyleOpts(
            color=lambda x: '#%02x%02x%02x' % (int(255 * x['value'] / sum(tag_count.values())),
                                            int(255 * (1 - x['value'] / sum(tag_count.values()))),
                                            int(255 * 0.5))
        ))
pie.set_global_opts(
    title_opts=opts.TitleOpts(title="游戏标签分布", title_textstyle_opts=opts.TextStyleOpts(font_size=25,color='pink'), pos_left="50%"),
    legend_opts=opts.LegendOpts(
        orient="vertical", pos_top="15%", pos_left="2%", is_show=False
    ),
    tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
pie.set_series_opts(
    label_opts=opts.LabelOpts()
)
  • 将生成的饼图渲染为game_tags.html文件,以便在浏览器中查看。
pie.render("game_tags.html")

3、各评分区间内不同标签的游戏数量可视化(visualize_tags函数)

        连接数据库并查询游戏评分和标签数据。

db = pymysql.Connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='921108',
    db='fjj'
)
cursor = db.cursor()
sql = "SELECT label, COUNT(*) AS game_count FROM Taptap GROUP BY label"
cursor.execute(sql)
developers_data = cursor.fetchall()
  • 提取开发商名称和对应的游戏数量分别存入列表developersgame_counts
developers = [data[0] for data in developers_data]
game_counts = [data[1] for data in developers_data]
  • 创建柱状图,添加x轴(开发商名称)和y轴(游戏数量)数据,并设置全局选项和系列选项(在柱状图上显示数据标签)。
bar = Bar(init_opts=opts.InitOpts(width='800px', height='500px'))
bar.add_xaxis(developers)
bar.add_yaxis("游戏数量", game_counts,
              itemstyle_opts=opts.ItemStyleOpts(color='#FF5722'))
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="不同开发商的游戏数量", title_textstyle_opts=opts.TextStyleOpts(font_size=20)),
    xaxis_opts=opts.AxisOpts(name="开发商", axislabel_opts=opts.LabelOpts(font_size=14)),
    yaxis_opts=opts.AxisOpts(name="游戏数量", axislabel_opts=opts.LabelOpts(font_size=14)),
    tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
bar.set_series_opts(
    label_opts=opts.LabelOpts(position='top', font_size=12)
)
  • 最后将柱状图渲染为developers_games_count.html文件供查看。
bar.render("developers_games_count.html")

4、各评分区间内不同标签的游戏数量可视化(visualize_tags_函数)

        连接数据库并查询游戏评分和标签数据。

db = pymysql.Connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='921108',
    db='fjj'
)
cursor = db.cursor()
sql = "SELECT score, tags FROM Taptap"
cursor.execute(sql)
data = cursor.fetchall()
  • 定义评分区间字典,并将查询到的数据根据评分分类到不同的评分区间中,每个评分区间对应一个标签列表。
score_ranges = {'0-2': [], '2-4': [], '4-6': [], '6-8': [], '8-10': []}
for row in data:
    score = float(row[0])
    tags = row[1].split("、")
    if score < 2:
        score_ranges['0-2'].extend(tags)
    elif score < 4:
        score_ranges['2-4'].extend(tags)
    elif score < 6:
        score_ranges['4-6'].extend(tags)
    elif score < 8:
        score_ranges['6-8'].extend(tags)
    elif score <= 10:
        score_ranges['8-10'].extend(tags)
  • 统计各评分区间内不同标签的产品数量,将结果存入字典tag_count_in_ranges
tag_count_in_ranges = {}
for range_name, tags in score_ranges.items():
    tag_count = {}
    for tag in tags:
        tag_count[tag] = tag_count.get(tag, 0) + 1
    tag_count_in_ranges[range_name] = tag_count
  • 创建堆叠柱状图,依次添加各评分区间的数据到x轴和y轴,并设置全局选项和系列选项(在堆叠柱状图上显示数据标签)。
bar = Bar(init_opts=opts.InitOpts(width='800px', height='500px'))
for range_name, tag_count in tag_count_in_ranges.items():
    bar.add_xaxis(list(tag_count.keys()))
    bar.add_yaxis(range_name, list(tag_count.values()),
                  itemstyle_opts=opts.ItemStyleOpts(color='#03A9F4'))
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="各评分区间内不同标签的游戏数量", title_textstyle_opts=opts.TextStyleOpts(font_size=20)),
    xaxis_opts=opts.AxisOpts(name="游戏标签", axislabel_opts=opts.LabelOpts(font_size=14)),
    yaxis_opts=opts.AxisOpts(name="游戏数量", axislabel_opts=opts.LabelOpts(font_size=14)),
    tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
bar.set_series_opts(
    label_opts=opts.LabelOpts(position='top', font_size=12)
)
  • 将生成的堆叠柱状图渲染为tags_in_score_ranges.html文件以便查看。
bar.render("tags_in_score_ranges.html")

四、总结

        通过以上四个函数,我们分别实现了对游戏评分分布、游戏标签分布、不同开发商的游戏数量以及各评分区间内不同标签的游戏数量的可视化。这些可视化结果能够帮助我们更清晰地了解游戏相关数据的特点和分布情况,为游戏的开发、推广、运营等方面提供有价值的参考。在实际应用中,我们可以根据具体需求进一步对这些可视化图表进行分析和解读,从而做出更明智的决策。

        希望这篇文章能够帮助大家更好地理解如何使用 Python 和 Pyecharts 进行游戏相关数据的可视化处理。如果有任何疑问,欢迎在评论区留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/925612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Atiyah交换代数经典入门教材:Introduction to Commutative Algebra

在上帖中&#xff0c;我分享了Zariski的交换代数教材&#xff1a;Zariski交换代数经典教材Commutative Algebra系列&#xff08;pdf可复制版&#xff09;。其实交换代数方面&#xff0c;除了Zariski的教材&#xff0c;还有Atiyah的Introduction to Commutative Algebra&#xf…

ADAM优化算法与学习率调度器:深度学习中的关键工具

深度学习模型的训练效果离不开优化算法和学习率的选择。ADAM&#xff08;Adaptive Moment Estimation&#xff09;作为深度学习领域中广泛应用的优化算法之一&#xff0c;以其高效性和鲁棒性成为许多任务的默认选择。而学习率调度器则是优化算法的“助推器”&#xff0c;帮助训…

SuperMap Objects组件式GIS开发技术浅析

引言 随着GIS应用领域的扩展&#xff0c;GIS开发工作日显重要。一般地&#xff0c;从平台和模式上划分&#xff0c;GIS二次开发主要有三种实现方式&#xff1a;独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊&#xff0c;其中集成二次开发既可以充分利…

DM达梦管理工具拖出空白区块,无法关闭

1. 出现问题&#xff1a;DM达梦管理工具拖出空白区块&#xff0c;无法关闭。 2. 解决方法 新建查询页&#xff0c;把查询页拖到空白区块里&#xff0c;完全覆盖空白区块。之后空白区块会变成查询页&#xff0c;右上角会出现叉号&#xff0c;点击叉号关闭就行。 3. 后记 达梦…

idea_卸载与安装

卸载与安装 卸载1、设置 -> 应用2、查找到应用&#xff0c;点击卸载3、把删除记录和设置都勾选上4、删除其它几个位置的残留 安装1、下载安装包2、欢迎安装 -> Next3、选择安装目录 -> Next4、创建快捷图标和添加到环境变量5、确认文件夹的名称 -> Install6、完成安…

学习threejs,使用specularMap设置高光贴图

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…

UR开始打中国牌,重磅发布国产化协作机器人UR7e 和 UR12e

近日&#xff0c;优傲&#xff08;UR&#xff09;机器人公司立足中国市场需求&#xff0c;重磅推出UR7e和UR12e 两款本地化协作机器人。它们延续优傲&#xff08;UR&#xff09;一以贯之的高品质与性能特质&#xff0c;着重优化负载自重比&#xff0c;且在价格层面具竞争力&…

2024年陕西科技大学数据结构程序填空题+预测

递归实现插入排序 #include <stdio.h>void insertion_sort(int arr[], int n) {if (n > 1){insertion_sort(arr, n - 1);arr[0] arr[n];int i;for (i n - 1; i > 0; i--){if (arr[i] > arr[0]){arr[i 1] arr[i];}else{break;}}arr[i 1] arr[0];} }int m…

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…

基于PoE交换机的智慧停车场监控组网应用

伴随城市发展快速&#xff0c;汽车保有量也不断增长&#xff0c;导致停车管理问题也愈发凸显。针对包括路侧停车位、地面停车场、地下停车场等场景的停车管理需求&#xff0c;通常会部署监控设备进行车位监测、现场安全监测等&#xff0c;助力构建智能化停车管理。因此如何为分…

直接抄作业!Air780E模组LuatOS开发:位运算(bit)示例

在嵌入式开发中&#xff0c;位运算是一种高效且常用的操作技巧。本文将介绍如何使用Air780E模组和LuatOS进行位运算&#xff0c;并通过示例代码帮助读者快速上手。 一、位运算概述 位运算是一种在计算机系统中对二进制数位进行操作的运算。由于计算机内部数据的存储和处理都是…

多点DMALL启动招股:将在港交所上市,聚焦数字零售服务

近日&#xff0c;多点数智有限公司&#xff08;Dmall Inc.&#xff0c;下称“多点”或“多点DMALL”&#xff09;发布全球发售文件&#xff0c;于11月28日至12月3日招股&#xff0c;预计将于2024年12月6日在港交所主板挂牌上市。 招股书显示&#xff0c;多点DMALL本次全球发售的…

WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法

大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的&#xff0c;也是区域的&#xff0c;甚至是全球的。本地的污染物排放除了对当地造成严重影响外&#xff0c;同时还会在…

离线安装 Docker-IO:详细步骤指南

离线安装 Docker-IO:详细步骤指南 一、准备工作1.1 下载 Docker 离线安装包1.2 准备安装环境1.3 配置防火墙和 SELinux(可选)二、上传和解压离线安装包2.1 上传安装包2.2 解压安装包三、安装 Docker-IO3.1 移动 Docker 文件到系统目录3.2 配置 Docker 服务3.3 赋予服务文件执…

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

作者&#xff1a;陈承 背景 在 2018 年的 2 月&#xff0c;ARMS Java Agent 的第一个版本正式发布&#xff0c;为用户提供无侵入的的可观测数据采集服务。6 年后的今天&#xff0c;随着软件技术的迅猛发展、业务场景的逐渐丰富、用户规模的快速增长&#xff0c;我们逐渐发现过…

【信息系统项目管理师】第3章:信息系统治理 考点梳理

文章目录 3.1 IT 治理3.1.1 IT治理基础3.1.2 IT治理体系3.1.3 IT治理任务3.1.4 IT治理方法与标准 3.2 IT 审计3.2.1 IT审计基础3.2.2 审计方法与技术3.2.3 审计流程3.2.4 审计内容 3.1 IT 治理 IT治理起到重要的统筹、评估、指导和监督作用。 信息技术审计(IT审计)作为与IT治…

DRM(数字权限管理技术)防截屏录屏----ffmpeg安装

提示&#xff1a;ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…

github webhooks 实现网站自动更新

本文目录 Github Webhooks 介绍Webhooks 工作原理配置与验证应用云服务器通过 Webhook 自动部署网站实现复制私钥编写 webhook 接口Github 仓库配置 webhook以服务的形式运行 app.py Github Webhooks 介绍 Webhooks是GitHub提供的一种通知方式&#xff0c;当GitHub上发生特定事…

全桥LLC变换器原理及MATLAB仿真模型

“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 主电路拓扑 全桥LLC 谐振变换器主电路拓扑结构图。图中S1 &#xff5e; S4为功率开关管&#xff0c; D1 &#xff5e; D4为功率开关管的体二极管&#xff0c; C1 &#xff5e; C4 为功率开关管的寄生电容。谐振电感r…

使用R语言进行美国失业率时空分析(包括绘图)

今天写一篇利用R语言&#xff0c;针对面板数据的简单分析与绘图。让我们直接开始把。 一、数据准备 这次的示例数据非常简单&#xff0c;只有一个shp格式的美国区县矢量数据&#xff0c;我们在QGIS中打开数据查看一下它的属性表。事实上我们需要的数据都在属性表的字段中。 二…