前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据探索案例——哪些电视游戏最受欢迎。直接使用pandas输出条件格式,可视化数据简单一招!

Python数据探索案例——哪些电视游戏最受欢迎。直接使用pandas输出条件格式,可视化数据简单一招!

作者头像
咋咋
发布2021-09-01 15:25:29
7210
发布2021-09-01 15:25:29
举报
文章被收录于专栏:数据大宇宙数据大宇宙

前言

之前已经多篇文章关于使用 pandas 处理数据,那仅仅是工作的开端,只是把数据整理完毕而不继续探索数据,那么就白白浪费了 Python 这样的好工具。

之后会陆续分享一系列的案例,敬请关注!!!

今天要探索的数据来自于微软的 power bi 关于 TV Game 的销量相关案例,我们开始吧。


本文概要

通过本文你将会学到以下知识点:

  • pandas 连接多表数据
  • 如何高效编写代码,以方便多维度汇总数据
  • 直接在 DataFrame 中可视化输出,如下:

案例介绍

案例数据有5个表的数据,以5个 csv 文件保存。以下是每个表的概要信息:

  • sales :记录每个游戏的销售情况(销量、用户评分如何?)
  • games :记录每个游戏的基本信息(游戏名字、开发商、分级、发布日期)
  • consoles : 每个游戏终端信息(电视游戏主机、厂商有哪些?)
  • ratings : 每个分级信息
  • genres : 游戏类型信息(动作游戏还是解密游戏?)


最多的记录就是销量表 sales ,以他为中心关联其他的表即可得到以下信息数据:

  • 游戏xxx是微软的主机 xbox360 的
  • 销量是10.5 百万
  • 用户评分7.5分
  • 是一款动作类游戏


各个表关系图如下:

  • sales 表对 games 表的关系是多对一关系
  • 实际上 sales 表的每行的游戏都是唯一的,也就是 GameID 列没有重复的

加载数据

我们现在需要从5个 csv 文件加载数据,然后把5个表连接成一个 DataFrame。 首先定义一个方法,负责加载、连接数据。方法名字就叫 get_df ,如下图:

  • 上图是加载 sales 表的代码,就两句代码。
  • 中间省略了其他4个表的加载代码。
  • 定义 sales_cols 列表,表示加载所需的列,我们不要加载所有的列。
  • pd.read_csv ,读取 csv 文件,其中参数 usecols 指定需要的列。
  • 在加载游戏信息表时,特别指定 pd.read_csv 方法中的参数 parse_dates ,让其把 Release 列(游戏发布日期)作为日期处理


然后同样是在 方法 get_df 中,把5个表连接起来。如下:

  • 这里有个技巧,从核心表 sales 表开始,按照关系图一直"左连接"到所有的表。
  • 左连接的左边一般是一对多关系中的"多方"。
  • merge ,用于连接2个 DataFrame 。参数 how='left' 指定为左连接, on=xxx 表示用 xxx 字段做 key。


我们来看看表关系图和连接代码之间的关系。



关联好数据了,现在看看数据的情况。

  • 调用之前定义的 get_df 方法,加载数据
  • df.info() ,查看数据的基本元信息
  • 可以清楚看到,数据有20621笔数据
  • Total_Sales 销量列,有一半数据是缺失的
  • User_Score 用户评分,只有6000多笔数据而已

定义核心问题

我们先制定一些探索目标,否则整个过程没有方向,很容易迷失。 我们希望通过数据,回答以下一些问题:

  • 整体游戏市场的销量如何?
  • 各个主机的游戏销量如何?
  • 什么类型的游戏比较好卖或受欢迎?

不要重复写汇总代码

假设我们希望看看每个品牌主机的游戏销量,那么可能会编写如下代码:



虽然此代码编写也算容易,但是我们需要经常变换汇总维度,每次重复编写这样的代码会很不方便。

因此,我们希望每次调用时,只需要告诉 pandas 以下信息即可:

  • 用哪些维度字段做汇总
  • 使用哪个字段做统计,统计方法是什么(平均、求和还是计数),统计后的列名字是什么


首先定义一个方法 cal ,每次只需要调用他即可得到汇总结果:

  • 参数 labels ,就是"需要的维度字段列表"
  • 参数 cal_funcs ,是统计方法列表,这里特意定义为无限个数的参数,那么就可以一次统计多个不同的方法


接下来,我们就要根据数据定义统计方法。 比如:销量求总,用来分析销量情况

  • CalFunc 只是一个 namedtuple,用于记录3个信息(统计列名、统计方法、统计后的新列名字)
  • 如上图,对 Total_Sales 列进行求和计算(sum) ,结果列名字为 total_revenue


我们试试,统计每个品牌每年的销量,如下:


接着,根据我们之前定义的核心问题,可以编写以下2个方法:

  • cal_total_games ,用于分析游戏数量
  • cal_avg_user_score ,用于分析用户对游戏的喜欢程度


看图说话

Python 上做图表有许多库可以选择,不过这次我们来试试直接在 DataFrame 中添加格式来可视化数据。


首先定义一个通用的方法用于输出带格式的 DataFrame。

  • 通过 DataFrame.style.bar ,即可输出带 css 格式的文本
  • 参数 subset ,用于表示哪些列需要带格式
  • 参数 color ,格式的颜色


看看整体市场每年的游戏数量与销量走势。

  • 由于年份太多,因此只保留2000年以后的数据
  • 可以看到2008年游戏数量和销售量都是最好的
  • 而2017年虽然游戏数量与2008年接近,但销量却是差很多
  • 为什么2019年这么少(这可能是数据出问题)?


看看不同厂商品牌的销量情况。

  • sony 大热胜出
  • 微软则不管游戏数量和销量都是垫底


哪类型游戏比较受欢迎?

  • 策略类和角色扮演类游戏的用户评分最高
  • 动作类游戏用户评分虽然只是第4,但游戏数量和销量高出其他类型很多。是动作游戏比较容易取材和制作?


最后

篇幅有限,本文先把此案例解析到这里。可以看到,即使在不制作图表的情况,可以做一些简单的格式化输出,同样可以达到探索数据的效果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 本文概要
  • 案例介绍
  • 加载数据
  • 定义核心问题
  • 不要重复写汇总代码
  • 看图说话
  • 最后
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档