280 KiB
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#import seaborn as sns
# Загрузка данных
df = pd.read_csv("..//..//static//csv//Forbes Billionaires.csv")
# Вывод колонок
print(df.columns)
print()
df.info()
Описание набора¶
The World's Billionaires — ежегодный рейтинг самых богатых миллиардеров мира по документально подтвержденному состоянию, составляемый и публикуемый в марте каждого года американским деловым журналом Forbes. Общая чистая стоимость каждого человека в списке оценивается и указывается в долларах США на основе их документально подтвержденных активов с учетом задолженности и других факторов. Члены королевской семьи и диктаторы, чье богатство обусловлено их положением, исключены из этих списков. Этот рейтинг представляет собой индекс самых богатых документально подтвержденных лиц, исключая любой рейтинг тех, чье богатство не может быть полностью установлено.
# Вывод столбцов
df.head()
# Краткая статистическая сводка для данных:
df.describe()
Получение сведений о пропущенных данных¶
# Количество пустых значений признаков
print(df.isnull().sum())
Нет пропущенных данных
Анализ сведений о наборе данных¶
Набор данных:
Набор данных представляет собой информацию о самых богатых миллиардерах мира. Их состоянии, стране, источнике богатсва, отрасль, в которой они работают. По этим данным будет проводиться анализ.
Проблемная область:
Анализ данных из списка миллиардеров Forbes позволяет не только понять текущее состояние богатства в мире, но и выявить более глубокие тенденции и паттерны, которые могут помочь в принятии бизнес-решений, понимании экономических процессов и определении направлений для дальнейших исследований. Эти данные могут быть основой для многочисленных статей, отчетов и аналитических исследований, что делает их ценными для широкого круга специалистов в различных областях.
Анализ содержимого
Объекты наблюдения: миллиардеры.
Атрибуты объектов: имя, величина богатства, возраст, страна, источник, индустрия
Связи между объектами:
- Зависимость между возрастом миллиардера и его состоянием.
- В каких странах наибольшее количество миллиардеров и насколько их состояние велико по сравнению с другими странами.
- Как источник богатства связан с определенными индустриями.
- В каких странах преобладают миллиардеры из определенных отраслей.
- Могут ли более молодые миллиардеры быть более склонными к успеху в определенных индустриях (например, технологии), а более старшие миллиардеры — в традиционных отраслях (например, финансы).
Бизнес-цель¶
- Концентрация и география богатства
Цель: Выявить страны с наибольшим количеством миллиардеров и наибольшей концентрацией богатства для оценки экономической стабильности и перспектив для инвестиций в эти регионы.
Эффект: Выбор стратегических регионов для выхода на рынок или расширения бизнеса. Повышение вероятности успешной экспансии за счет инвестиций в страны с наиболее стабильной экономической ситуацией и высоким уровнем благосостояния.
- Возрастные и демографические характеристики миллиардной элиты
Цель: Проанализировать возрастные и демографические характеристики миллиардеров, чтобы выявить общие черты, такие как средний возраст успешных предпринимателей, страны происхождения и индустрии, в которых они добились успеха.
Эффект: Определение возрастных групп или регионов с наибольшей вероятностью для предпринимательского успеха. Возможность целенаправленного поиска бизнес-партнеров или инвесторов из этих регионов и возрастных групп.
Техническая цель¶
- Концентрация и география богатства
Цель: Построить аналитическую модель для оценки концентрации богатства по странам.
На вход модели подаются: страна, количество миллиардеров, совокупное состояние миллиардеров в стране.
Целевые показатели: Количество миллиардеров и общий объем состояния в стране.
- Возрастные и демографические характеристики миллиардной элиты
Цель: Разработать модель для анализа возрастной и региональной структуры миллиардного состояния.
На вход подаются: возраст, страна, индустрия, размер состояния.
Целевые показатели: Средний возраст миллиардеров по странам и индустриям, распределение состояния по возрастным категориям.
# Визуализация данных - ящик с усами.
plt.figure(figsize=(10, 5))
sns.boxplot(x=df["Networth"])
plt.title("Box Plot для Networth")
plt.xlabel("Networth")
plt.show()
Исходя из диаграммы, можно сделать вывод, что:
Имущественное распределение крайне неравномерное. Лишь несколько людей обладают значительно большим состоянием, чем большинство. Основное состояние миллиардеров сосредоточено в меньших диапазонах (до 10 миллиардов).
# Визуализируем отношение возраста и состояния
plt.figure(figsize=(10, 6))
plt.scatter(df["Networth"], df["Age"])
plt.xlabel("Networth")
plt.ylabel("Age")
plt.title("Networth vs Age")
plt.show()
Данные показывают, что в группе миллиардеров нет прямой зависимости между возрастом и величиной состояния, но большинство людей с огромным состоянием (выше 100 миллиардов) — это исключения, а не правило.
# Визуализируем отношение страны и состояния
plt.figure(figsize=(10, 15))
plt.scatter(df["Networth"], df["Country"])
plt.xlabel("Networth")
plt.ylabel("Country")
plt.title("Networth vs Country")
plt.show()
Эта диаграмма указывает на значительное неравенство в распределении состояния между странами, с явным доминированием США, Китая, Индии и нескольких других крупных экономик. Большинство других стран имеют гораздо меньше миллиардных состояний, и их концентрация богатства значительно ниже.
Проблема выбранного набора данных¶
Зашумленность данных:
Если данные собирались из разных источников, возможно наличие некорректных значений, таких как неправильные оценки состояния, неверные возрастные данные или ошибки в указании стран и индустрий. Это может привести к ошибочным выводам.
Смещение данных: Набор данных может быть смещен в пользу определенных стран или индустрий. Например, список может включать больше американских миллиардеров или миллиардеров из технологической индустрии, что не отражает равномерно весь глобальный бизнес-контекст.
Выбросы:
Супербогатые миллиардеры (например, с состоянием более 100 миллиардов) могут сильно выделяться и смещать средние значения, делая общие выводы менее репрезентативными для большинства людей в выборке.
Актуальность данных:
Если данные о состоянии миллиардеров собирались несколько лет назад, то они могут уже не быть актуальными. Изменения на рынках, политические события или пандемии могут значительно повлиять на текущее состояние бизнеса и богатство людей.
Борьба с выбросами¶
# Статистический анализ для определения выбросов
Q1 = df["Networth"].quantile(0.25)
Q3 = df["Networth"].quantile(0.75)
IQR = Q3 - Q1
# Определение порога для выбросов
threshold = 1.5 * IQR
outliers = (df["Networth"] < (Q1 - threshold)) | (
df["Networth"] > (Q3 + threshold)
)
# Обработка выбросов
# В данном случае мы уберем выбросы
df.loc[outliers, "Networth"] = 0
df1 = df[df.Networth != 0]
# Визуализация данных - ящик с усами.
plt.figure(figsize=(10, 5))
sns.boxplot(x=df["Networth"])
plt.title("Box Plot для Networth")
plt.xlabel("Networth")
plt.show()
Разбиение датасета на три части: обучающую, контрольную и тестовую выборки¶
from sklearn.model_selection import train_test_split
# Выделим признаки (все столбцы, кроме целевого, например "Networth") и целевой признак (например, "Networth")
X = df.drop(columns=["Networth"]) # Признаки (все столбцы, кроме целевого признака 'Networth')
y = df["Networth"] # Целевая переменная (Networth)
# 1. Разделяем данные на обучающую (60%) и временную (40%) выборки
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)
# 2. Разделяем временную выборку пополам на контрольную (20%) и тестовую (20%) выборки
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)
# Выводим размеры выборок
print(f"Размер обучающей выборки: {len(X_train)}")
print(f"Размер контрольной выборки: {len(X_val)}")
print(f"Размер тестовой выборки: {len(X_test)}")