《2021 年 T4 500 大富豪》数据集是基于彭博亿万富翁指数的 Kaggle 上的公开数据集。该指数是一项每日排名,根据市场状况和整体经济状况估计全球亿万富翁的净资产。这些数据包含的信息包括每位亿万富翁的姓名、他们的估计净资产、今年以来的净资产变化、居住国和行业。
探索性数据分析可以提供围绕数据的各种问题的见解。我们可以计算一个行业在数据中出现的次数,看看哪些行业最常见。我们还可以计算行业和国家等分类字段占总数据的百分比。
此外,一些可视化可以提供对组差异的洞察。例如,我们可以使用直方图来查看净值的分布,并且可以比较不同行业和国家的分布。箱线图还可以帮助我们比较分布,同时指出组内的异常值。我们也可以用饼状图来比较每个国家亿万富翁的百分比。
这里我们将对世界 500 大富豪数据集进行简单的探索性数据分析。我们将了解如何计算聚合统计数据,例如分类组内的计数。我们还将看到如何通过直方图和箱线图来可视化分布。我们还将使用饼图来比较各组的百分比。最后,我们将看到如何定义函数,以便计算和可视化统计数据的逻辑可以很容易地重用。
对于我的分析,我将在 Deepnote 中编写代码,这是一个协作数据科学笔记本,使运行可重复的实验变得非常容易。
读取数据
首先,让我们导航到 Deepnote 并创建一个新项目(如果您还没有帐户,可以免费注册)。
接下来,让我们创建一个新项目:
作者截图
现在,让我们添加“2020 年 500 名最富有的人”数据,方法是单击左侧文件选项卡旁边的“+”符号,然后单击上传文件选项卡。出现提示后,上传 500Richest.csv 文件:
作者截图
现在,让我们导入熊猫库:
作者创建的嵌入
接下来,让我们将数据读入 Pandas 数据帧,并使用“head()”方法显示前五行数据:
作者创建的嵌入
我们看到,我们有像排名、姓名、总净值、上次变化和年初至今变化这样的字段。我们还可以通过打印 dataframe 的 columns 属性来查看列名的完整列表:
作者创建的嵌入
我们看到我们还有国家和行业栏目。我们还有四个未命名的列。如果我们显示这些未命名列的前五行数据,我们将看到这些列有 NaN(不是数字)值。这通常对应于缺失值:
作者创建的嵌入
鉴于这些列是未命名的,它们对我们不会有太大用处。尽管如此,了解哪些 pandas 方法可以让我们深入了解数据集中缺失的数据还是很有用的。例如,我们可以计算每一列中 nan 的数量,并将其与数据中的行数进行比较。 首先,让我们使用内置的 python 方法‘len()’来计算数据集中的行数:
作者创建的嵌入
我们看到我们的数据集中有 503 行数据。我们可以使用“isna()”和“sum()”方法来计算每个未命名列中缺失值的总数。让我们打印一个 for 循环中每一列的缺失值的数量,在这里我们将迭代缺失列的列表:
作者创建的嵌入
我们看到每个未命名列的所有值都丢失了。我们可以使用“del”关键字删除这些列,因为它们对我们没有用:
作者创建的嵌入
现在我们可以开始查看数据中的一些有效字段。我们可以从查看 industry 列的值分布开始。我们可以使用集合模块中的计数器方法来实现这一点:
作者创建的嵌入
我们可以使用“most_common()”方法将它过滤为行业中最频繁出现的值。让我们筛选出最常见的 5 个值:
作者创建的嵌入
我们看到技术、工业、多样化、消费者和金融是工业最常出现的 5 个值。我们可以用一个饼状图来形象化地展示这一点。让我们导入 python 可视化库 matplotlib,并为 5 个最常见的行业生成一个饼图:
作者创建的嵌入
我们看到技术占 31%,工业占 21%,多元化(指许多行业)占 17%,消费占 16%,金融占 15%。我们也可以为各国做类似的事情。让我们使用计数器方法来查看出现频率最高的前 5 个国家:
作者创建的嵌入
我们看到美国、中国、德国、俄罗斯和香港是最常见的 5 个国家。我们也可以用一个饼图来形象化地展示这一点:
作者创建的嵌入
这里我们看到美国占了 51%的数据;中国占 25%,德国 10%,俄罗斯 8%,香港 6%。我们还可以定义一个函数,为任何分类字段的 5 个最常见值生成行业饼图。
作者创建的嵌入
现在,让我们为 5 个最常见的国家制作行业饼图:
作者创建的嵌入
我们看到,对我们和中国来说,最常见的行业是技术。德国最常见的行业是工业。对俄罗斯来说是多元化,对香港来说是房地产。另一个有见地的可视化是方框图。箱线图可以帮助我们可视化和比较基于最小值、最大值、中值、第一个四分位数和第三个四分位数的跨类别数值分布。这将使我们能够比较不同类别(如国家和行业)的净值分布。让我们定义一个采用数据框、分类列和数字列的函数。调用时,它将为给定的数字列生成与分类列对应的 5 个最常见值的箱线图:
作者创建的嵌入
在使用数据框调用函数之前,我们需要将数值列转换为浮点值。我们将看看前 5 个国家的总净资产分布情况。要转换我们的数字列,我们需要从我们的列的字符串中删除' $ '和' B ',使用 Pandas 方法 to_numeric 将字符串转换为浮点数,然后用 0 估算缺失的值:
作者创建的嵌入
我们现在可以用国家和总净值来调用我们的函数:
作者创建的嵌入
我们立即注意到的一件事是,美国比其他国家有更多的异常值。 我们也可以用行业和总净值来调用我们的函数:
作者创建的嵌入
我们在这里看到,与其他行业相比,科技行业有更多的异常值和更高的总净值中值。另一种比较不同类别的数字列分布的有用方法是使用直方图。让我们定义一个函数,该函数采用一个数据框、一个数字列和一个分类列,并在一个数字列中为分类列中最常见的五个值生成一个直方图叠加图:
作者创建的嵌入
让我们称我们的函数为总净值和国家:
作者创建的嵌入
我们看到,与我们图中的其他国家相比,美国的分布具有最高的峰值和最长的尾部。我鼓励您尝试这些代码,并生成一些您自己的有见地的可视化。这篇文章中使用的代码可以在 GitHub 上获得。
探索性数据分析是数据科学家和数据分析师工作流程的重要组成部分。具体来说,数据可视化对于从数据中生成和交流统计见解非常有用。饼图对于可视化数据中分类值的比例差异非常有用。箱线图对于可视化数值字段中的四分位数、中值和异常值非常有用。这对于可视化和比较类别间异常值的分布和数量也很有用。最后,直方图是可视化数值中的计数、平均值和分布的有用方法。这也可以用来比较我们数据中的组间差异。这些类型的见解可用于数据叙述、特征工程和建模。