引言
在2024年,全球财富的分布再次成为公众和经济学家关注的焦点。随着经济的波动和新兴市场的崛起,亿万富翁的名单也在不断变化。本文将深入探讨这一现象,通过最新的数据可视化分析,揭示世界上最富有的人在2024年的财富状况和趋势。财富不仅是个人成功的体现,也是全球经济动态的一个重要指标。了解亿万富翁的财富来源、行业分布以及他们的财富如何影响全球经济,对于把握经济趋势和预测未来市场走向至关重要。本文的目的是通过数据收集、分析和可视化,为读者提供一个全面的视角,观察和理解世界上最富有的人在2024年的财富状况。我们将探索他们的财富是如何累积的,以及这些财富在全球范围内是如何分布的。
数据集
“2024 年全球最富有的人”数据集提供了 2024 年全球最富有个人的详细概述。该数据集包括有关高管、他们的净资产以及他们所在的国家/地区的关键信息,为经济分析、市场研究和金融研究提供有价值的见解。
来源kaggle数据集包括以下列:
- Rank 排名
- Company 公司
- Executive Name 行政人员姓名
- Net Worth 净值
- Country 国家
数据可视化
读入数据:
import numpy as np
import pandas as pd
import seaborn as sns
import plotly.express as px
import matplotlib.pyplot as plt
import plotly.graph_objects as go
sns.set(style="whitegrid")
import warnings
warnings.simplefilter("ignore")
warnings.filterwarnings("ignore")
df = pd.read_csv('World_Billionaire_2024.csv')
df.head(5)
展示前五行数据,可以看到net worth列不是纯数值类型,包含了$和B,我们需要处理以便后续的计算画图。
df['NET WORTH'] = df['NET WORTH'].replace(['[\$,B]'], '', regex=True)
df
我们用正则表达式将$和B替换为空,看处理好的数据:
数据集还是比较全的,全球2743个富翁。
继续清洗,将net worth列非数值类型的值转为缺失值。
描述性统计和删除缺失值:
探索性分析(EDA):
# 创建一个新的图形窗口,并设置其大小为20x20英寸(注意,这里的尺寸是指图形的画布大小,而非显示时的像素大小)
plt.figure(figsize=(20,20))
# 绘制df['NET WORTH']列的直方图。bins=20表示将数据分成20个等宽的区间来绘制直方图。edgecolor='black'设置直方图的边缘颜色为黑色。
plt.hist(df['NET WORTH'], bins=20, edgecolor='black')
# 设置x轴的标签为'Net Worth',表示直方图所展示的是“净值”的分布。
plt.xlabel('Net Worth')
# 设置y轴的标签为'Frequency',表示直方图的高度(或面积)代表每个区间内数据的频数或频率。
plt.ylabel('Frequency')
# 设置图形的标题为'Distribution of Net Worth',表示这个图形展示的是“净值”的分布情况。
plt.title('Distribution of Net Worth')
# 将图形保存为一个PNG文件到指定的路径('/Users/c/Desktop/heatmap_correlation_matrix.png')。dpi=350设置保存的图像分辨率为350像素每英寸。
# 注意:文件名'heatmap_correlation_matrix.png'可能会与实际内容不符,因为这里是一个直方图,而不是热力图或相关性矩阵。
plt.savefig('/Users/c/Desktop/heatmap_correlation_matrix.png', dpi=350)
# 显示图形在屏幕上。如果这行代码不执行,图形将只被保存到文件中,而不会在屏幕上显示。
plt.show()
净值列数据直方图,富人的世界贫富悬殊还是很严重啊!
# 创建一个新的图形窗口,并设置其大小为20x20英寸。这个尺寸将决定绘图在屏幕或保存时的物理大小。
plt.figure(figsize=(20,20))
# 使用df['COUNTRY'].value_counts()计算'COUNTRY'列中每个唯一值的出现次数,并将这些次数作为饼图的扇区大小。
# value_counts()方法返回一个Series,其索引是唯一的'COUNTRY'值,值是这些唯一值的出现次数。
plt.pie(df['COUNTRY'].value_counts(),
# labels参数用于指定饼图中每个扇区的标签。这里使用df['COUNTRY'].unique()来获取'COUNTRY'列的所有唯一值作为标签。
labels=df['COUNTRY'].unique(),
# autopct参数是一个格式化字符串或函数,用于指定饼图中每个扇区的百分比标签的格式。
# '%1.1f%%'表示显示带有1位小数的百分比值。
autopct='%1.1f%%')
# 设置图形的标题为'Country-wise Distribution',表示这是一个按国家分布的饼图。
plt.title('Country-wise Distribution')
plt.savefig('/Users/c/Desktop/heatmap_correlation_matrix.png', dpi=350)
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
每个国家富人的占比情况,中国只占2.4%。
# 从df(一个pandas DataFrame)中选择'NET WORTH'列中最大的10个值及其对应的行,并将结果存储在top_10变量中。
# 这将返回一个新的DataFrame,其中包含'NET WORTH'列中最大的10个值以及相应的所有列。
top_10 = df.nlargest(10, 'NET WORTH')
# 创建一个新的图形窗口,并设置其大小为12x8英寸。这将决定绘图在屏幕或保存时的物理大小。
plt.figure(figsize=(12, 8))
# 使用seaborn库(假设已经通过import seaborn as sns导入)的barplot函数来绘制一个条形图。
# x参数指定了条形图的x轴数据,即'NET WORTH'列。
# y参数通常用于指定条形的分类变量,但在这里,它用于指定条形的标签(通常是分类变量的值),因为我们想要显示'EXECUTIVE NAME'。
# data参数指定了数据源,即前面创建的top_10 DataFrame。
# palette参数指定了条形的颜色方案,这里使用了'viridis'颜色方案。
sns.barplot(x='NET WORTH', y='EXECUTIVE NAME', data=top_10, palette='viridis')
# 设置图形的标题为'Top 10 Richest People in the World - 2024'。
plt.title('Top 10 Richest People in the World - 2024')
# 设置x轴的标签为'Net Worth (in billions)',表示条形图x轴表示的是净值(以十亿美元为单位)。
plt.xlabel('Net Worth (in billions)')
# 设置y轴的标签为'Executive Name',表示条形图的y轴显示的是执行人员(可能是富豪)的名字。
plt.ylabel('Executive Name')
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
全球富人榜前十,第一名那英文是马斯克吧,是个很有格局的人,追求的是对科技进步的极限,而不是金钱。
# 创建一个新的图形窗口,并设置其大小为8x8英寸。这将决定绘图在屏幕或保存时的物理大小。
plt.figure(figsize=(8, 8))
# 使用pie函数绘制一个饼图。饼图的扇区大小由top_10['NET WORTH']列中的值决定。
# 但是,请注意,通常pie图的扇区大小表示的是比例(即百分比),而不是具体的数值。
# 如果'NET WORTH'列包含具体的数值(如净值金额),则可能需要先进行归一化处理。
plt.pie(top_10['NET WORTH'],
# labels参数指定每个扇区的标签,这里使用top_10['EXECUTIVE NAME']作为标签,即显示每个富豪的名字。
labels=top_10['EXECUTIVE NAME'],
# autopct参数指定了每个扇区上显示的百分比格式,'%1.1f%%'表示带有一位小数的百分比。
autopct='%1.1f%%',
# startangle参数指定了饼图的起始角度(以度为单位),这里设置为140度,即饼图从140度角的位置开始绘制。
startangle=140,
# colors参数指定了饼图中每个扇区的颜色,这里使用seaborn库(sns)的color_palette函数来生成一个包含10种颜色的调色板。
# 'viridis'是seaborn提供的一个颜色方案名称,它将生成一个从蓝到黄的渐变色系。
colors=sns.color_palette('viridis', 10))
# 设置图形的标题为'Net Worth Distribution of Top 10 Richest People',表示这是前10位最富有的人的净值分布图。
plt.title('Net Worth Distribution of Top 10 Richest People')
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
前 10 名最富有的人的净资产分布饼图,还是马斯克的饼大。
# 创建一个新的图形窗口,并设置其大小为20x20英寸。这将决定绘图在屏幕或保存时的物理大小。
plt.figure(figsize=(20, 20))
# 使用seaborn库(假设已经通过import seaborn as sns导入)的countplot函数来绘制一个条形图。
# 这个条形图展示了'COUNTRY'列中不同国家的频次(即每个国家有多少人在数据集中)。
# y参数指定了条形图的y轴数据,即'COUNTRY'列。
# data参数指定了数据源,即df(一个pandas DataFrame)。
# order参数指定了条形图的排序顺序,这里使用df['COUNTRY'].value_counts().index来获取按频次排序的国家列表。
# palette参数指定了条形的颜色方案,这里使用了'cubehelix'颜色方案。
sns.countplot(y='COUNTRY', data=df, order=df['COUNTRY'].value_counts().index, palette='cubehelix')
# 设置图形的标题为'Number of Richest People by Country',表示这是按国家分类的最富有人的数量图。
plt.title('Number of Richest People by Country')
# 设置x轴的标签为'Count',表示条形图的x轴表示的是频次(即每个国家的人数)。
plt.xlabel('Count')
# 设置y轴的标签为'Country',表示条形图的y轴表示的是国家。
plt.ylabel('Country')
plt.savefig('/Users/c/Desktop/heatmap_correlation_matrix.png', dpi=350)
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
按国家/地区划分的最富有人数统计图 ,第一名为什么最后没把A写出来。
# 创建一个新的图形窗口,并设置其大小为20x20英寸。这将影响图形的尺寸,使得图形在屏幕上或保存为文件时具有更大的尺寸。
plt.figure(figsize=(20, 20))
# 使用seaborn库(假设已经通过import seaborn as sns导入)的boxplot函数来绘制一个箱型图(Boxplot)。
# 箱型图是一种用于展示一组数值数据分散情况的统计图,包括中位数、四分位数和可能的异常值。
# x参数指定了箱型图的x轴数据,即'NET WORTH'列,这通常表示要比较的不同类别的数据。
# y参数指定了箱型图的y轴数据,即'COUNTRY'列,这通常用于区分不同的组别或类别。
# data参数指定了数据源,即df(一个pandas DataFrame),它包含了'NET WORTH'和'COUNTRY'两列。
# palette参数指定了箱型图中各箱体的颜色方案,这里使用了'coolwarm'颜色方案,这是一种从冷色调(蓝色)到暖色调(红色)的渐变颜色。
sns.boxplot(x='NET WORTH', y='COUNTRY', data=df, palette='coolwarm')
# 设置图形的标题为'Net Worth Distribution by Country',表示这是一个展示不同国家净值分布的箱型图。
plt.title('Net Worth Distribution by Country')
# 设置x轴的标签为'Net Worth (in billions)',表示箱型图的x轴表示的是净值(以十亿美元为单位)。
plt.xlabel('Net Worth (in billions)')
# 设置y轴的标签为'Country',表示箱型图的y轴表示的是国家。
plt.ylabel('Country')
plt.savefig('/Users/c/Desktop/heatmap_correlation_matrix.png', dpi=350)
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
按国家/地区划分的净资产箱形图,这个图可以看异常值噢,就是四分位法的可视化版。
# 创建一个新的图形窗口,并设置其大小为20x20英寸。这将决定图形在屏幕上或保存时的物理大小。
plt.figure(figsize=(20, 20))
# 使用seaborn库(假设已经通过import seaborn as sns导入)的violinplot函数来绘制小提琴图(Violin Plot)。
# 小提琴图是一种结合了箱型图和核密度估计(KDE)的可视化工具,能够显示数据的分布形状、中位数、四分位数以及可能的异常值。
# x参数指定了小提琴图的x轴数据,即'NET WORTH'列,这通常表示要比较的不同类别的数据。
# y参数指定了小提琴图的y轴数据,即'COUNTRY'列,这通常用于区分不同的组别或类别。
# data参数指定了数据源,即df(一个pandas DataFrame),它包含了'NET WORTH'和'COUNTRY'两列。
# palette参数指定了小提琴图中各个小提琴的颜色方案,这里使用了'muted'颜色方案,这是一种柔和的颜色组合。
sns.violinplot(x='NET WORTH', y='COUNTRY', data=df, palette='muted')
# 设置图形的标题为'Net Worth Distribution by Country',表示这是一个展示不同国家净值分布的小提琴图。
plt.title('Net Worth Distribution by Country')
# 设置x轴的标签为'Net Worth (in billions)',表示小提琴图的x轴表示的是净值(以十亿美元为单位)。
plt.xlabel('Net Worth (in billions)')
# 设置y轴的标签为'Country',表示小提琴图的y轴表示的是国家。
plt.ylabel('Country')
plt.savefig('/Users/c/Desktop/heatmap_correlation_matrix.png', dpi=350)
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
按国家/地区划分的净资产小提琴图。
# 使用seaborn库(假设已经通过import seaborn as sns导入)的histplot函数来绘制一个直方图,并可以叠加一个核密度估计(KDE)曲线。
# histplot函数是seaborn库中用于绘制直方图的函数,相比matplotlib的hist函数,它提供了更多的可定制选项和更好的可视化效果。
sns.histplot(df['NET WORTH'], kde=True, color='purple')
# kde=True参数表示在直方图上叠加一个核密度估计(KDE)曲线,用于平滑地显示数据的分布。
# color='purple'参数设置直方图和KDE曲线的颜色为紫色。
# 设置图形的标题为'Distribution of Net Worth',表示这是一个展示净值分布的图形。
plt.title('Distribution of Net Worth')
# 设置x轴的标签为'Net Worth (in billions)',表示x轴表示的是净值(以十亿美元为单位)。
plt.xlabel('Net Worth (in billions)')
# 设置y轴的标签为'Frequency',表示y轴表示的是各个净值区间内的频数或频率。
plt.ylabel('Frequency')
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
净资产分布图,由于富人的世界贫富差距比较严重,导致这个图不好看,很偏态!
# 创建一个新的图形窗口,并设置其大小为20x20英寸。这将决定图形在屏幕上或保存时的物理大小。
plt.figure(figsize=(20, 20))
# 使用seaborn库(假设已经通过import seaborn as sns导入)的stripplot函数来绘制一个条带图(Strip Plot)。
# 条带图是一种展示分类变量(在这里是'COUNTRY')与数值变量(在这里是'NET WORTH')之间关系的图形。
# 它通过为每个观察值在y轴上的分类变量位置绘制一个点来展示数值变量的分布。
# x参数指定了条带图的x轴数据,即'NET WORTH'列,表示净值。
# y参数指定了条带图的y轴数据,即'COUNTRY'列,表示国家。
# data参数指定了数据源,即df(一个pandas DataFrame),它包含了'NET WORTH'和'COUNTRY'两列。
# jitter参数设置为True,表示在y轴(即国家)上添加一些随机噪声(抖动),以避免数据点重叠。
# palette参数指定了条带图中点的颜色方案,这里使用了'pastel'颜色方案,这是一种柔和的彩色方案。
sns.stripplot(x='NET WORTH', y='COUNTRY', data=df, jitter=True, palette='pastel')
# 设置图形的标题为'Net Worth Distribution by Country',表示这是一个展示不同国家净值分布的图形。
plt.title('Net Worth Distribution by Country')
# 设置x轴的标签为'Net Worth (in billions)',表示x轴表示的是净值(以十亿美元为单位)。
plt.xlabel('Net Worth (in billions)')
# 设置y轴的标签为'Country',表示y轴表示的是国家。
plt.ylabel('Country')
plt.savefig('/Users/c/Desktop/heatmap_correlation_matrix.png', dpi=350)
# 显示图形在屏幕上。如果这行代码不执行,图形将不会被显示出来。
plt.show()
按国家/地区划分的净资产条带图 。
小结:
今天使用富人数据,画了很多图,方便以后调用,大家也可以关注我方便查看。
我还会绘制很多图,网页版的、可以动的、可交互的都会,点个赞,收藏评论下是我创作的动力。