打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
快速在Python中实现数据透视表
userphoto

2023.11.11 浙江

关注
机器学习与数据分析
2021-7-24 19:03

趣闻

几年前,我看到有人在推特上说自己是一个excel专家,然后他们的老板让他们做一个透视表。根据这条推文,那个人立刻惊慌失措,辞掉了工作。这条推文很有趣,我能理解,因为一开始,它们可能会令人困惑,尤其是在excel中。但是不用害怕,数据透视表非常棒,在Python中,它们非常快速和简单。数据透视表是数据科学中一种方便的工具。任何开始数据科学之旅的人都应该熟悉它们。让我们快速地看一下这个过程,在结束的时候,我们会消除对数据透视表的恐惧。

什么是数据透视表?

数据透视表是一种对数据进行重新排列或“透视”以总结某些信息的技术。

例如,考虑一个产品销售数据集。其中一列可能是“年龄类别”,如年轻、中年和老年。如果你想要看到每个年龄类别的平均销售额,数据透视表将是一个很好的工具。它会给你一个新表格,显示每一列中每个类别的平均销售额。

让我们来看看一个真实的场景,在这个场景中,数据透视表非常有用。我们可以用它来分析数据,甚至得出一些结论。

为了说明这个工作流,让我们采取以下步骤。

  1. 提出一个问题或假设
  2. 找到数据
  3. 使用Pandas创建透视表
  4. 用条形图将我们的发现形象化
  5. 根据我们最初的问题或假设得出结论

我们试图回答的问题

让我们假设一群愤怒的父母再次认为电子游戏太暴力。这一次,他们说电子游戏开发者制作了太多带有卡通和虚构暴力风格的游戏。“TX”将这些游戏评级为适合儿童,这意味着开发者可以将游戏卖给更广泛的用户。对于这一群体,大多数儿童游戏都有这种类型的卡通暴力。让我们看看能不能找到一些数据,看看他们的说法是否有效。

在我们开始创造问题或假设之前,我们首先需要了解电子游戏评级。我们需要先熟悉TX的评级系统然后才能继续前进。这些评级在他们的网站上有详细描述,但我也在下面的表格中总结了评级。

这群愤怒的父母在他们的指责中含糊其辞,但让我们对他们的要求采取一些自由。将预测他们所创造的游戏的百分比,并将其定义为“大多数”。

由于TX的评级明确地说“不包含父母会认为不合适的材料”,我们可以提出我们的第一个假设。如果任何“TX”游戏都有这种暴力风格,那么评级系统就有问题了。我们可以使用下面的假设来传达这一点。

超过0%的电子游戏被评为“TX”有某种形式的卡通暴力。

如果这个假设是正确的,那么父母是正确的,评分系统有问题。

如果我们的假设是错误的,那么父母就是错误的,评分系统是按照设计的方式运行的。

我们还需要一个“E”级游戏的假设。“E”是为6岁以上的儿童设计的,但它可能包含卡通暴力。假设超过50%的人占多数,使用下面的假设。

超过50%的E级电子游戏带有某种卡通暴力。

如果我们的假设是正确的,那么家长们就正确地认为暴力正悄悄进入面向孩子的游戏中。如果我们的假设是错误的,那么我们晚上可以睡得很好,因为我们知道“E”级电子游戏中没有太多暴力。

数据

Kaggle有一个完美的数据集名为“ESRB”视频游戏评级:

https://www.kaggle.com/imohtn/video-games-rating-by-esrb

从描述中,我们可以看到这个数据集包含了带有34个ESRP评级描述符和ESRB给定评级的1895款游戏。每个描述符都以二进制值列出,其中1表示描述符存在,0表示不存在。数据集还有一些列,但我们只关心评级描述符。让我们下载这个数据集并将其导入到Jupyter Notebook。使用Jupyter Notebook将允许我们导入所需的Python库,并提供一种显示结果的好方法。

使用Pandas做一个透视表

Pandas库是Python中任何类型的数据操作和分析的主要工具。

首先,我们需要导入pandas,然后我们可以使用panda .read_csv将Kaggle数据集转换为DataFrame。

import pandas as pd ratings = pd.read_csv('Video_games_esrb_rating.csv')

现在我们需要决定哪些评级描述符是卡通的还是动画的。让我们使用以下描述符:animated_blood, cartoon_violence, mild_cartoon_violence, mild_fantasy_violence。我们将这些列名存储在一个列表中.

cartoon_cols = ['animated_blood', 'cartoon_violence', 
'mild_cartoon_violence', 'mild_fantasy_violence']

我们的DataFrame有一个名为pivot_table的方法,它将为我们构建数据透视表。在这个示例中,我们将使用两个参数。第一个参数是index,它将是评级。可以将索引看作是我们进行分组的值。第二个参数是我们前面创建的列表中的值。还有一个非常重要的参数,aggfunc。这个参数将决定如何总结我们的信息。因为这些列都是布尔值,所以寻找平均值的默认值是完美的。这些列的均值将给出每个描述符中有1个游戏的百分比。

pivot = ratings.pivot_table(index='esrb_rating', values=cartoon_cols) pivot

太棒了!让我们分解这个输出告诉我们什么:

  • 我们只在4个不同的等级中看到这些内容描述符:E(每个人),ET(E+10), T(青少年),M(成熟)。这告诉我们,EC(Early Childhood)游戏不包含任何这种卡通风格的暴力。
  • 在被评为“E”级的游戏中,没有任何一款游戏含有动画血液或卡通暴力。约5%的人有轻微的卡通暴力,约18.5%的人有轻微的幻想暴力。
  • 2%的ET(“E+10”)游戏有动画血液,5%有卡通暴力,4%有轻微卡通暴力,约3%有轻微幻想暴力。
  • 成熟游戏在这些类别中很少有暴力元素,青少年游戏也有一些这种类型的暴力元素,但比“E+10”级别的游戏要少。

用条形图可视化数据透视表

数据透视表在几秒钟内就给了我们一些快速的信息。如果以视觉的方式展示某些东西,人们通常更容易理解它。我们可以使用Pandas用数据透视表制作一个柱状图。

由于本演练是基于使用Jupyter Notebook,我们需要第一行来查看柱状图。我们也使用了numpy。排列作为一个快捷方式,在y轴上做10个滴答声,从0开始,以0.1增量递增。我们创建的数据透视表实际上是一个DataFrame,它允许我们调用plot。条形法。如果我们不指定x轴上的值,则使用索引。在这种情况下,这是完美的,因为它将使用我们的“TX”评级。然后y轴将显示每个描述符生成的值。

%matplotlib inline
import numpy as np
pivot.plot.bar(ylim=(0,1),yticks=np.arange(0,1,.1))

英文原文链接:
https://towardsdatascience.com/pivot-tables-are-quick-and-easy-in-python-a0ffee66381a

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
从Excel进阶到Python:掌握数据透视表
手把手教你做一个“渣”数据师,用Python代替老情人Excel
用Python展示Excel中常用的20个操作
Python自动化处理Excel报表,工作更轻松
python数据分析透视表,定制你的分析计算需求!
在Python中执行数据分析,记住这八个概念节省你的时间精力
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服