2024-10-25 21:33:48 +04:00

280 KiB
Raw Blame History

Лабораторная работа №2

1. Первый набор данных Forbes 2022 Billionaires data (Данные о миллиардерах Forbes за 2022 год)

Выгрузка данных из CSV файла в датафрейм

In [51]:
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()
Index(['Rank ', 'Name', 'Networth', 'Age', 'Country', 'Source', 'Industry'], dtype='object')

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2600 entries, 0 to 2599
Data columns (total 7 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   Rank      2600 non-null   int64  
 1   Name      2600 non-null   object 
 2   Networth  2600 non-null   float64
 3   Age       2600 non-null   int64  
 4   Country   2600 non-null   object 
 5   Source    2600 non-null   object 
 6   Industry  2600 non-null   object 
dtypes: float64(1), int64(2), object(4)
memory usage: 142.3+ KB

Описание набора

The World's Billionaires — ежегодный рейтинг самых богатых миллиардеров мира по документально подтвержденному состоянию, составляемый и публикуемый в марте каждого года американским деловым журналом Forbes. Общая чистая стоимость каждого человека в списке оценивается и указывается в долларах США на основе их документально подтвержденных активов с учетом задолженности и других факторов. Члены королевской семьи и диктаторы, чье богатство обусловлено их положением, исключены из этих списков. Этот рейтинг представляет собой индекс самых богатых документально подтвержденных лиц, исключая любой рейтинг тех, чье богатство не может быть полностью установлено.

In [52]:
# Вывод столбцов
df.head()
Out[52]:
Rank Name Networth Age Country Source Industry
0 1 Elon Musk 219.0 50 United States Tesla, SpaceX Automotive
1 2 Jeff Bezos 171.0 58 United States Amazon Technology
2 3 Bernard Arnault & family 158.0 73 France LVMH Fashion & Retail
3 4 Bill Gates 129.0 66 United States Microsoft Technology
4 5 Warren Buffett 118.0 91 United States Berkshire Hathaway Finance & Investments
In [53]:
# Краткая статистическая сводка для данных:
df.describe()
Out[53]:
Rank Networth Age
count 2600.000000 2600.000000 2600.000000
mean 1269.570769 4.860750 64.271923
std 728.146364 10.659671 13.220607
min 1.000000 1.000000 19.000000
25% 637.000000 1.500000 55.000000
50% 1292.000000 2.400000 64.000000
75% 1929.000000 4.500000 74.000000
max 2578.000000 219.000000 100.000000

Получение сведений о пропущенных данных

In [54]:
# Количество пустых значений признаков
print(df.isnull().sum())
Rank        0
Name        0
Networth    0
Age         0
Country     0
Source      0
Industry    0
dtype: int64

Нет пропущенных данных

Анализ сведений о наборе данных

Набор данных:

Набор данных представляет собой информацию о самых богатых миллиардерах мира. Их состоянии, стране, источнике богатсва, отрасль, в которой они работают. По этим данным будет проводиться анализ.

Проблемная область:

Анализ данных из списка миллиардеров Forbes позволяет не только понять текущее состояние богатства в мире, но и выявить более глубокие тенденции и паттерны, которые могут помочь в принятии бизнес-решений, понимании экономических процессов и определении направлений для дальнейших исследований. Эти данные могут быть основой для многочисленных статей, отчетов и аналитических исследований, что делает их ценными для широкого круга специалистов в различных областях.

Анализ содержимого

Объекты наблюдения: миллиардеры.

Атрибуты объектов: имя, величина богатства, возраст, страна, источник, индустрия

Связи между объектами:

  1. Зависимость между возрастом миллиардера и его состоянием.
  2. В каких странах наибольшее количество миллиардеров и насколько их состояние велико по сравнению с другими странами.
  3. Как источник богатства связан с определенными индустриями.
  4. В каких странах преобладают миллиардеры из определенных отраслей.
  5. Могут ли более молодые миллиардеры быть более склонными к успеху в определенных индустриях (например, технологии), а более старшие миллиардеры — в традиционных отраслях (например, финансы).

Бизнес-цель

  1. Концентрация и география богатства

Цель: Выявить страны с наибольшим количеством миллиардеров и наибольшей концентрацией богатства для оценки экономической стабильности и перспектив для инвестиций в эти регионы.

Эффект: Выбор стратегических регионов для выхода на рынок или расширения бизнеса. Повышение вероятности успешной экспансии за счет инвестиций в страны с наиболее стабильной экономической ситуацией и высоким уровнем благосостояния.

  1. Возрастные и демографические характеристики миллиардной элиты

Цель: Проанализировать возрастные и демографические характеристики миллиардеров, чтобы выявить общие черты, такие как средний возраст успешных предпринимателей, страны происхождения и индустрии, в которых они добились успеха.

Эффект: Определение возрастных групп или регионов с наибольшей вероятностью для предпринимательского успеха. Возможность целенаправленного поиска бизнес-партнеров или инвесторов из этих регионов и возрастных групп.

Техническая цель

  1. Концентрация и география богатства

Цель: Построить аналитическую модель для оценки концентрации богатства по странам.

На вход модели подаются: страна, количество миллиардеров, совокупное состояние миллиардеров в стране.

Целевые показатели: Количество миллиардеров и общий объем состояния в стране.

  1. Возрастные и демографические характеристики миллиардной элиты

Цель: Разработать модель для анализа возрастной и региональной структуры миллиардного состояния.

На вход подаются: возраст, страна, индустрия, размер состояния.

Целевые показатели: Средний возраст миллиардеров по странам и индустриям, распределение состояния по возрастным категориям.

In [55]:
# Визуализация данных - ящик с усами.
plt.figure(figsize=(10, 5))
sns.boxplot(x=df["Networth"])
plt.title("Box Plot для Networth")
plt.xlabel("Networth")
plt.show()
No description has been provided for this image

Исходя из диаграммы, можно сделать вывод, что:

Имущественное распределение крайне неравномерное. Лишь несколько людей обладают значительно большим состоянием, чем большинство. Основное состояние миллиардеров сосредоточено в меньших диапазонах (до 10 миллиардов).

In [56]:
# Визуализируем отношение возраста и состояния
plt.figure(figsize=(10, 6))
plt.scatter(df["Networth"], df["Age"])
plt.xlabel("Networth")
plt.ylabel("Age")
plt.title("Networth vs Age")
plt.show()
No description has been provided for this image

Данные показывают, что в группе миллиардеров нет прямой зависимости между возрастом и величиной состояния, но большинство людей с огромным состоянием (выше 100 миллиардов) — это исключения, а не правило.

In [57]:
# Визуализируем отношение страны и состояния
plt.figure(figsize=(10, 15))
plt.scatter(df["Networth"], df["Country"])
plt.xlabel("Networth")
plt.ylabel("Country")
plt.title("Networth vs Country")
plt.show()
No description has been provided for this image

Эта диаграмма указывает на значительное неравенство в распределении состояния между странами, с явным доминированием США, Китая, Индии и нескольких других крупных экономик. Большинство других стран имеют гораздо меньше миллиардных состояний, и их концентрация богатства значительно ниже.

Проблема выбранного набора данных

Зашумленность данных:
Если данные собирались из разных источников, возможно наличие некорректных значений, таких как неправильные оценки состояния, неверные возрастные данные или ошибки в указании стран и индустрий. Это может привести к ошибочным выводам.

Смещение данных: Набор данных может быть смещен в пользу определенных стран или индустрий. Например, список может включать больше американских миллиардеров или миллиардеров из технологической индустрии, что не отражает равномерно весь глобальный бизнес-контекст.

Выбросы:
Супербогатые миллиардеры (например, с состоянием более 100 миллиардов) могут сильно выделяться и смещать средние значения, делая общие выводы менее репрезентативными для большинства людей в выборке.

Актуальность данных:
Если данные о состоянии миллиардеров собирались несколько лет назад, то они могут уже не быть актуальными. Изменения на рынках, политические события или пандемии могут значительно повлиять на текущее состояние бизнеса и богатство людей.

Борьба с выбросами

In [58]:
# Статистический анализ для определения выбросов
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()
No description has been provided for this image

Разбиение датасета на три части: обучающую, контрольную и тестовую выборки

In [59]:
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)}")
Размер обучающей выборки: 1560
Размер контрольной выборки: 520
Размер тестовой выборки: 520