{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python для сбора данных\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "### Работа с датафреймами Pandas:  часть 1\n", "\n", "*Часть 1 включает:*\n", "\n", "* Загрузка csv-файлов. \n", "* Описание датафрейма: методы `.info()`, `.describe()` и др.\n", "* Выбор столбца датафрейма по названию и его описание.\n", "* Построение гистограммы для числового столбца и выбор цвета." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Загрузка файлов" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Как мы уже выяснили, библиотека pandas позволяет нам загрузить данные из файла и оформить их в датафрейм. Загрузим файл `firtree.csv` со страницы курса по ссылке и сохраним в датафрейм `tree`:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "tree = pd.read_csv(\"https://allatambov.github.io/pydj/seminars/firtree.csv\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Мы могли скачать этот файл себе на компьютер, поместить в рабочую папку через кнопку *Upload* на главной странице *Home* в Jupyter, а потом загрузить его по названию:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "tree = pd.read_csv(\"firtree.csv\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Если файл лежит в какой-то другой папке, его тоже можно достать, прописав полный путь к файлу, но там есть свои сложности, обсудим их позже. А пока посмотрим на то, как описать датафрейм и данные в нем." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Описание датафрейма" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В файле `firtree.csv` хранятся результаты вымышленного опроса покупателей на елочном базаре.\n", "\n", "Предполагается, что посетителям елочного базара предлагалось оценить елки разных видов – определить, насколько хороша елка, и назвать сумму, которую они готовы за нее отдать.\n", "\n", "**Показатели в файле:**\n", "\n", "* `gender` – пол респондента;\n", "\n", "* `ftype` – тип елки, которую оценивал респондент;\n", "\n", "* `height` – высота елки в сантиметрах;\n", "\n", "* `expenses` – сумма (в рублях), которую респондент готов отдать за елку;\n", "\n", "* `score` – оценка, которую респондент поставил елке (1 – очень плохо, 5 – отлично);\n", "\n", "* `wish` – ответ на вопрос «Хотели бы, чтобы Вам подарили такую елку?» (да, нет).\n", "\n", "\n", "Теперь посмотрим на техническое описание датафрейма:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 1200 entries, 0 to 1199\n", "Data columns (total 7 columns):\n", "Unnamed: 0 1200 non-null int64\n", "gender 1200 non-null object\n", "ftype 1200 non-null object\n", "height 1200 non-null int64\n", "score 1200 non-null int64\n", "expenses 1200 non-null int64\n", "wish 1198 non-null object\n", "dtypes: int64(4), object(3)\n", "memory usage: 65.8+ KB\n" ] } ], "source": [ "tree.info() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Какую информацию выдал метод `.info()`? Во-первых, он сообщил нам, что `tree` является объектом *DataFrame*. Во-вторых, он вывел число строк (`RangeIndex: 1200 entries`) и показал их индексы (`0 to 1199`). В-третьих, он вывел число столбцов (`total 7 columns`). Наконец, он выдал информацию по каждому столбцу. Остановимся на этом поподробнее.\n", "\n", "В выдаче выше представлено, сколько непустых элементов содержится в каждом столбце. Непустые элементы *non-null* – это все, кроме пропущенных значений, которые кодируются особым образом (`NaN` – от *Not A Number*). В нашей таблице есть столбец `wish`, который заполнен неполностью.\n", "\n", "Далее указан тип каждого столбца, целочисленный `int64` и строковый `object`. Что означают числа в конце? Это объем памяти, который требуется для хранения." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Если нас интересует только число строк и столбцов, можем запросить атрибут `.shape`:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1200, 7)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сводную статистическую информацию можно получить с помощью метода `.describe()`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0heightscoreexpenses
count1200.0000001200.0000001200.000001200.000000
mean600.500000159.0666673.005001629.045000
std346.55446951.6980121.42009792.819383
min1.00000070.0000001.00000302.000000
25%300.750000115.0000002.00000904.750000
50%600.500000157.0000003.000001630.500000
75%900.250000203.2500004.000002300.000000
max1200.000000250.0000005.000002999.000000
\n", "
" ], "text/plain": [ " Unnamed: 0 height score expenses\n", "count 1200.000000 1200.000000 1200.00000 1200.000000\n", "mean 600.500000 159.066667 3.00500 1629.045000\n", "std 346.554469 51.698012 1.42009 792.819383\n", "min 1.000000 70.000000 1.00000 302.000000\n", "25% 300.750000 115.000000 2.00000 904.750000\n", "50% 600.500000 157.000000 3.00000 1630.500000\n", "75% 900.250000 203.250000 4.00000 2300.000000\n", "max 1200.000000 250.000000 5.00000 2999.000000" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "По умолчанию этот метод выбирает только числовые столбцы и выводит для них описательные статистики: \n", "\n", "* `count` – число заполненных значений;\n", "* `mean` – среднее арифметическое;\n", "* `std` – стандартное отклонение (показатель разброса данных относительно среднего значения);\n", "* `min` – минимальное значение;\n", "* `max` – максимальное значение;\n", "* `25%` – нижний квартиль (значение, которое 25% значений не превышают);\n", "* `50%` – медиана (значение, которое 50% значений не превышают);\n", "* `75%` – верхний квартиль (значение, которое 75% значений не превышают)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Если мы все же хотим описать все столбцы, а не только числовые, можем добавить аргумент `include = 'all'`:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0genderftypeheightscoreexpenseswish
count1200.000000120012001200.0000001200.000001200.0000001198
uniqueNaN24NaNNaNNaN2
topNaNfemaleсосна КрымNaNNaNNaNда
freqNaN612327NaNNaNNaN611
mean600.500000NaNNaN159.0666673.005001629.045000NaN
std346.554469NaNNaN51.6980121.42009792.819383NaN
min1.000000NaNNaN70.0000001.00000302.000000NaN
25%300.750000NaNNaN115.0000002.00000904.750000NaN
50%600.500000NaNNaN157.0000003.000001630.500000NaN
75%900.250000NaNNaN203.2500004.000002300.000000NaN
max1200.000000NaNNaN250.0000005.000002999.000000NaN
\n", "
" ], "text/plain": [ " Unnamed: 0 gender ftype height score expenses \\\n", "count 1200.000000 1200 1200 1200.000000 1200.00000 1200.000000 \n", "unique NaN 2 4 NaN NaN NaN \n", "top NaN female сосна Крым NaN NaN NaN \n", "freq NaN 612 327 NaN NaN NaN \n", "mean 600.500000 NaN NaN 159.066667 3.00500 1629.045000 \n", "std 346.554469 NaN NaN 51.698012 1.42009 792.819383 \n", "min 1.000000 NaN NaN 70.000000 1.00000 302.000000 \n", "25% 300.750000 NaN NaN 115.000000 2.00000 904.750000 \n", "50% 600.500000 NaN NaN 157.000000 3.00000 1630.500000 \n", "75% 900.250000 NaN NaN 203.250000 4.00000 2300.000000 \n", "max 1200.000000 NaN NaN 250.000000 5.00000 2999.000000 \n", "\n", " wish \n", "count 1198 \n", "unique 2 \n", "top да \n", "freq 611 \n", "mean NaN \n", "std NaN \n", "min NaN \n", "25% NaN \n", "50% NaN \n", "75% NaN \n", "max NaN " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.describe(include = 'all') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В таблице выше добавились строки `unique`, `top` и `freq`. Эти характеристики описывают только текстовые столбцы типа *object*:\n", "\n", "* `unique` – число уникальных значений в столбце (в `gender` их 2, `male` и `female`);\n", "\n", "* `top` – значение, которое встречается чаще всех (в `gender` больше женщин);\n", "\n", "* `freq` – частота для значения в `top` (в `gender` 612 женщин)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Если датафрейм большой, а мы хотим быстро посмотреть на то, какого он вида, можем запросить на экран только первые строчки или последние:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0genderftypeheightscoreexpenseswish
01femaleпихта Нобилис19031051да
12maleпихта Нобилис17432378нет
23femaleсосна Крым2484655да
34femaleсосна Крым19112934да
45femaleсосна Крым14731198нет
\n", "
" ], "text/plain": [ " Unnamed: 0 gender ftype height score expenses wish\n", "0 1 female пихта Нобилис 190 3 1051 да\n", "1 2 male пихта Нобилис 174 3 2378 нет\n", "2 3 female сосна Крым 248 4 655 да\n", "3 4 female сосна Крым 191 1 2934 да\n", "4 5 female сосна Крым 147 3 1198 нет" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.head() # первые" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0genderftypeheightscoreexpenseswish
11951196maleель обыкновенная13721298нет
11961197femaleпихта Нобилис1413906да
11971198maleсосна Крым22051591нет
11981199maleсосна датская9411966да
11991200maleсосна датская10552204нет
\n", "
" ], "text/plain": [ " Unnamed: 0 gender ftype height score expenses wish\n", "1195 1196 male ель обыкновенная 137 2 1298 нет\n", "1196 1197 female пихта Нобилис 141 3 906 да\n", "1197 1198 male сосна Крым 220 5 1591 нет\n", "1198 1199 male сосна датская 94 1 1966 да\n", "1199 1200 male сосна датская 105 5 2204 нет" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.tail() # последние " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Если нам нужно другое число строк (не 5, которые показываются по умолчанию), это можно исправить:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0genderftypeheightscoreexpenseswish
11921193maleсосна датская13152683нет
11931194maleсосна Крым1384304да
11941195femaleель обыкновенная12742932нет
11951196maleель обыкновенная13721298нет
11961197femaleпихта Нобилис1413906да
11971198maleсосна Крым22051591нет
11981199maleсосна датская9411966да
11991200maleсосна датская10552204нет
\n", "
" ], "text/plain": [ " Unnamed: 0 gender ftype height score expenses wish\n", "1192 1193 male сосна датская 131 5 2683 нет\n", "1193 1194 male сосна Крым 138 4 304 да\n", "1194 1195 female ель обыкновенная 127 4 2932 нет\n", "1195 1196 male ель обыкновенная 137 2 1298 нет\n", "1196 1197 female пихта Нобилис 141 3 906 да\n", "1197 1198 male сосна Крым 220 5 1591 нет\n", "1198 1199 male сосна датская 94 1 1966 да\n", "1199 1200 male сосна датская 105 5 2204 нет" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.tail(8) # для head() будет так же " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Выбор столбца датафрейма и его описание" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь выберем определенный столбец и опишем его. Для выбора столбца достаточно указать его название в квадратных скобках (и обязательно в кавычках, так как название является строкой):" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 да\n", "1 нет\n", "2 да\n", "3 да\n", "4 нет\n", " ... \n", "1195 нет\n", "1196 да\n", "1197 нет\n", "1198 да\n", "1199 нет\n", "Name: wish, Length: 1200, dtype: object" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"wish\"] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Еще столбец можно выбрать, не используя квадратные скобки, а просто указав его название через точку:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 да\n", "1 нет\n", "2 да\n", "3 да\n", "4 нет\n", " ... \n", "1195 нет\n", "1196 да\n", "1197 нет\n", "1198 да\n", "1199 нет\n", "Name: wish, Length: 1200, dtype: object" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.wish" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Однако такой способ не универсален. В случае, если в названии столбца используются недопустимые для переменных символы (пробелы, тире, кириллические буквы), этот метод не подойдет. Для создания нового столбца этот способ тоже не сработает.\n", "\n", "Теперь опишем столбец `wish`. Для начала узнаем число заполненных (не NULL и NaN) значений:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1198" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"wish\"].count() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Так как столбец текстовый, вряд ли будет уместно считать для него среднее, медиану или что-то подобное. Поэтому мы посмотрим на уникальные значения и их частоты:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['да', 'нет', nan], dtype=object)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"wish\"].unique() # массив уникальных значений" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "да 611\n", "нет 587\n", "Name: wish, dtype: int64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"wish\"].value_counts() # их частоты, уже без учета NaN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь выберем числовой столбец `expenses` и опишем его: выведем минимальное значение, максимальное значение и среднее." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "302" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"expenses\"].min()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2999" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"expenses\"].max()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1629.045" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree[\"expenses\"].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Как мы уже видели, метод `.describe()` умеет выводить характеристики столбцов всех типов сразу, однако это не всегда выглядит симпатично, так как добавляется много NaN (часть показателей не считается для типа `object`, часть – наоборот). Для удобства можно заранее выбрать все столбцы определенного типа, а потом их описывать:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0heightscoreexpenses
0119031051
1217432378
232484655
3419112934
4514731198
...............
1195119613721298
119611971413906
1197119822051591
119811999411966
1199120010552204
\n", "

1200 rows × 4 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 height score expenses\n", "0 1 190 3 1051\n", "1 2 174 3 2378\n", "2 3 248 4 655\n", "3 4 191 1 2934\n", "4 5 147 3 1198\n", "... ... ... ... ...\n", "1195 1196 137 2 1298\n", "1196 1197 141 3 906\n", "1197 1198 220 5 1591\n", "1198 1199 94 1 1966\n", "1199 1200 105 5 2204\n", "\n", "[1200 rows x 4 columns]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.select_dtypes(\"int\") # все столбцы типа integer" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genderftypewish
0femaleпихта Нобилисда
1maleпихта Нобилиснет
2femaleсосна Крымда
3femaleсосна Крымда
4femaleсосна Крымнет
............
1195maleель обыкновеннаянет
1196femaleпихта Нобилисда
1197maleсосна Крымнет
1198maleсосна датскаяда
1199maleсосна датскаянет
\n", "

1200 rows × 3 columns

\n", "
" ], "text/plain": [ " gender ftype wish\n", "0 female пихта Нобилис да\n", "1 male пихта Нобилис нет\n", "2 female сосна Крым да\n", "3 female сосна Крым да\n", "4 female сосна Крым нет\n", "... ... ... ...\n", "1195 male ель обыкновенная нет\n", "1196 female пихта Нобилис да\n", "1197 male сосна Крым нет\n", "1198 male сосна датская да\n", "1199 male сосна датская нет\n", "\n", "[1200 rows x 3 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.select_dtypes(\"object\")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0heightscoreexpenses
0119031051
1217432378
232484655
3419112934
4514731198
...............
1195119613721298
119611971413906
1197119822051591
119811999411966
1199120010552204
\n", "

1200 rows × 4 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 height score expenses\n", "0 1 190 3 1051\n", "1 2 174 3 2378\n", "2 3 248 4 655\n", "3 4 191 1 2934\n", "4 5 147 3 1198\n", "... ... ... ... ...\n", "1195 1196 137 2 1298\n", "1196 1197 141 3 906\n", "1197 1198 220 5 1591\n", "1198 1199 94 1 1966\n", "1199 1200 105 5 2204\n", "\n", "[1200 rows x 4 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tree.select_dtypes([\"int\", \"float\"]) # если более 1 типа" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Построение гистограммы для числового столбца" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В завершение знакомства с описанием датафреймов Pandas, построим гистограмму для визуализации распределения значений в столбце `expenses`. Для этого нам понадобится библиотека `matpoltlib` для визуализации. Импортируем оттуда модуль `pyplot`:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "И напишем магическую строку с `%`, которая позволит Jupyter строить графики прямо в текущем файле, в ячейке после кода, а не в отдельном окне:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Строим гистограмму:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tree[\"expenses\"].hist() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Поменяем цвет:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAS80lEQVR4nO3df4xlZX3H8fe3LKIytrv8cLphNh2sm6kUrd3ZIFZjGGkRqHFpi8mSVjd0m0kqtrTWCJSk2jSm2m61Gq0Wu8S1EgaKWij112a9G2Ii2B3lx+KKOyLFEWRr2KWONir67R/3WbkOMzsz987dO/eZ9yt5cs95zq/ny1k+c+bcc+9EZiJJqsvP9XoAkqTlZ7hLUoUMd0mqkOEuSRUy3CWpQmt6PQCA0047LYeHh3s9jKf53ve+x8knn9zrYXRN7fVB/TVaX//rpMbJycnvZObpcy1bEeE+PDzMvn37ej2Mp9m7dy/nnXder4fRNbXXB/XXaH39r5MaI+K/51vmbRlJqpDhLkkVMtwlqUKGuyRVyHCXpAoZ7pJUIcNdkipkuEtShQx3SarQiviEat+K6M1x/QMrkhbglbskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFVowXCPiOsj4lBE7J9j2ZsjIiPitDIfEfHeiJiKiHsjYlM3Bi1JOrbFXLl/GLhwdmdEbAB+C3i4pfsiYGNp48AHOh+iJGmpFgz3zLwDeHyORe8G3gK0ftHJFuAj2XQnsDYi1i/LSCVJi9bWPfeIeA3wrcy8Z9aiM4BvtsxPlz5J0nG05G+FjIhnA9cCF8y1eI6+Ob/CMCLGad66YXBwkL179y51KF03MzNz7HHt2HHcxvIzlum/1YL1VaD2Gq2v/3WtxsxcsAHDwP4y/ULgEPBQaU/SvO/+i8A/A5e1bPcAsH6h/Y+OjuZK1Gg0jr1C88t3j387XvVVoPYara//dVIjsC/nydUl35bJzPsy87mZOZyZwzRvvWzKzG8DtwGvL0/NnAs8kZmPtv+jR5LUjsU8Cnkj8AVgJCKmI2L7MVb/JPAgMAV8CHjDsoxSkrQkC95zz8zLFlg+3DKdwBWdD0uS1Ak/oSpJFTLcJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mqkOEuSRG9a11iuEtShQx3SaqQ4S5JFTLcJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mq0GL+QPb1EXEoIva39P19RHw1Iu6NiE9ExNqWZddExFREPBARr+rWwCVJ81vMlfuHgQtn9e0Gzs7MFwFfA64BiIizgK3Ar5Zt/ikiTli20UqSFmXBcM/MO4DHZ/V9NjOfLLN3AkNlegswkZk/yMxvAFPAOcs4Xun4q+wLpbQ6RGYuvFLEMHB7Zp49x7L/AG7KzI9GxPuAOzPzo2XZTuBTmXnLHNuNA+MAg4ODoxMTE53U0RUzMzMMDAzMv8Lk5PEbTKvR0WXZzYL1VWBZalzB57n2c3jc6uvVOQZmRkbarnFsbGwyMzfPuTAzF2zAMLB/jv5rgU/w1A+J9wN/0LJ8J/B7C+1/dHQ0V6JGo3HsFaA37XjVV4FlqXEFn+faz+Fxq69X5xg6qhHYl/Pk6pq2flwAEbENeDVwfjkIwDSwoWW1IeCRdo8hSWpPW49CRsSFwFXAazLz+y2LbgO2RsRJEXEmsBH4YufDPOZgutcmJ70nKqkvLeZRyBuBLwAjETEdEduB9wHPAXZHxN0R8UGAzLwfuBn4CvBp4IrM/HHXRr9aHa8fXv5Ak/rWgrdlMvOyObp3HmP9twNv72RQkqTO+AlVSapQ22+oapXq1a2ZRTyyK+kpXrlLK1W33jdZye+rHI/6VlrNXWK4S1KFDHdJqpDhrv5wPB/3XAW/sqt+hrskVchwl6QKGe6SVCGfc5f0s3yfoQpeuUtShQx3SaqQ4S5JFTLcJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUW8weyr4+IQxGxv6XvlIjYHREHy+u60h8R8d6ImIqIeyNiUzcHL0ma22Ku3D8MXDir72pgT2ZuBPaUeYCLgI2ljQMfWJ5hSpKWYsFwz8w7gMdndW8BdpXpXcAlLf0fyaY7gbURsX65BitJWpzIRfzh4YgYBm7PzLPL/JHMXNuy/HBmrouI24F3ZObnS/8e4KrM3DfHPsdpXt0zODg4OjEx0V4Fk5PtbbcIM0NDDExPd23/vVZ7fVB/jdbX/2ZGRhgYGGhr27GxscnM3DznwsxcsAHDwP6W+SOzlh8ur/8JvLylfw8wutD+R0dHs23QtdbYsaOr++91q72+1VCj9fV/azQaHcQf++bL1Xaflnns6O2W8nqo9E8DG1rWGwIeafMYkqQ2tRvutwHbyvQ24NaW/teXp2bOBZ7IzEc7HKMkaYkW/GMdEXEjcB5wWkRMA28F3gHcHBHbgYeB15bVPwlcDEwB3wcu78KYJUkLWDDcM/OyeRadP8e6CVzR6aAkSZ3xE6qSVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqpDhLkkVMtwlqUKGuyRVyHCXpAoZ7pJUIcNdkirUUbhHxJ9HxP0RsT8iboyIZ0bEmRFxV0QcjIibIuIZyzVYSdLitB3uEXEG8KfA5sw8GzgB2Aq8E3h3Zm4EDgPbl2OgkqTF6/S2zBrgWRGxBng28CjwSuCWsnwXcEmHx5AkLVFkZvsbR1wJvB34P+CzwJXAnZn5/LJ8A/CpcmU/e9txYBxgcHBwdGJior1BTE62t90izAwNMTA93bX991rt9UH9NVpf/5sZGWFgYKCtbcfGxiYzc/OcCzOzrQasAz4HnA6cCPw78DpgqmWdDcB9C+1rdHQ02wZda40dO7q6/1632utbDTVaX/+3RqPRQfyxb75c7eS2zG8C38jM/8nMHwEfB34DWFtu0wAMAY90cAxJUhs6CfeHgXMj4tkREcD5wFeABnBpWWcbcGtnQ5QkLVXb4Z6Zd9F84/RLwH1lX9cBVwFviogp4FRg5zKMU5K0BGsWXmV+mflW4K2zuh8Ezulkv5KkzvgJVUmqkOEuSRUy3CWpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqpDhLkkVMtwlqUKGuyRVyHCXpAoZ7pJUIcNdkipkuEtShQx3SaqQ4S5JFTLcJalCHYV7RKyNiFsi4qsRcSAiXhoRp0TE7og4WF7XLddgJUmL0+mV+3uAT2fmrwC/BhwArgb2ZOZGYE+ZlyQdR22He0T8PPAKYCdAZv4wM48AW4BdZbVdwCWdDlKStDSRme1tGPFi4DrgKzSv2ieBK4FvZebalvUOZ+bTbs1ExDgwDjA4ODg6MTHR1jiYnGxvu0WYGRpiYHq6a/vvtdrrg/prtL7+NzMywsDAQFvbjo2NTWbm5jkXZmZbDdgMPAm8pMy/B/gb4Mis9Q4vtK/R0dFsG3StNXbs6Or+e91qr2811Gh9/d8ajUYH8ce++XK1k3vu08B0Zt5V5m8BNgGPRcR6gPJ6qINjSJLa0Ha4Z+a3gW9GxEjpOp/mLZrbgG2lbxtwa0cjlCQt2ZoOt/8T4IaIeAbwIHA5zR8YN0fEduBh4LUdHkOStEQdhXtm3k3z3vts53eyX0lSZ/yEqiRVyHCXpAoZ7pJUIcNdkipkuEtShQx3SaqQ4S5JFTLcJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFXIcJekCnUc7hFxQkR8OSJuL/NnRsRdEXEwIm4qf19VknQcLceV+5XAgZb5dwLvzsyNwGFg+zIcQ5K0BB2Fe0QMAb8N/EuZD+CVwC1llV3AJZ0cQ5K0dJ1euf8j8BbgJ2X+VOBIZj5Z5qeBMzo8hiRpiSIz29sw4tXAxZn5hog4D3gzcDnwhcx8fllnA/DJzHzhHNuPA+MAg4ODoxMTE+1VMDnZ3naLMDM0xMD0dNf232u11wf112h9/W9mZISBgYG2th0bG5vMzM1zLszMthrwtzSvzB8Cvg18H7gB+A6wpqzzUuAzC+1rdHQ02wZda40dO7q6/1632utbDTVaX/+3RqPRQfyxb75cbfu2TGZek5lDmTkMbAU+l5m/DzSAS8tq24Bb2z2GJKk93XjO/SrgTRExRfMe/M4uHEOSdAxrlmMnmbkX2FumHwTOWY79SpLa4ydUJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqpDhLkkVMtwlqUKGuyRVyHCXpAq1He4RsSEiGhFxICLuj4grS/8pEbE7Ig6W13XLN1xJ0mJ0cuX+JPAXmfkC4Fzgiog4C7ga2JOZG4E9ZV6SdBy1He6Z+WhmfqlMfxc4AJwBbAF2ldV2AZd0OkhJ0tJEZna+k4hh4A7gbODhzFzbsuxwZj7t1kxEjAPjAIODg6MTExPtHXxysr3tFmFmaIiB6emu7b/Xaq8P6q/R+vrfzMgIAwMDbW07NjY2mZmb51yYmR01YACYBH63zB+ZtfzwQvsYHR3NtkHXWmPHjq7uv9et9vpWQ43W1/+t0Wh0EH/smy9XO3paJiJOBD4G3JCZHy/dj0XE+rJ8PXCok2NIkpauk6dlAtgJHMjMd7Usug3YVqa3Abe2PzxJUjvWdLDty4DXAfdFxN2l7y+BdwA3R8R24GHgtZ0NUZK0VG2He2Z+Hoh5Fp/f7n4lSZ3zE6qSVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqpDhLkkVMtwlqUKGuyRVyHCXpAoZ7pJUIcNdkipkuEtShboW7hFxYUQ8EBFTEXF1t44jSXq6roR7RJwAvB+4CDgLuCwizurGsSRJT9etK/dzgKnMfDAzfwhMAFu6dCxJ0iyRmcu/04hLgQsz84/K/OuAl2TmG1vWGQfGy+wI8MCyD6RzpwHf6fUguqj2+qD+Gq2v/3VS4y9l5ulzLVjT/niOKebo+5mfIpl5HXBdl46/LCJiX2Zu7vU4uqX2+qD+Gq2v/3Wrxm7dlpkGNrTMDwGPdOlYkqRZuhXu/wVsjIgzI+IZwFbgti4dS5I0S1duy2TmkxHxRuAzwAnA9Zl5fzeO1WUr+rbRMqi9Pqi/Ruvrf12psStvqEqSestPqEpShQx3SarQqg73iHgoIu6LiLsjYl/pOyUidkfEwfK6rvRHRLy3fJ3CvRGxqbejn1tEXB8RhyJif0vfkmuKiG1l/YMRsa0XtcxlnvreFhHfKufx7oi4uGXZNaW+ByLiVS39K/LrMSJiQ0Q0IuJARNwfEVeW/prO4Xw1VnEeI+KZEfHFiLin1PfXpf/MiLirnI+bysMmRMRJZX6qLB9u2decdS9KZq7aBjwEnDar7++Aq8v01cA7y/TFwKdoPsN/LnBXr8c/T02vADYB+9utCTgFeLC8rivT63pd2zHqexvw5jnWPQu4BzgJOBP4Os03+E8o088DnlHWOavXtZUxrwc2lennAF8rddR0DuersYrzWM7FQJk+EbirnJubga2l/4PAH5fpNwAfLNNbgZuOVfdix7Gqr9znsQXYVaZ3AZe09H8km+4E1kbE+l4M8Fgy8w7g8VndS63pVcDuzHw8Mw8Du4ELuz/6hc1T33y2ABOZ+YPM/AYwRfOrMVbs12Nk5qOZ+aUy/V3gAHAGdZ3D+WqcT1+dx3IuZsrsiaUl8ErgltI/+xwePbe3AOdHRDB/3Yuy2sM9gc9GxGQ0vw4BYDAzH4XmP0LguaX/DOCbLdtOc+x/kCvJUmvqx1rfWG5LXH/0lgV9Xl/59fzXaV75VXkOZ9UIlZzHiDghIu4GDtH8wfp14EhmPllWaR3rT+soy58ATqXD+lZ7uL8sMzfR/PbKKyLiFcdYd8GvVOhD89XUb7V+APhl4MXAo8A/lP6+rS8iBoCPAX+Wmf97rFXn6OvXGqs5j5n548x8Mc1P558DvGCu1cprV+pb1eGemY+U10PAJ2iehMeO3m4pr4fK6v38lQpLramvas3Mx8r/TD8BPsRTv7r2ZX0RcSLN0LshMz9euqs6h3PVWNt5BMjMI8Bemvfc10bE0Q+Oto71p3WU5b9A89ZjR/Wt2nCPiJMj4jlHp4ELgP00vybh6JMF24Bby/RtwOvL0wnnAk8c/TW5Dyy1ps8AF0TEuvKr8QWlb0Wa9d7H79A8j9Csb2t5GuFMYCPwRVbw12OUe607gQOZ+a6WRdWcw/lqrOU8RsTpEbG2TD8L+E2a7ys0gEvLarPP4dFzeynwuWy+ozpf3YvT63eWe9VovsN+T2n3A9eW/lOBPcDB8npKPvUO+Ptp3ju7D9jc6xrmqetGmr/S/ojmT/7t7dQE/CHNN3CmgMt7XdcC9f1rGf+95X+I9S3rX1vqewC4qKX/YppPaXz96LlfCQ14Oc1fve8F7i7t4srO4Xw1VnEegRcBXy517Af+qvQ/j2Y4TwH/BpxU+p9Z5qfK8uctVPdiml8/IEkVWrW3ZSSpZoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqtD/A1uoJt4ECQ7eAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tree[\"expenses\"].hist(color = \"red\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Библиотека `matplotlib` умеет работать с разными форматами цветов, поэтому цвет можно указывать, например, в формате *hexadecimal* (c `#`):" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tree[\"expenses\"].hist(color = \"#96297b\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Почитать про цвета в `matplotlib` можно [здесь](https://matplotlib.org/2.0.2/api/colors_api.html), а почитать про форматы цветов – [здесь](https://www.w3schools.com/colors/default.asp). \n", "\n", "*Дополнение:* если набрать `color picker` в Google, он выдаст свой настройщик цветов, в котором можно выбрать цвет, а потом узнать его код в формате *HEX* или *RGB*. " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }