{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Лабораторная работа 1\n",
    "\n",
    "Выгрузка данных из csv файла в датафрейм"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['ID', 'Year_Birth', 'Education', 'Marital_Status', 'Income', 'Kidhome',\n",
      "       'Teenhome', 'Dt_Customer', 'Recency', 'MntWines', 'MntFruits',\n",
      "       'MntMeatProducts', 'MntFishProducts', 'MntSweetProducts',\n",
      "       'MntGoldProds', 'NumDealsPurchases', 'NumWebPurchases',\n",
      "       'NumCatalogPurchases', 'NumStorePurchases', 'NumWebVisitsMonth',\n",
      "       'AcceptedCmp3', 'AcceptedCmp4', 'AcceptedCmp5', 'AcceptedCmp1',\n",
      "       'AcceptedCmp2', 'Complain', 'Z_CostContact', 'Z_Revenue', 'Response'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "df = pd.read_csv(\"..//..//static//csv//marketing_campaign.csv\", sep=\"\\t\")\n",
    "\n",
    "print (df.columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Эта вывод датасета по столбцам \"Year_Birth\", \"Marital_Status\", \"Income\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      Year_Birth Marital_Status   Income\n",
      "0           1957         Single  58138.0\n",
      "1           1954         Single  46344.0\n",
      "2           1965       Together  71613.0\n",
      "3           1984       Together  26646.0\n",
      "4           1981        Married  58293.0\n",
      "...          ...            ...      ...\n",
      "2235        1967        Married  61223.0\n",
      "2236        1946       Together  64014.0\n",
      "2237        1981       Divorced  56981.0\n",
      "2238        1956       Together  69245.0\n",
      "2239        1954        Married  52869.0\n",
      "\n",
      "[2240 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "data = df[[\"Year_Birth\", \"Marital_Status\", \"Income\"]].copy()\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Данная столбчатая диаграмма отображает распределение количества клиентов по годам их рождения. На оси X указаны конкретные годы рождения, а на оси Y — количество клиентов, родившихся в соответствующем году. Анализируя диаграмму, можно сделать выводы о возрастной структуре клиентской базы. Видно, что пик рождаемости среди клиентов приходится на период с 1950 по 1980 годы, что может указывать на преобладание клиентов среднего возраста."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 38688 characters]",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "year_counts = data[\"Year_Birth\"].value_counts().sort_index()\n",
    "\n",
    "  \n",
    "plt.figure(figsize=(12, 6))\n",
    "year_counts.plot(kind=\"bar\", color=\"yellow\", edgecolor=\"black\")\n",
    "plt.title(\"Количество клиентов по годам рождения\")\n",
    "plt.xlabel(\"Год рождения\")\n",
    "plt.ylabel(\"Количество клиентов\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Данная гистограмма отображает распределение доходов среди клиентов. На оси X указаны значения доходов, разбитые на 50 интервалов, что позволяет увидеть, как доходы распределены по разным уровням. На оси Y указано количество записей (частота) в каждом интервале дохода. Анализируя гистограмму \"Income\", можно сделать вывод о том, как варьируются доходы. Например, мы можем увидеть, что большинство клиентов имеют доход в пределах определенного диапазона, и только небольшая часть имеет более высокий доход."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 24348 characters]",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.figure(figsize=(10, 6))\n",
    "data[\"Income\"].plot.hist(bins=50, color='yellow', edgecolor='black')\n",
    "plt.title(\"Распределение доходов среди клиентов\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Данная круговая диаграмма отображает распределение клиентов по их семейному положению. На ней представлены различные категории семейного положения, такие как Married, Together, Single, Divorced и Widow, каждая из которых окрашена в отдельный цвет и подписана соответствующим процентом от общего числа клиентов. Анализируя эту диаграмму, можно сделать вывод о том, что наибольшую долю клиентов составляют Married (38.7%) и Together (26.0%), что указывает на преобладание семейных или живущих вместе клиентов. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 55644 characters]",
      "text/plain": [
       "<Figure size 800x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "filtered_data = data[data[\"Marital_Status\"].isin([\"Married\", \"Together\", \"Single\", \"Divorced\", \"Widow\"])]\n",
    "\n",
    "plt.figure(figsize=(8, 8))  \n",
    "filtered_data[\"Marital_Status\"].value_counts().plot(\n",
    "    kind=\"pie\", \n",
    "    autopct='%1.1f%%', \n",
    "    colors=['salmon', 'skyblue', 'lightgreen', 'orange', 'purple'], \n",
    ")\n",
    "plt.title(\"Распределение клиентов по семейному положению (без YOLO и Absurd)\")\n",
    "plt.ylabel(\"\")  \n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "aimenv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
