{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "9PP0UCeGztkS" }, "source": [ "# Введение в анализ данных\n", "\n", "## Что такое среднее и как с ним правильно работать." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:48.836506Z", "start_time": "2021-03-06T12:51:48.082486Z" }, "id": "Dd2PKAtHztkU" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from random import choices, shuffle\n", "import scipy.stats as sps\n", "import matplotlib.pyplot as plt\n", "\n", "import seaborn as sns\n", "\n", "sns.set(style=\"whitegrid\", font_scale=1.3, palette=\"Set2\")" ] }, { "cell_type": "markdown", "metadata": { "id": "kj68YNruztkV" }, "source": [ "### 1. Кошачий университет\n", "\n", "Пусть у нас есть 20 групп котиков-студентов.\n", "\n", "**Вопрос:** сколько котиков в среднем в группе?\n", "\n", "**Ответ деканата:** посчитать количество котиков в каждой группе и взять среднее арифметическое полученных чисел.\n", "\n", "Проведем эксперимент. Сгенерируем 20 групп, причем в каждой будет от 10 до 30 котиков." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:48.847433Z", "start_time": "2021-03-06T12:51:48.838315Z" }, "id": "2PD1h3OvztkW", "outputId": "29ea0875-1055-4a50-82e0-3d5d4a529071" }, "outputs": [ { "data": { "text/plain": [ "array([11, 26, 18, 17, 11, 13, 12, 27, 13, 26, 19, 19, 17, 26, 26, 10, 16,\n", " 29, 17, 19])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "groups_count = 20\n", "\n", "groups_size = sps.randint(low=10, high=30).rvs(size=groups_count)\n", "groups_size" ] }, { "cell_type": "markdown", "metadata": { "id": "YwXQvF9NztkW" }, "source": [ "Ответ получить очень просто:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:48.973743Z", "start_time": "2021-03-06T12:51:48.967741Z" }, "id": "fc4w4zWqztkX", "outputId": "33945ab1-acaa-479d-c103-aa7d635ecedf" }, "outputs": [ { "data": { "text/plain": [ "18.6" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "groups_size.mean()" ] }, { "cell_type": "markdown", "metadata": { "id": "_uqqpaOoztkX" }, "source": [ "Теперь предположим, что мы хотим провести эксперимент согласно тому, как учат в анализе данных:\n", "* возьмем случайную выборку котиков,\n", "* спросим у них, сколько котиков в их группе,\n", "* усредним полученные ответы.\n", "\n", "*Замечание.* Следующие операции с точки зрения кода можно сделать более эффективно, однако приведенный код повышает эффектность изложения материала.\n", "\n", "Для начала давайте создадим список всех студентов-котиков, каждому из которых присвоим номер группы." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:50.057491Z", "start_time": "2021-03-06T12:51:50.051055Z" }, "id": "lVVduBJMztkX" }, "outputs": [], "source": [ "students_group = []\n", "\n", "for i in range(groups_count):\n", " students_group += [i] * groups_size[i]" ] }, { "cell_type": "markdown", "metadata": { "id": "ImpMS7TVztkX" }, "source": [ "Возьмем 30 случайных котиков, спросим их и усредним ответы" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:50.779224Z", "start_time": "2021-03-06T12:51:50.772840Z" }, "id": "O2Zk3brsztkX", "outputId": "7dd38722-8587-421f-c095-bf4c043eedaf" }, "outputs": [ { "data": { "text/plain": [ "20.7" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "random_indexes = np.array(choices(students_group, k=30))\n", "groups_size[random_indexes].mean()" ] }, { "cell_type": "markdown", "metadata": { "id": "8yIf9ovqztkY" }, "source": [ "Хм, среднее получилось больше, чем ответ деканата. Может случайно так получилось? Ведь эксперимент случайный.\n", "\n", "Давайте повторим эксперимент 10 раз." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:54.372502Z", "start_time": "2021-03-06T12:51:54.350280Z" }, "id": "UAE20YtxztkY", "outputId": "84d69de0-4e49-4102-c5b0-dbab7a04cff8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "21.67\n", "21.0\n", "20.67\n", "19.37\n", "21.33\n", "19.3\n", "20.6\n", "22.43\n", "21.43\n", "21.3\n" ] } ], "source": [ "for _ in range(10):\n", " random_indexes = np.array(choices(students_group, k=30))\n", " print(np.round(groups_size[random_indexes].mean(), 2))" ] }, { "cell_type": "markdown", "metadata": { "id": "GYVmZCJjztkY" }, "source": [ "Что-то все равно не так...\n", "\n", "А что будет если опросить вообще всех котиков? Навернято хоть тут должен получиться тот же ответ.\n", "\n", "Попробуем" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:51:56.705167Z", "start_time": "2021-03-06T12:51:56.699454Z" }, "id": "H4OD43JsztkY", "outputId": "88d93521-7fdb-46da-a3f5-5674ebe3f3b3" }, "outputs": [ { "data": { "text/plain": [ "20.50537634408602" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "groups_size[np.array(students_group)].mean()" ] }, { "cell_type": "markdown", "metadata": { "id": "zqpOkL6NztkY" }, "source": [ "Хм, ответ все равно получился не тот, что сказали нам в деканате... В чем же дело?\n", "\n", "Оказывается, дело в том, что выбирая случайного котика мы чаще попадаем на котика из большей группы. В самом деле, если\n", "* $n$ — общее количество котиков,\n", "* $n_j$ — количество котиков в группе $j$,\n", "\n", "то вероятность того, что случайно выбранный котик учится в группе $j$ равна $n_j/n$.\n", "\n", "Посчитаем теперь средний ответ котика. Пусть $\\xi$ — количество студентов в группе у случайно выбранного котика. Тогда\n", "$$\\mathsf{E} \\xi = \\frac1n \\sum_{котик\\ i} \\sum_{j} n_j \\cdot I\\{котик\\ i\\ из\\ группы\\ j\\} = \\frac1n \\sum_{j} n_j^2.$$\n", "\n", "Проверим ответ:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:52:01.875384Z", "start_time": "2021-03-06T12:52:01.866131Z" }, "id": "y4R53gsjztkY", "outputId": "e655739d-6ab9-404b-afb7-cd3a43501098" }, "outputs": [ { "data": { "text/plain": [ "20.50537634408602" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(groups_size**2).sum() / groups_size.sum()" ] }, { "cell_type": "markdown", "metadata": { "id": "cxvekYIAztkY" }, "source": [ "Это среднее можно посчитать другим способом:\n", "$$\\mathsf{E} \\xi = \\sum_j n_j \\cdot \\mathsf{P}(случайный\\ котик\\ из\\ группы\\ j).$$\n", "\n", "Если рассматривать в качестве данных сами группы, а не котиков, то такой тип усреднения называется **взвешенным средним**. Общая формула взвешенного среднего чисел $x_1, ..., x_n$ с неотрицательными весами $w_1, ..., w_n$, для которых выполнено $\\sum_{i=1}^n w_i=1$, имеет вид $$\\sum_{i=1}^n w_i x_i.$$\n", "\n", "**Выводы:**\n", "* Деканат в качестве объектов данных рассматривает группы и берет по ним арифметическое среднее.\n", "* При проведении опроса объектами данных выступают котики, и арифметическое среднее по котикам отличается от результата деканата.\n", "* Деканат может взять взвешенное среднее и получить тот же ответ, что при проведении опроса.\n", "\n", "Этот пример — частный случай **парадокса инспекции**, который можно охарактеризовать как непосредственную зависимость наблюдения количества с самим наблюдаемым количеством." ] }, { "cell_type": "markdown", "metadata": { "id": "Q6P6UjrWztkY" }, "source": [ "---\n", "### 2. Средняя зарплата\n", "\n", "**Вопрос:** какова средняя зарплата населения?\n", "\n", "Важно отличать разные \"виды средних\":\n", "* обычное **среднее арифметическое**,\n", "* **медиана** — значение, слева и справа от которого одинаковое количество элементов,\n", "* **мода** — самое частое значение.\n", "\n", "Разницу между ними наглядно показывает иллюстрация из книги *Huff D. How To Lie With Statistics. — New York: W.W. Norton & Company, 1954*.\n", "\n", "![](загруженное1.jpg)\n", "\n", "Посмотрим на численном примере. Сгенерируем зарплату 10 000 человек в соответствии с некоторым распределением." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:52:18.375632Z", "start_time": "2021-03-06T12:52:18.367762Z" }, "id": "dJ5P0OfUztkY" }, "outputs": [], "source": [ "count = 10000\n", "salary = np.abs(sps.t(df=2, scale=100).rvs(size=count))" ] }, { "cell_type": "markdown", "metadata": { "id": "XnEdlMObztkY" }, "source": [ "Посмотрим на *описательные статистики*. Как мы видим, среднее достаточно сильно отличается от медианы." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:52:19.545372Z", "start_time": "2021-03-06T12:52:19.518971Z" }, "id": "Q8loND5IztkY", "outputId": "3103758e-91e3-46ea-e48c-851e766bf3d3" }, "outputs": [ { "data": { "text/plain": [ "count 10000.000000\n", "mean 143.361444\n", "std 274.727742\n", "min 0.014972\n", "25% 35.979807\n", "50% 81.488075\n", "75% 162.664021\n", "max 8320.602082\n", "dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(salary).describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "GvV7W_M5ztkZ" }, "source": [ "Посмотрим на гистограмму распределения. Однако, в данном случае в выборке есть **выбросы** — сильно выделяющиеся по сравнению с остальными наблюдения. Видимо, выбросами у нас являются миллиардеры. В анализе данных существуют специальные методы для работы с выбросами, однако не редко их просто выбрасывают из анализа.\n", "\n", "Выбросы сильно влияют на вид гистограммы. В данном случае видна широкая часть графика справа, в которой скорее какая-то пустота. Для наглядности стоит рисовать гистограмму в логарифмическом масштабе, на которой явно видно имеющиеся выбросы." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:52:25.290254Z", "start_time": "2021-03-06T12:52:24.284179Z" }, "id": "YWtzrq0OztkZ", "outputId": "767cf223-ae4b-424e-98ad-4b8934cd5508" }, "outputs": [ { "data": { "image/png": "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TQXdRx99pICAAB0+fDjfvt3c3HTHHXfoo48+0rBhwyRdK3Z69Oih5cuXm8WWJAcAQNn44YcftGHDBvXu3dvsP3Xr169XcnKyYmNjdd9995mWh4SESLr23ZR3AibvKq2mTZvm+76Ki4vTxYsXtX79elP8fffdp86dO2vx4sV66623TLHFfU/n5uZqwIABpitfOnXqpBMnTmjBggWmZpUl9USeHj16aP369YqKilKVKlW0b98+paenKzAwMN8Vynnxlnw/liSHglz/OdarV0/du3fXzz//XGyzKjs7Ww4ODqb3Xn/1nCQdPnxYn332mV588UUNGTJEktSxY0ddunRJsbGxGjx4sGrUqGGKb9mypWnM/um1114z/T0nJ0eBgYEKCAjQpk2bNHDgQNO68+fP6/XXXzddvR4QEKDOnTtryZIlmj17doHbfv3113XPPfeY6ijpWrNp2bJlGjBggKk5UqdOHT3xxBN69tln9fjjj0u61jB59dVXNXbsWLm7u5veX5La5nrz58+Xp6en2eciSZUrV9alS5eKfO+yZct06tQpbd68WfXr15d07fP+888/FRMTY2pWvfHGG/L09NTKlStNdfn1P3PX++OPPzRw4EC1atVKr7/+utm/pZLUlt27d1d8fLz+/PNP3Xbbbfrzzz/13//+V4899pjWrl1b5HHlyftM88Zjy5Yt8vT0zNesuueee3TPPfdIuvbz0LZtW9WoUUOjR4/WmTNn5ObmpuPHj2vFihUaOnSoWdM0ODjYolyKcv3vFDc3N12+fLnA3zOW1qlOTk6KjY0t8vfZjBkz1KlTJ7Pfb76+vnrkkUe0bt06i0+0Iz9uAwRuAZ07dzZ9IV7/+vvvv5ck7dmzR05OTvmaQt27d9fp06d14sQJSdLu3bv14IMPmp15uxHnz5/XzJkz1blzZ/n4+Mjb21uzZ8/WhQsXlJ6eLunaWaAaNWro888/V0pKiq5evVrsJfU34syZM1q0aJGee+4505nhPNY43osXL+qnn35St27dzIoMPz8/NWjQQHv37i3R9m6//XZTo0qS3N3ddffdd5vGUrrWOHvuuefUsWNHtWzZUt7e3tqxY4dpHK/32GOPac+ePfr9999lNBoVHx+vJ598stD9P/HEE4qPj5fRaNTvv/+u/fv3q2fPnvniSpIDAKBszJgxQ926dcv3n7ddu3apQYMGhf6n2VJ79uxRu3btzJoe1apV0wMPPKA9e/aUeHv/rEu6du2q5ORk5eTkSLKsnsjj6+urBg0a6LPPPpN07aqqnj17ysnJqcB9W/r9WJIcCpKbm6urV6/q3LlzWrNmjapUqaJWrVoV+74rV66Y1Xb/lFdf5DUc83Tv3l2ZmZkFNugK8+233+qpp55S+/bt1bJlS7Vq1UoXLlzQ8ePHzeIqV66sBx54wPTa2dlZDzzwgFmNcr2dO3fq22+/zXdb4J9//qmzZ8/q7rvvNi3La0ZdX5O1bdtW2dnZ+W5JLGltI0lHjx7VmjVrNG7cuHxXVnl5eWnnzp366aefTPXo9bdS5n1G/v7+qlu3rinm6tWr6tixo5KTk5WZmanLly/r+++/V8+ePYscO0lKT0/XwIEDdf78ec2ePVuOjv+7xqSktWWdOnXUqVMnffTRR5Kk+Ph43X///WYNvuIEBwfrwoUL+r//+z9J135+CvpMs7KytGDBAj300ENq1aqVvL299cILL8hoNOq3336TdG3icqPRaLpzozxYWqcW9/ss746LRx991Gzcb7vtNt1xxx3at29fWR5WhcOVVcAt4J/NFoPBIDc3N9NcSOfPn5e7u3u+s38eHh6m9dK1y7uvv9z7Rr300kv67rvvNHLkSDVv3lyurq76+uuvtWDBAmVmZkq6dmn77NmzNWXKlHzzS1nTvHnzVL9+ffXu3ds0H0IeaxzvhQsXZDQaTZ/l9Tw8PMyu5LJEQYWFu7u7kpOTJV2bc2Tw4MFycXHR6NGj1bBhQ1WtWlUxMTH5ijnp2r+Nzp07Kz4+Xu3atdPVq1dNZ6wLcv/992vq1KnatWuXvvvuOwUHB5vdpngjOQAASt/mzZv1008/ac6cOdq9e7fZunPnzlnlCYLnz5/XnXfemW+5h4eHqZYoiX9+57m7uys7O1tnz56Vh4eHRfXE9fKuKAsODtaWLVv08ccf6+233y5w35Z+P5Y0h3+6fr6fypUr6+WXX7boNqhz587l+/69Xl598c/P8J+1XXF+/PFHDR06VAEBAZo+fbo8PDzk5OSk4cOH57udtHbt2jIYDGbL3N3dTfXm9XJycjRz5kw9+eSTZleqSzI1+Yq7bS9v/T+bgiWtbaRrjdyOHTuqY8eOWrJkidm6F154QYcOHco30XajRo1Mfz9z5owSExNNt8b+099//y2j0ajc3FyLftbmzZunZs2aKTU1VR988IGGDh1qWncjteUTTzyhyZMna+jQofroo480ffr0fHVvURwdHdWzZ0+tWbNGderU0Y8//qgFCxZoy5YtZnFvvvmmVq5cqWHDhsnPz0/Vq1fXTz/9pMmTJ5t+Hs6dOyep/J5aammd6ujoWOhnnPfzk/dvb+zYsabbU69njf833cpoVgG3gH9OiGg0GnXmzBnTvEM1atTQmTNnlJuba9awypuEPe8S39q1a+ebuLGkMjMz9fXXX+v55583u3R8x44d+WI7deqkF154QePHj1dMTIzc3NyKPTNWEr/88os+/PBDvfvuuwVepm+N461evboMBkO+Ce2la5/vv/71rxJtr6CztOnp6aaxTEpK0h9//KE1a9aYnTm/cuVKodt88sknFRUVpV9++UWPP/54kXM1ODo66rHHHtPKlSuVlJSkN998M1/MjeQAACg9mZmZevPNNzVw4EDddttt+dbXrl270KtfSqJGjRqFft8VNjdUUdLT083+s5eeni4nJyfVrl27RPVEntDQUL355pt688035ePjU2Bj7XrFfT/eSA7/NHXqVHl7eys7O1v79u3T1KlTVbVqVT366KNFvu+3334za5b8U97nnZ6ebtYU+GdtV5ytW7fK2dlZCxcuNF3dk5OTY2o4XO/s2bMyGo1mDavra5TrrV27Vn/99Ve+ebak/51kLWgf18tbX9AV8CWpbXbs2KHdu3fr008/LXB948aNtXnzZv3666+mOZ4WLFigo0ePmmJq1qypDh066MUXXyxwG7Vr19bVq1dVqVIlpaamFnlcknTHHXfovffe04YNGzRr1ix17txZd911l6Qbqy0DAwNlMBg0ffp0VapUSQEBASVqVknXGl49evSQs7OzHnrooXy3S0rSZ599pscee8xsXK+/xVO69llI/5vfqqxZWqe6u7sX+/ssr2E8btw4sysB8/zzrg2UDLcBAreAr776yuzsV97rvF/Q7dq1U1ZWlmki1TybN29WnTp1TBOe3nvvvdq6dWuxxUNRsrKylJOTY3bZfU5OjtlTUPKkpaVp+vTpGjFihIKCguTr63vD+y3IzJkz1alTJ7N5qK5njeOtVq2aWrZsqc8++8zskvHvv/9eKSkpBX6xFeXEiRNmTzNKT0/X3r17TWOZ97SV6z/fkydPFnkZ8r333qsqVaqYnipTnN69e2vbtm1ycXFRhw4d8q2/kRwAAKUnLi5OWVlZeuaZZwpcf++99yolJSXfFVcl1a5dO+3du9fsP+OXLl3S119/XeLvO0n6/PPPzV5/8cUX8vHxkYODQ4nqiTyurq56+OGHtXr1avXu3bvY/Rf3/XgjOfzTHXfcIV9fX7Vt21bPPPOMmjZtmu9qlX9KS0vTgQMH1LZt20Jj8j7vvCcs5tm8ebMqV65scU11+fJlOTo6mjWgNm3alO9pe9L/mnd5srKy9PXXX+e77fTChQuKjo7WiBEjCmw03XbbbapRo4bZraN5J+uuPwG7f/9+OTg4FDi/l6W1zdWrV/X6668rLCysyHnCKlWqZBorX1/ffFe1dezYUUePHlWjRo1MMdf/cXJyUtWqVeXn56dPP/0031Vp/zRw4EDVqlVLTz/9tFq3bq1x48aZbn+9kdqyUqVKevzxx7V69Wr16tUr3xVwlrj99tvVpk0bffzxx4X+/BR0e+r1T6iUrs1rZTAYFB8fX+IcrMHSOrV9+/aF/j5r166dpGvzhDVo0EDHjx8vcNzvuOOOMjiiiosrq4BbQKVKlTR06FD179/f9DRAPz8/dezYUZIUFBQkPz8/TZgwQWlpaWrUqJE2b96shIQETZ8+3fSFFhkZqW+++UZ9+vTRs88+q/r16+v333/XiRMnCj2T9E/Vq1dX69at9e6778rDw0Ourq764IMPCix6pk6dqnr16hVaXN+MP//8U6dOndKGDRsKjbHG8UrSqFGjNGzYMI0cOVJPPvmk6Yktt99+e4HzPRWlTp06ioyM1HPPPacqVapo4cKFcnJyMt1G4Ofnp2rVqmnq1KkaOXKkzp8/r+joaHl6euabXyGPwWDQkiVL9Pfff1t0hqthw4ZauXKlatasWWCxcyM5AABKT3x8vKZPn17obVWhoaFatWqVIiMjNXz4cLVs2VJnz57V559/bvYEr+KEh4frk08+0aBBgzRy5Eg5Oztr6dKlunz5sunBHJaqVKmSli1bppycHN15551at26dDhw4oKVLl0oqWT1xvdGjRyskJMSi5llx3483msP1jhw5osqVK5uurPr555/Nntr2T9u2bdP8+fNVuXLlIuf88fLy0iOPPKI5c+YoOzvb9DTANWvWaOjQoQVeFVOQgIAALVu2TBMnTlSPHj10+PBhvffeewVemVWjRg298sorpqupli1bprNnz+Yb+6+++kr/+te/9NRTTxW4TycnJ/Xr10/vvPOO6tevr0aNGmnu3LmSrj0lMK/+iImJ0SOPPFLgrVaW1jbff/+9qlevXuAVXiUxcOBAbd68WU899ZQGDBigRo0a6cKFCzp8+LBSU1M1bdo0SdKLL76ofv366emnn9aAAQPk5uamI0eO6MqVKwXWuwaDQa+99pp69Oihd955x/RZ3kht2b9/f7Vt21Y+Pj43fJyvvvqqTp48WejPT8eOHfXRRx/prrvu0m233ab169ebnqKd5/bbb9fTTz+txYsX68KFC+rUqZNycnK0e/duhYSEmDVSf/vtN128eFGSTLeTFrSsJCytU59++mmtXr063++zK1euaPjw4ZKujc/EiRMVGRmpK1euqGvXrqpevbpOnTql7777ToGBgTf0oChcQ7MKuAU88cQTysrK0vjx43Xp0iUFBgaaPcbVwcFBb7/9tt58803FxMTowoULuuOOO/T666+bfeE1atRIq1ev1ltvvaUZM2YoMzNTDRs2NHviiCVmz56tyZMna9KkSapWrZpCQ0PVrVs3jR8/3hSzefNmbdu2TWvXrjWbVNJacnNz9fTTTxd5xsNax3v//fdr4cKFiomJUUREhKpWrarAwEBFRUWpatWqJdpW06ZN1atXL0VHR+uPP/5Q8+bN9d5775nOTLq7u2v+/Pl6/fXXFRERofr162vEiBHau3dvkWfMLXlE9vWKOpt7ozkAAEpH8+bN8823cz1nZ2ctW7ZMc+fOVVxcnGlOqICAgBLtp169elqxYoXeeOMNTZgwQUajUa1atdLy5ctNj3m3VN5TiKdMmaKffvpJdevW1YwZM8zmHrKknvinOnXqFHhbWmGK+368kRyul9fEcHJykqenpwYPHlxkY+/dd99VgwYNTE+VK8qsWbM0b948rVy5Uunp6apfv76ioqLMblksTlBQkF566SUtW7ZMmzZtUsuWLRUTE6MxY8bki61Vq5amTp2qGTNm6Pjx42rcuLEWLlxoun0tT25urqKiooqcZHz48OGmp1LXrVtXzz33nF544QUNGjRIH374oQ4cOKCOHTtq0qRJhW7DktomNzdXI0aMKHL+L0vUqFFDq1ev1vz587VgwQKlpaWpVq1aatasmdmVXX5+flqxYoXmzZuniRMnSrp2m+Gzzz5b6LYbNWqkMWPG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AJtBswoAAAAAAAA2g2YVAAAAAAAAbAbNqnKwbds2hYSEyMfHR127dlV8fHx5p3RLeeedd9S7d2/5+/urffv2Cg8PV2JiYr44S8Zp//796t27t3x9fRUUFKQlS5bkizl69KgGDBigVq1a6d5779XMmTOVnZ1dKsd2K1m3bp28vLw0ePBgs+WMm+1KS0vThAkTdN9995nG5/PPPzeLYfxsS25urhYuXKgHH3xQrVq10v33369XX31Vly9fNouz1pikpqYqIiJCfn5+ateunV566SVlZGSU6jHi1kH9Vf6owSoGajD7Qv1ln6jBJBlRpr7//ntjixYtjNHR0cYjR44Yly9fbmzRooXxyy+/LO/UbhlDhgwxrl271njw4EHjkSNHjOPGjTO2adPGeOLECVOMJeN08uRJY5s2bYwvv/yy8ZdffjFu2LDB2KpVK2NcXJwp5sKFC8aOHTsaR44caTx48KDxm2++Md5zzz3GV199tUyPuaI5evSoMSAgwPjUU08ZBw0aZFrOuNmuCxcuGB988EHj4MGDjXv27DH+/vvvxj179hh/+OEHUwzjZ3tiY2ONfn5+xi1bthh///13444dO4wBAQHGKVOmmGKsNSZXr1419ujRw9inTx/jDz/8YNyzZ4+xa9euxhEjRpTpMaNiov6yDdRg9o8azL5Qf9kvajCjkWZVGXv++eeNTz/9tNmysWPHGp988slyygg5OTnG9u3bG99//33TMkvG6Y033jB27tzZmJuba1r21ltvGQMDA03LVq5caWzTpo3x4sWLppi1a9cafXx8jBcuXCitQ6rQMjMzjT169DCuW7fO+J///MesUGLcbNecOXOMnTt3NmZmZhYaw/jZnsjISGNERITZshkzZhgfe+wx02trjcn27duNzZo1M/7++++mmF27dhmbNWtmPHbsWKkcH24d1F+2iRrMvlCD2R/qL/tFDWY0chtgGUtMTFTHjh3NlgUGBio5OZlLJMtJZmamsrKyVKNGDdMyS8YpMTFRAQEBMhgMZjGpqalKSUkxxbRt21YuLi6mmE6dOikrK0sHDhwozcOqsGbMmKFmzZopNDQ03zrGzXZt3bpVbdu21fTp0xUQEKBu3bpp/vz5Zr/3GD/b07ZtW+3fv1+HDh2SJP3+++/avn277r//flOMtcYkMTFRt99+uxo2bGiK6dChg5ydnQu8TQgoCeov20QNZl+owewP9Zf9ogZjzqoyl5aWJnd3d7NlderUUXZ2ts6ePVtOWd3aZs2apRo1aqhLly6mZZaMU2ExknT69OlCY9zd3WUwGEwxsNwXX3yhb7/9VpMnTy5wPeNmu3777Tdt2bJF2dnZWrJkiUaNGqWVK1dqzpw5phjGz/YMGDBATz31lB577DF5e3srODhY7dq1U2RkpCnGWmOSlpYmDw8Ps5hKlSrJzc2NccNNo/6yTdRg9oMazD5Rf9kvajCaVbjFLVy4UBs3btSCBQvk6upa3umgCH/++acmT56sN998k7GyQ0ajUe7u7po+fbp8fHz08MMPKyIiQqtWrZLRaCzv9FCILVu2aOXKlXrttdf08ccfa968edq+fbvmzZtX3qkBsHPUYPaDGsx+UX/ZL2owybG8E7jVeHh4KD093WxZWlqaHB0dVbt27XLK6tYUHR2t5cuX67333pOPj4/ZOkvGqbAY6X8d7YJi0tPTZTQaTTGwzIEDB3TmzBmFhYWZluXm5kqSWrZsqbVr1zJuNqxu3bpq1KiRHBwcTMuaNGmiy5cv6+zZs3Jzc2P8bNDrr7+ugQMHqmfPnpIkLy8vXblyRRMnTtSIESPk5ORktTHx8PDQ//3f/5nF5Obm6syZM4wbbhr1l22hBrMv1GD2i/rLflGDcWVVmfPz89POnTvNliUkJMjX11dOTk7llNWt54033tAHH3yg2NhY+fr65ltvyTj5+flp165d+WI8PT3VoEEDU8z+/fvNHjGakJAgZ2dneXt7W/uwKrR77rlHGzZs0Lp160x/OnfuLD8/P61bt0533XUX42bD/Pz89Ntvv5mKW0k6ceKEXFxcTIUQ42d7Ll++bFbgSjK9zjsja60x8fPz04kTJ0xzLEjSd999p6ysLPn5+Vn/4HBLof6yHdRg9ocazH5Rf9kvajCJpwGWsbxHg86fP9949OhR4wcffMCjk8vYtGnTjG3atDFu377deOrUKdOf8+fPm2IsGae8R4VOnjzZeOTIEePGjRuNrVu3NsbGxppiLly4YAwICDBGREQYDx06ZNy+fbvx3nvvNU6fPr0sD7nC+ueTaBg325WcnGz09vY2Tps2zXj06FHj9u3bjQEBAcY33njDFMP42Z6XXnrJeO+99xq/+OIL4++//27cvn27sXPnzmaPMrbWmOQ9NjksLMz4448/mh6bPHz48LI8ZFRQ1F+2gRqs4qAGsw/UX/aLGsxopFlVDr788ktj9+7djd7e3sYuXboY165dW94p3VKaNWtW4J///Oc/ZnGWjNPevXuNjz/+uNHb29sYGBhoXLRoUb6YX375xdi/f3+jr6+vsUOHDsbXXnvNmJWVVWrHdyv5Z6FkNDJutmzHjh3Gnj17Gn18fIxdunQxzp8/P99nyvjZlosXLxpnzpxp7Ny5s9HHx8cYFBRknDp1qvHcuXNmcdYak7/++ss4YsQIY5s2bYz+/v7GcePG8bhrWA31V/mjBqs4qMHsB/WXfaIGMxoNRiMzqwEAAAAAAMA2MGcVAAAAAAAAbAbNKgAAAAAAANgMmlUAAAAAAACwGTSrAAAAAAAAYDNoVgEAAAAAAMBm0KwCAAAAAACAzXAs7wQA3LrefvttffXVVzp69KguX76sunXrys/PT0OGDFGLFi3KOz0AAIAKiRoMgK0zGI1GY3knAeDWNHjwYPn4+KhDhw5ydnZWenq6PvroI+3atUtxcXG6++67yztFAACACocaDICto1kFwKbk5OSoS5cu8vPz01tvvVXe6QAAANwSqMEA2BJuAwRgUxwcHFS9enXT66SkJL3zzjtKSkrS+fPn1aBBA/Xs2VODBg2So+O1X2EnT55Uly5d9Morryg5OVmfffaZcnNz9dBDD2nChAmqVq2aJOm7775T//79C933tm3b1LBhQ9PrcePG6ZNPPskXt2LFCtMZx7feekvbt2/Xr7/+qqpVq8rb21tRUVG66667JEnz589XTExMofts3769li9frrS0NM2dO1ffffedUlNT5eHhoYCAAI0ZM0a1atWy/AMEAAC4AdRg1GCALaFZBaDc5eTkKDc3V2fOnNFHH32k48ePa/z48ZKklJQU+fj4qFevXqpataoOHjyo+fPn69y5c4qKijLbTkxMjPz9/TV79mwdO3ZMb731lq5cuaI5c+aYxU2bNk1eXl6m199++63mz59fYG716tXTvHnzJEkHDhzQtGnTzNafPn1agwYNkqenpy5cuKA1a9aoT58++uyzz1S3bl317t1bgYGBptiIiAhNmjRJ3t7ekiRXV1dJ0rlz5+Ti4qKoqCjVqlVLKSkpWrJkiYYMGaL4+Pgb/WgBAAAKRQ1GDQbYKppVAMrd3XffrUuXLkmSqlSpolmzZunee++VJHXr1s0UZzQa5e/vr6ysLL399tsaO3asKlX630NNPTw8TJetd+rUSZUqVdJrr72mkSNHqkmTJqa4Jk2aqE2bNqbXv/76a4F5ZWdnq2rVqqbYzMzMfDGvvfaa6e85OTkKDAxUQECANm3apIEDB6pevXqqV6+epGtnHyWpadOmZvvPW5ZXHEqSn5+fbr/9dj355JM6cOCAqbACAACwFmowajDAVtGsAlDuVqxYoatXr+r06dPauHGjoqKiVLVqVT3wwAM6f/68Fi5cqC+++EKpqam6evWq6X3p6emqU6eO6fVDDz1ktt2HHnpIr776qn788UezQslSV65ckbOzc5Ex3377rRYtWqRffvlFf//9t2n58ePHS7Qvo9GoFStWaM2aNfr99991+fJl07oTJ05QKAEAAKujBqMGA2wVzSoA5a5ly5amv3fp0kUDBw7Um2++qQceeEAvvfSSvvvuO40cOVLNmzeXq6urvv76ay1YsCDfWTY3Nzez1+7u7pKkU6dO3VBe586dK3Kugh9//FFDhw5VQECApk+fLg8PDzk5OWn48OHKysoq0b7ef/99vfbaaxowYIDGjh2r2rVr6/Tp0xoxYkSBZxMBAABuFjUYNRhgq2hWAbA53t7e2rt3rzIzM/X111/r+eef18CBA03rd+zYUeD7zpw5Y/Y6PT1dklS3bt0byuO3335TUFBQoeu3bt0qZ2dnLVy40DTRaE5Ojs6dO1fifX322Wfq2LGj2WXoe/fuLfF2AAAAbhQ12DXUYED5q1R8CACUjvPnz+dbZjQatX//ft1xxx3KyspSTk6OnJycTOtzcnK0cePGArf3+eef53ttMBjUqlWrEud26NAhnTp1Sm3bti005vLly3J0dJTBYDAt27Rpk7Kzs0u8vytXrpgdpyStW7euxNsBAAAoDjXY/1CDAbaJK6sAlJuePXvq0Ucf1d133y0XFxedOnVK69at0w8//KAFCxaoevXqat26td599115eHjI1dVVH3zwQaGFSFpaml544QX9+9//Nj2Jpnv37rrzzjtLlNcnn3yimJgYNWjQIN8cDNcLCAjQsmXLNHHiRPXo0UOHDx/We++9p5o1a5Zof5LUsWNHvfvuu1q6dKlatGihr7/+Wv/9739LvB0AAIDiUIP9DzUYYJtoVgEoN3369FFCQoLWr1+vM2fOqG7dumrXrp0++eQT3XXXXZKk2bNna/LkyZo0aZKqVaum0NBQdevWzexS7TwRERFKTk7WmDFjlJOTo27dumnixIklzismJkZt27bV6NGjVa1atULjgoKC9NJLL2nZsmXatGmTWrZsqZiYGI0ZM6bE+xw5cqT+/vtvvfPOO8rOzlbHjh311ltvqVevXiXeFgAAQFGowf6HGgywTQaj0Wgs7yQA4GacPHlSXbp00axZsxQaGlre6QAAANwSqMEAlBbmrAIAAAAAAIDNoFkFAAAAAAAAm8FtgAAAAAAAALAZXFkFAAAAAAAAm0GzCgAAAAAAADaDZhUAAAAAAABsBs0qAAAAAAAA2AyaVQAAAAAAALAZNKsAAAAAAABgM/4fdUxi+xSag98AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20, 6))\n", "\n", "plt.subplot(121)\n", "plt.hist(salary, bins=50)\n", "plt.xlabel(\"Зарплата\")\n", "plt.ylabel(\"Количество человек\")\n", "plt.title(\"Простая гистограмма\")\n", "\n", "plt.subplot(122)\n", "plt.hist(salary, bins=50, log=True)\n", "plt.xlabel(\"Зарплата\")\n", "plt.ylabel(\"Количество человек\")\n", "plt.title(\"Гистограмма в логарифмическом масштабе\")\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "5ykm7ylrztkZ" }, "source": [ "Попробуем убрать несколько выбросов и посчитать среднее по оставшимся элементам. Как видим, среднее достаточно сильно уменьшилось, хотя мы выкинули около 10 человек." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2021-03-06T12:52:34.238172Z", "start_time": "2021-03-06T12:52:34.219851Z" }, "id": "bQ7_jWsWztkZ", "outputId": "686d2169-eb64-4ad9-f6a7-643739f609f7" }, "outputs": [ { "data": { "text/plain": [ "137.01957408968383" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "salary[salary < 3300].mean()" ] }, { "cell_type": "markdown", "metadata": { "id": "yZ-XvYjVztkZ" }, "source": [ "Такой вид усреднения обычно называется **усеченное среднее**. Чаще усеченное среднее рассматривают для симметричных распределений, исключая одинаковое количество минимальных и максимальных значений." ] } ], "metadata": { "colab": { "provenance": [] }, "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.6" } }, "nbformat": 4, "nbformat_minor": 0 }