AIM-PIbd-32-Smirnov-A-A/lab1/lab1.ipynb
2024-10-26 14:00:22 +04:00

124 KiB
Raw Permalink Blame History

Начало лабораторной

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

In [11]:
import pandas as pd
import numpy as np

df = pd.read_csv("..//..//static//csv//marketing_campaign.csv", sep="\t")

print (df.columns)
Index(['ID', 'Year_Birth', 'Education', 'Marital_Status', 'Income', 'Kidhome',
       'Teenhome', 'Dt_Customer', 'Recency', 'MntWines', 'MntFruits',
       'MntMeatProducts', 'MntFishProducts', 'MntSweetProducts',
       'MntGoldProds', 'NumDealsPurchases', 'NumWebPurchases',
       'NumCatalogPurchases', 'NumStorePurchases', 'NumWebVisitsMonth',
       'AcceptedCmp3', 'AcceptedCmp4', 'AcceptedCmp5', 'AcceptedCmp1',
       'AcceptedCmp2', 'Complain', 'Z_CostContact', 'Z_Revenue', 'Response'],
      dtype='object')

Эта вывод датасета по столбцам "Year_Birth", "Marital_Status", "Income".

In [12]:
data = df[["Year_Birth", "Marital_Status", "Income"]].copy()
print(data)
      Year_Birth Marital_Status   Income
0           1957         Single  58138.0
1           1954         Single  46344.0
2           1965       Together  71613.0
3           1984       Together  26646.0
4           1981        Married  58293.0
...          ...            ...      ...
2235        1967        Married  61223.0
2236        1946       Together  64014.0
2237        1981       Divorced  56981.0
2238        1956       Together  69245.0
2239        1954        Married  52869.0

[2240 rows x 3 columns]

Данная столбчатая диаграмма отображает распределение количества клиентов по годам их рождения. На оси X указаны конкретные годы рождения, а на оси Y — количество клиентов, родившихся в соответствующем году. Анализируя диаграмму, можно сделать выводы о возрастной структуре клиентской базы. Видно, что пик рождаемости среди клиентов приходится на период с 1950 по 1980 годы, что может указывать на преобладание клиентов среднего возраста.

In [16]:
import matplotlib.pyplot as plt

year_counts = data["Year_Birth"].value_counts().sort_index()

plt.figure(figsize=(12, 6))
year_counts.plot(kind="bar", color="skyblue", edgecolor="black")
plt.title("Количество клиентов по годам рождения")
plt.xlabel("Год рождения")
plt.ylabel("Количество клиентов")
plt.show()
No description has been provided for this image

Данная гистограмма отображает распределение доходов среди клиентов. На оси X указаны значения доходов, разбитые на 50 интервалов, что позволяет увидеть, как доходы распределены по разным уровням. На оси Y указано количество записей (частота) в каждом интервале дохода. Анализируя гистограмму "Income", можно сделать вывод о том, как варьируются доходы. Например, мы можем увидеть, что большинство клиентов имеют доход в пределах определенного диапазона, и только небольшая часть имеет более высокий доход.

In [48]:
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
data["Income"].plot.hist(bins=50, color='skyblue', edgecolor='black')
plt.title("Распределение доходов среди клиентов")
plt.show()
No description has been provided for this image

Данная круговая диаграмма отображает распределение клиентов по их семейному положению. На ней представлены различные категории семейного положения, такие как Married, Together, Single, Divorced и Widow, каждая из которых окрашена в отдельный цвет и подписана соответствующим процентом от общего числа клиентов. Анализируя эту диаграмму, можно сделать вывод о том, что наибольшую долю клиентов составляют Married (38.7%) и Together (26.0%), что указывает на преобладание семейных или живущих вместе клиентов.

In [45]:
filtered_data = data[data["Marital_Status"].isin(["Married", "Together", "Single", "Divorced", "Widow"])]

plt.figure(figsize=(8, 8))  
filtered_data["Marital_Status"].value_counts().plot(
    kind="pie", 
    autopct='%1.1f%%', 
    colors=['salmon', 'skyblue', 'lightgreen', 'orange', 'purple'], 
)
plt.title("Распределение клиентов по семейному положению (без YOLO и Absurd)")
plt.ylabel("")  
plt.show()
No description has been provided for this image