Pandas: обзор библиотеки для Python
Библиотека Pandas входит в топ-5 самых востребованных навыков для вакансий в области data science.
Михаил Елизаров
Автор статьи
10 ноября 2022 в 18:26
Библиотека Pandas — «рабочая лошадка» аналитика данных. Она входит в топ-5 самых востребованных навыков для вакансий в области data science.
Рассказываем в статье, что такое Pandas для Python, как его установить, пользоваться и почему это классная штука.
Аналитик данных: новая работа через 5 месяцев
Получится, даже если у вас нет опыта в IT
Что такое Pandas для Python
Библиотеку используют для анализа и обработки табличных данных. Pandas — это как Excel, но мощнее. В Pandas можно спокойно работать с данными объемом в миллионы строк.
Поэтому на курсе Skypro «Аналитик данных» студентам дают основы Python. За несколько месяцев можно освоить базовые навыки, чтобы обрабатывать данные быстрее и качественнее. А еще с помощью знаний Python можно создавать визуализации, чтобы данные подтягивались туда из таблиц и обновлялись автоматически.
У Pandas открытый исходный код и подробная документация.
Структуры классов
Есть два главных класса библиотеки: Series и DataFrame.
Класс Series
Series — одномерный индексированный массив, который способен хранить данные любого типа. Номер записи в массиве называется индексом.
Пример создания Series:
Класс DataFrame
DataFrame — таблица с разными типами столбцов, то есть двумерная структура данных.
Пример создания DataFrame:
Как установить Pandas
Установите набор программ Anaconda — в него входит Python вместе с Pandas и другими полезными библиотеками.
- Скачайте установщик с сайта Anaconda.
- Откройте файл и следуйте инструкциям. Не забудьте поставить галочку в опции «Add Anaconda to my PATH environment variable».
- Перезагрузите компьютер.
- Откройте anaconda navigator и запустите jupyter notebook.
После этого импортируйте Pandas командой import pandas as pd.
Основная функциональность
Методы классов Series и DataFrame позволяют считать сводные статистики: среднюю, медиану, сумму и другие.
Пример:
Загружаем данные с характеристиками алмазов.
Считаем среднее и стандартное отклонение цены.
Для статистик по категориям используйте группировку.
Пример:
Посмотрим средние значения цены и размеров по разным типам огранки из колонки cut.
Обратите внимание, как отличается цена
Для двух групп используйте сводные таблицы.
Пример:
Узнаем среднюю цену алмазов по качеству обработки и цвету.
При помощи Pandas можно визуализировать данные. Для создания графиков используйте метод plot с параметром kind, который отвечает за тип визуализации.
Некоторые виды графиков:
- линейный — вызывается по умолчанию;
- столбчатый;
- гистограмма;
- боксплот;
- диаграмма рассеяния.
Посмотрим, как цена зависит от размера, построив диаграмму рассеяния.
Примеры использования в аналитике
Продолжим изучать данные об алмазах. Постараемся ответить на вопрос, что влияет на цену. Для работы понадобятся библиотеки Seaborn и Matplotlib, которые вы установили вместе с Anaconda.
Загрузим таблицу и посмотрим на ее начало, используя команду head.
Shape показывает количество строк (53 940) и столбцов (10):
С помощью метода info посмотрим на типы данных и количество заполненных значений в колонках.
Сolor, cut и clarity — категориальные переменные. Остальные — вещественные (числа).
Проанализируем их по отдельности.
Анализ категориальных переменных
Посмотрим на уникальные значения по каждой колонке с помощью команды value_counts. Вызовем ее из цикла.
for i in ['cut', 'clarity', 'color']: print(df[i].value_counts())
Для визуализации используем боксплоты, которые показывают распределение цены по каждой из категорий.
Вывод — исходя из графиков, дороже всего стоят алмазы с параметрами:
- Premium в колонке cut.
- VS1, VS2, SI1, SI2, I1 в колонке clarity.
- H, I или J в колонке color.
Анализ вещественных переменных
Статистику по числовым столбцам получим командой describe.
Посмотрим, как с ними взаимодействует стоимость камней, с помощью диаграмм рассеяния.
Вывод — цена сильнее всего зависит от переменных carat и x.
Мы узнали, что колонки carat, x, cut, clarity и color влияют на стоимость алмаза. Дальше можно построить модель для предсказания цены в зависимости от этих переменных.
Чтобы узнать, как это правильно сделать, записывайтесь на курс «Аналитик данных». За пять месяцев вы научитесь работать со статистикой, в Python, SQL и Excel. Наставники на курсе — аналитики из «Сбера», «Яндекса» и других крупных компаний. В конце курса специалисты центра карьеры помогут составить грамотное резюме и найти первую работу.
Pandas как эффективный инструмент для анализа данных
Что такое? Pandas – это программная библиотека, написанная на Python. Ее задачи – сбор, первичная оценка сведений и их статистический учет. В целом создана для облегчения работы с большими объемами данных.
Каковы преимущества? Хорошие показатели скорости, интуитивно понятный интерфейс, интеграция с другими библиотеками для расширения функционала – все это делает Pandas одной из лучших программ для работы с данными.
В статье рассказывается:
- Что собой представляет библиотека Рandas
- Для чего нужна библиотека Рandas
- Ключевые возможности
- Преимущества Pandas
- Пошаговая установка Pandas
- Класс Series
- Data Frame
- Как считывать данные в DataFramepandas
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.
Бесплатно от Geekbrains
Что собой представляет библиотека Рandas
Название библиотеки образовано сочетанием двух слов – PANel DAta. Она используется для анализа структурированных данных, размещенных в таблицах (панелях). Рandas упрощает анализ информации, тестирование приложений и другие действия, предоставляя разработчику готовые алгоритмы.
Инструмент базируется на языке Python и применяется для предварительного преобразования, обработки и очистки структурированных данных, представленных в форматах, не подходящих для машинного обучения, например, в виде таблиц Excel.
Основные направления использования Pandas Python:
- Группировка данных по заданным параметрам.
- Объединение нескольких таблиц в одну сводную.
- Очищение данных от дубликатов и невалидных строк или столбцов.
- Вывод определенных значений по фильтрам или уникальности.
- Использование агрегирующих функций, включая подсчет значений, суммы элементов, определение среднего значения.
- Визуализация собранных данных.
Рandas – один из многочисленных инструментов для анализа данных, обращение с которыми входит в программу обучения по специальности «Аналитик данных».
Библиотека Рandas не входит в число встроенных функций Python. Она устанавливается по инструкции, размещенной на официальном сайте. Для начала стоит установить программу Anaconda для управления пакетами для работы данными, содержащую Pandas. После скачивания функции, доступные в этой библиотеки, используются при написании кода на Python.
Для работы с данными, как правило, применяют Jupyter Notebook. Это специальная среда разработки, подходящая для кодирования на Python с использованием возможностей библиотеки Рandas, а также для итерационного выполнения программ и анализа результатов выполнения отдельных операций, в том числе выборки из таблиц
Для чего нужна библиотека Рandas
Сфера применения Рandas настолько широка, что проще перечислить функции, с которыми она не справится.
Библиотека представляет собой комфортное место, в котором вы можете проделывать с вашими данными любые действия: собирать, очищать, преобразовывать и анализировать.
Узнай, какие ИТ — профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:
Павел Симонов
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Получить подборку бесплатно
Уже скачали 23653
Предположим, что вам необходимо изучить набор данных с вашего компьютера в формате CSV. С помощью Pandas информация будет извлечена из CSV в DataFrame, то есть представлена в виде таблицы, а затем вы сможете:
- Рассчитать статистику и получить ответы на следующие вопросы:
- Каково среднее значение, медиана, максимум или минимум для каждого столбца?
- Коррелирует ли столбец A со столбцом B?
- Как выглядит распределение данных в столбце C?
Рandas – лучший инструмент, позволяющий разобраться в природе вашего набора данных. После этого их моделирование или сложная визуализация не составит труда.
Ключевые возможности
Набор функций библиотеки Рandas весьма обширен. Разработчики ценят этот продукт за следующие компоненты, упрощающие анализ данных и другие действия с ними:
- объекты data frame, позволяющие управлять индексированными массивами двумерной информации;
- встроенные инструменты совмещения данных, а также обработки сопутствующих сведений;
- функция обмена электронными материалами между структурами памяти, а также различными файлами и документами;
- срезы по значениям индексов;
- расширенные возможности при индексировании;
- наличие выборки из больших объемов наборов информации;
- вставка и удаление столбцов в массиве;
- встроенные средства совмещения информации;
- обработка отсутствующих сведений;
- слияние имеющихся информационных наборов;
- иерархическое индексирование, помогающее обрабатывать материалы высокой размерности в структурах с меньшей размерностью;
- группировка, делающая доступными одновременные трехэтапные операции типа «разделение, изменение и объединение».
Полезными функциями библиотеки Pandas являются поддержка временных рядов, формирование периодов, изменение интервалов. Как и другие возможности, они предназначены для повышения производительности при работе с данными.
Преимущества Pandas
- Высокая скорость благодаря оптимизации кода.
- Интуитивно понятный интерфейс.
- Расширенные возможности за счет интеграции с другим библиотеками на Python, в частности, с NumPy, Matplotlib и Scikit-learn.
- Сильное мировое комьюнити, силами которого продукт постоянно совершенствуется.
Пошаговая установка Pandas
Шаг 1. Самый простой способ приступить к работе с библиотекой описан на официальном сайте продукта. В первую очередь устанавливается размещенный на этом же ресурсе дистрибутив для Python с набором библиотек – Anaconda.
Новичкам помогут успешно справиться с этой задачей несколько советов:
- Становитесь на рекомендованных настройках, например, Install for: Just me (recommended). Изменения можно вносить по мере освоения программы.
- Запуск по умолчанию активируется галочкой «Add Anaconda to my PATH environment variable», иначе каждый раз придется включать Anaconda вручную.
- Вопрос: «Do you wish to initialize Anaconda3?» (Хотите ли вы инициализировать Anaconda3?) предполагает ответ «Да».
Завершив установку программы, перезагрузите компьютер.
Для вас подарок! В свободном доступе до 29.10 —>
Скачайте ТОП-10
бесплатных нейросетей
для программирования
Помогут писать код быстрее на 25%
Чтобы получить подарок, заполните информацию в открывшемся окнеШаг 2. В командной строке Anaconda напишите JupyterLab: так вы запустите интерактивную среду для работы с кодом, данными и блокнотами, входящую в пакет дистрибутива.
Шаг 3. В JupyterLab необходимо создать новый блокнот Python3.
Шаг 4. В первой ячейке пропишите: import pandas as pd, после этого можно приступать к написанию кода в следующих ячейках.
Класс Series
Series – объект, по виду напоминающий одномерный массив. В него могут входить любые типы данных. Как правило, представляет собой столбец таблицы с последовательностями тех или иных значений, каждое из которых наделено индексом – номером строки.
Обработка соответствующего кода завершается появлением на экране такой записи:
Series выглядит как таблица с индексами компонентов. В первом столбце выводится соответствующая информация, во второй размещаются заданные значения.
Data Frame
DataFrame – основной тип информации в Pandas. Это двумерная информационная структура в виде таблицы с разными типами столбцов. Вся дальнейшая работа ведется на основе DataFrame.
Объект данных может выглядеть как обычная таблица, например, в Excel, и включать любое количество столбцов и строк. Содержимое ячеек представляет сведения разных типов:
- числовые;
- булевы;
- строковые и так далее.
В DataFrame индексы присваиваются не только столбцам, но и строкам. Такая особенность позволяет сортировать и фильтровать данные, а также ускоряет и упрощает процесс поиска нужных значений.
В DataFrame поддерживается жесткое кодирование, а также импорт:
- CSV.
- TSV.
- Excel-документов.
- SQL-таблиц.
Соответствующий компонент может создаваться при помощи команды:
- data – это создание объекта из входных сведений (NumPy, series, dict и аналогичные им);
- index – строковые метки;
- columns – создание подписей столбцов;
- dtype – ссылка на тип сведений, содержащихся в каждом столбце (факультативный параметр);
- copy – копирование сведений, если они предусмотрены изначально.
Только до 2.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне
Создавать DataFrame можно по-разному, например, формируя объект из словаря или списков, кортежей, файла Excel.
Так выглядит код для создания DataFrame на базе списка словарей:
Обработка предложенного фрагмента завершится выводом на экран устройства следующей информации:
Принцип работы кода достаточно прост: после создания словаря в него передается метод DataFrame() в качестве аргумента. Получив те или иные значения, система выводит объект на печать.
Индекс с метками строк отображается в крайнем левом столбце. Сама таблица – это заголовки и электронные материалы. Используя настройки индексных параметров, возможно создать индексированные DataFrames.
Как считывать данные в DataFrame pandas
Процесс загрузки данных в DataFrame из файлов различных форматов несложен.
Чтение данных из CSV-файлов
Чтобы загрузить данные из файлов CSV, прописывается строка:
df = pd.read_csv(‘purchases.csv’)
У CSV нет индексов, как у DataFrames, поэтому достаточно определить index_col при чтении:
df = pd.read_csv(‘purchases.csv’, index_col=0)
Так мы устанавливаем, что индексом будет нулевой столбец.
У большинства CSV индексного столбца нет, поэтому этот шаг вас не должен волновать.
Чтение данных из JSON
Файл JSON представляет собой хранимый словарь Python, а значит, для pandas не составит труда прочитать его:
df = pd.read_json(‘purchases.json’)
Использование JSON делает возможной работу через вложенность, поэтому на этот раз нами получен правильный индекс. Чтобы посмотреть, как работает файл data_file.json, откройте его в блокноте.
В процессе анализа структуры вашего JSON Pandas пытается разобраться, как создать DataFrame, и иногда добивается успеха. Будьте готовы часто задавать именованный аргумент orient, который зависит от формата строки JSON.
Чтение данных из базы данных SQL
При работе с базой данных SQL для начала используйте соответствующую библиотеку Python для установки соединения и последующей передачи запроса в Pandas. Продемонстрируем этот процесс с использованием SQLite.
В первую очередь устанавливаем pysqlite3. Выполняем в терминале следующую команду:
pip install pysqlite3
Если вы в Jupyter Notebook, запускаете эту ячейку:
!pip install pysqlite3
sqlite3 нужен, чтобы соединиться с базой данных, которая впоследствии будет использоваться для создания DataFrame с помощью запроса SELECT.
Создаем соединение с файлом базы данных SQLite:
import sqlite3
con = sqlite3.connect(«database.db»)
Основы Pandas №1 // Чтение файлов, DataFrame, отбор данных
Pandas — одна из самых популярных библиотек Python для аналитики и работы с Data Science. Это как SQL для Python. Все потому, что pandas позволяет работать с двухмерными таблицами данных в Python. У нее есть и масса других особенностей. В этой серии руководств по pandas вы узнаете самое важное (и часто используемое), что необходимо знать аналитику или специалисту по Data Science. Это первая часть, в которой речь пойдет об основах.
Примечание: это практическое руководство, поэтому рекомендуется самостоятельно писать код, повторяя инструкции!
Чтобы разобраться со всем, необходимо…
- Установить Python3.7+, numpy и Pandas.
- Следующий шаг: подключиться к серверу (или локально) и запустить Jupyter. Затем открыть Jupyter Notebook в любимом браузере. Создайте новый ноутбук с именем «pandas_tutorial_1».
- Импортировать numpy и pandas в Jupyter Notebook с помощью двух строк кода:
import numpy as np import pandas as pd
Примечание: к «pandas» можно обращаться с помощью аббревиатуры «pd». Если в конце инструкции с import есть as pd , Jupyter Notebook понимает, что в будущем, при вводе pd подразумевается именно библиотека pandas.
Теперь все настроено! Переходим к руководству по pandas! Первый вопрос:
Как открывать файлы с данными в pandas
Информация может храниться в файлах .csv или таблицах SQL. Возможно, в файлах Excel. Или даже файлах .tsv. Или еще в каком-то другом формате. Но цель всегда одна и та же. Если необходимо анализировать данные с помощью pandas, нужна структура данных, совместимая с pandas.
Структуры данных Python
В pandas есть два вида структур данных: Series и DataFrame.
Series в pandas — это одномерная структура данных («одномерная ndarray»), которая хранит данные. Для каждого значения в ней есть уникальный индекс.
DataFrame — двухмерная структура, состоящая из колонок и строк. У колонок есть имена, а у строк — индексы.
В руководстве по pandas основной акцент будет сделан на DataFrames. Причина проста: с большей частью аналитических методов логичнее работать в двухмерной структуре.
Загрузка файла .csv в pandas DataFrame
Для загрузки .csv файла с данными в pandas используется функция read_csv() .
Начнем с простого образца под названием zoo. В этот раз для практики вам предстоит создать файл .csv самостоятельно. Вот сырые данные:
animal,uniq_id,water_need elephant,1001,500 elephant,1002,600 elephant,1003,550 tiger,1004,300 tiger,1005,320 tiger,1006,330 tiger,1007,290 tiger,1008,310 zebra,1009,200 zebra,1010,220 zebra,1011,240 zebra,1012,230 zebra,1013,220 zebra,1014,100 zebra,1015,80 lion,1016,420 lion,1017,600 lion,1018,500 lion,1019,390 kangaroo,1020,410 kangaroo,1021,430 kangaroo,1022,410
Вернемся во вкладку “Home” https://you_ip:you_port/tree Jupyter для создания нового текстового файла…
затем скопируем данные выше, чтобы вставить информацию в этот текстовый файл…
…и назовем его zoo.csv!
Это ваш первый .csv файл.
Вернемся в Jupyter Notebook (который называется «pandas_tutorial_1») и откроем в нем этот .csv файл!
Для этого нужна функция read_csv()
Введем следующее в новую строку:
pd.read_csv('zoo.csv', delimiter=',')
Готово! Это файл zoo.csv , перенесенный в pandas. Это двухмерная таблица — DataFrame. Числа слева — это индексы. А названия колонок вверху взяты из первой строки файла zoo.csv.
На самом деле, вам вряд ли придется когда-нибудь создавать .csv файл для себя, как это было сделано в примере. Вы будете использовать готовые файлы с данными. Поэтому нужно знать, как загружать их на сервер!
Вот небольшой набор данных: ДАННЫЕ
Если кликнуть на ссылку, файл с данными загрузится на компьютер. Но он ведь не нужен вам на ПК. Его нужно загрузить на сервер и потом в Jupyter Notebook. Для этого нужно всего два шага.
Шаг 1) Вернуться в Jupyter Notebook и ввести эту команду:
!wget https://pythonru.com/downloads/pandas_tutorial_read.csv
Это загрузит файл pandas_tutorial_read.csv на сервер. Проверьте:
Если кликнуть на него…
…можно получить всю информацию из файла.
Шаг 2) Вернуться в Jupyter Notebook и использовать ту же функцию read_csv (не забыв поменять имя файла и значение разделителя):
pd.read_csv('pandas_tutorial_read.csv', delimete=';')
Данные загружены в pandas!
Что-то не так? В этот раз не было заголовка, поэтому его нужно настроить самостоятельно. Для этого необходимо добавить параметры имен в функцию!
pd.read_csv('pandas_tutorial_read.csv', delimiter=';', names=['my_datetime', 'event', 'country', 'user_id', 'source', 'topic'])
Так лучше!
Теперь файл .csv окончательно загружен в pandas DataFrame .Примечание: есть альтернативный способ. Вы можете загрузить файл .csv через URL напрямую. В этом случае данные не загрузятся на сервер данных.
pd.read_csv( 'https://pythonru.com/downloads/pandas_tutorial_read.csv', delimiter=';', names=['my_datetime', 'event', 'country', 'user_id', 'source', 'topic'] )
Примечание: если вам интересно, что в этом наборе, то это лог данных из блога о путешествиях. Ну а названия колонок говорят сами за себя.
Отбор данных из dataframe в pandas
Это первая часть руководства, поэтому начнем с самых простых методов отбора данных, а уже в следующих углубимся и разберем более сложные.
Вывод всего dataframe
Базовый метод — вывести все данные из dataframe на экран. Для этого не придется запускать функцию pd.read_csv() снова и снова. Просто сохраните денные в переменную при чтении!
article_read = pd.read_csv( 'pandas_tutorial_read.csv', delimiter=';', names = ['my_datetime', 'event', 'country', 'user_id', 'source', 'topic'] )
После этого можно будет вызывать значение article_read каждый раз для вывода DataFrame!
Вывод части dataframe
Иногда удобно вывести не целый dataframe, заполнив экран данными, а выбрать несколько строк. Например, первые 5 строк можно вывести, набрав:
article_read.head()
Или последние 5 строк:
article_read.tail()
Или 5 случайных строк:
article_read.sample(5)
Вывод определенных колонок из dataframe
А это уже посложнее! Предположим, что вы хотите вывести только колонки «country» и «user_id».
Для этого нужно использовать команду в следующем формате:
article_read[['country', 'user_id']]
Есть предположения, почему здесь понадобились двойные квадратные скобки? Это может показаться сложным, но, возможно, так удастся запомнить: внешние скобки сообщают pandas, что вы хотите выбрать колонки, а внутренние — список (помните? Списки в Python указываются в квадратных скобках) имен колонок.
Поменяв порядок имен колонов, изменится и результат вывода.
Это DataFrame выбранных колонок.
Примечание: иногда (особенно в проектах аналитического прогнозирования) нужно получить объекты Series вместе DataFrames. Это можно сделать с помощью одного из способов:
- article_read.user_id
- article_read[‘user_id’]
Фильтрация определенных значений в dataframe
Если прошлый шаг показался сложным, то этот будет еще сложнее!
Предположим, что вы хотите сохранить только тех пользователей, которые представлены в источнике «SEO». Для этого нужно отфильтровать по значению «SEO» в колонке «source»:
article_read[article_read.source == 'SEO']
Важно понимать, как pandas работает с фильтрацией данных:
Шаг 1) В первую очередь он оценивает каждую строчку в квадратных скобках: является ли ‘SEO’ значением колонки article_read.source ? Результат всегда будет булевым значением ( True или False ).
Шаг 2) Затем он выводит каждую строку со значением True из таблицы article_read .
Выглядит сложно? Возможно. Но именно так это и работает, поэтому просто выучите, потому что пользоваться этим придется часто!
Функции могут использоваться одна за другой
Важно понимать, что логика pandas очень линейна (как в SQL, например). Поэтому если вы применяете функцию, то можете применить другую к ней же. В таком случае входящие данные последней функции будут выводом предыдущей.
Например, объединим эти два метода перебора:
article_read.head()[['country', 'user_id']]
Первая строчка выбирает первые 5 строк из набора данных. Потом она выбирает колонки «country» и «user_id».
Можно ли получить тот же результат с иной цепочкой функций? Конечно:
article_read[['country', 'user_id']].head()
В этом случае сначала выбираются колонки, а потом берутся первые 5 строк. Результат такой же — порядок функций (и их исполнение) отличается.
А что будет, если заменить значение «article_read» на оригинальную функцию read_csv():
pd.read_csv( 'pandas_tutorial_read.csv', delimiter=';', names = ['my_datetime', 'event', 'country', 'user_id', 'source', 'topic'] )[['country', 'user_id']].head()
Так тоже можно, но это некрасиво и неэффективно. Важно понять, что работа с pandas — это применение функций и методов один за одним, и ничего больше.
Проверьте себя!
Как обычно, небольшой тест для проверки! Выполните его, чтобы лучше запомнить материал!
Выберите used_id , country и topic для пользователей из country_2 . Выведите первые 5 строк!
А вот и решение!
Его можно преподнести одной строкой:
article_read[article_read.country == 'country_2'][['user_id','topic', 'country']].head()
Или, чтобы было понятнее, можно разбить на несколько строк:
ar_filtered = article_read[article_read.country == 'country_2'] ar_filtered_cols = ar_filtered[['user_id','topic', 'country']] ar_filtered_cols.head()
В любом случае, логика не отличается. Сначала берется оригинальный dataframe ( article_read ), затем отфильтровываются строки со значением для колонки country — country_2 ( [article_read.country == ‘country_2’] ). Потому берутся три нужные колонки ( [[‘user_id’, ‘topic’, ‘country’]] ) и в конечном итоге выбираются только первые пять строк ( .head() ).
Итого
Вот и все. В следующей статье вы узнаете больше о разных методах агрегации (например, sum, mean, max, min) и группировки.
Pandas
Pandas — это библиотека Python для обработки и анализа структурированных данных, её название происходит от «panel data» («панельные данные»). Панельными данными называют информацию, полученную в результате исследований и структурированную в виде таблиц. Для работы с такими массивами данных и создан Pandas.
Освойте профессию «Аналитик данных»
Работа с открытым кодом
Pandas — это opensource-библиотека, то есть ее исходный код в открытом доступе размещен на GitHub. Пользователи могут добавлять туда свой код: вносить пояснения, дополнять методы работы и обновлять разделы. Для работы потребуется компилятор (программа, которая переводит текст с языка программирования в машинный код) C/C++ и среда разработки Python. Подробный процесс установки компилятора С для разных операционных систем можно найти в документации Pandas.
Профессия / 12 месяцев
Аналитик данныхНаходите закономерности и делайте выводы, которые помогут бизнесу
В каких профессиях понадобится библиотека?
Навык работы с этой библиотекой пригодится дата-сайентистам или аналитикам данных. С помощью Pandas эти специалисты могут группировать и визуализировать данные, создавать сводные таблицы и делать выборку по определенным признакам.
Как установить Pandas
Пошаговая инструкция по установке библиотеки Pandas
-
Скачать библиотеку На официальном сайте Pandas указан самый простой способ начать работу с библиотекой. Для этого потребуется установить Anaconda — дистрибутив (форма распространения программного обеспечения, набор библиотек или программного кода для установки программы) для Python с набором библиотек. Безопасно скачать его можно на официальном сайте.
Настройка установки Вот несколько советов по установке Anaconda для новичков:
— Выбирайте рекомендованные настройки, на первое время этого будет достаточно. Например, Install for: Just me (recommended).
— Но если не поставить галочку «Add Anaconda to my PATH environment variable», то Anaconda не будет запускаться по умолчанию, каждый раз ее нужно будет запускать отдельно.
— На вопрос: «Do you wish to initialize Anaconda3?» (Хотите ли вы инициализировать Anaconda3?) отвечайте «Да».
— После завершения установки перезагрузите компьютер.
Запуск JupyterLab В командной строке Anaconda запустите JupyterLab — это интерактивная среда для работы с кодом, данными и блокнотами, которая входит в пакет дистрибутива. Для этого введите jupyter-lab .
Открытие блокнота Создайте в JupyterLab новый блокнот Python3. Для его создания надо щелкнуть на значке «+», расположенном в верхней левой части интерфейса. В появившемся меню выбрать «Python 3» для создания блокнота.
Импорт библиотеки В первой ячейке пропишите: import pandas as pd , после этого в следующих ячейках можно писать код.
Читайте также Как выбрать IT-специальность в новых реалиях?
DataFrame и Series
Чтобы анализировать данные с помощью Pandas, нужно понять, как устроены структуры этих данных внутри библиотеки. В первую очередь разберем, что такое DataFrame и Series.
Series
Pandas Series (серия) — это одномерный массив. Визуально он похож на пронумерованный список: слева в колонке находятся индексы элементов, а справа — сами элементы.
my_series = pd.Series([5, 6, 7, 8, 9, 10])
Индексом может быть числовой показатель (0, 1, 2…), буквенные значения (a, b, c…) или другие данные, выбранные программистом. Если особое значение не задано, то числовые индексы проставляются автоматически. Например, от 0 до 5 как в примере выше.
Такая нумерация называется RangeIndex, в ней всегда содержатся числа от 0 до определенного числа N, которое обозначает количество элементов в серии. Собственные значения индексов задаются в квадратных скобках через index, как в примере ниже:
my_series2 = pd.Series([5, 6, 7, 8, 9, 10]), index=['a', 'b', 'c', 'd', 'e', 'f'])
Индексы помогают обращаться к элементам серии и менять их значения. Например, чтобы в нашей серии [5, 6, 7, 8, 9, 10] заменить значения некоторых элементов на 0, мы прописываем индексы нужных элементов и указываем, что они равны нулю:
my_series2[['a', 'b', 'f']] = 0
Можно сделать выборку по нескольким индексам, чтобы ненужные элементы в серии не отображались:
my_series2[['a', 'b', 'f']]
a 5 b 6 f 10 dtype: int64
DataFrame
Pandas DataFrame — это двумерный массив, похожий на таблицу/лист Excel (кстати, данные из Excel можно читать с помощью команды pandas.read_excel(‘file.xls’)) . В нем можно проводить такие же манипуляции с данными: объединять в группы, сортировать по определенному признаку, производить вычисления. Как любая таблица, датафрейм состоит из столбцов и строк, причем столбцами будут уже известные объекты — Series.
Чтобы проверить, действительно ли серии — это части датафрейма, можно извлечь любую колонку из таблицы. Возьмем набор данных о нескольких странах СНГ, их площади и населении и выберем колонку country:
df = pd.DataFrame(< 'country': ['Kazakhstan', 'Russia', 'Belarus', 'Ukraine'], 'population': [17.04, 143.5, 9.5, 45.5], 'square': [2724902, 17125191, 207600, 603628] >)
В итоге получится простая серия, в которой сохранятся те же индексы по строкам, что и в исходном датафрейме:
df['country']
type(df['country'])
Станьте аналитиком данных и получите востребованную специальность
Кроме этого, у датафрейма есть индексы по столбцам, которые задаются вручную. Для простоты написания кода обозначим страны индексами из двух символов: Kazakhstan — KZ, Russia — RU и так далее:
# Создаем датафрейм с заданными индексами df = pd.DataFrame(< 'country': ['Kazakhstan', 'Russia', 'Belarus', 'Ukraine'], 'population': [17.04, 143.5, 9.5, 45.5], 'square': [2724902, 17125191, 207600, 603628] >, index=['KZ', 'RU', 'BY', 'UA'])
# Изменяем индексы df.index = ['KZ', 'RU', 'BY', 'UA'] df.index.name = 'Country Code'
По индексам можно искать объекты и делать выборку, как в Series . Возьмем тот же датафрейм и сделаем выборку по индексам KZ, RU и колонке population методом .loc (в случае .loc мы используем квадратные скобки, а не круглые, как с другими методами), чтобы сравнить население двух стран:
df.loc[['KZ', 'RU'], 'population']
Anaconda выведет следующее:
Country Code
KZ 17.04
RU 143.50
Name: population, dtype: float64Также в DataFrame производят математические вычисления. Например, рассчитаем плотность населения каждой страны в нашем датафрейме. Данные в колонке population (численность населения) делим на square (площадь) и получаем новые данные в колонке density, которые показывают плотность населения:
# Вычисление плотности населения df['density'] = df['population'] / df['square'] * 1000000
Станьте аналитиком данных и получите востребованную специальность
Чтение и запись данных
В Pandas работают с форматами csv, excel, sql, html, hdf и другими. Полный список можно посмотреть с помощью метода .read, где через нижнее подчеркивание «_» будут указаны все доступные форматы.
Ниже представлены примеры чтения и записи данных на Python с использованием Pandas:
Чтение данных:
- Чтение данных из CSV файла:
import pandas as pd # Чтение CSV файла data = pd.read_csv('data.csv') # Вывод первых нескольких строк датафрейма print(data.head())
- Чтение данных из Excel файла:
# Чтение данных из Excel файла data = pd.read_excel('data.xlsx') # Вывод первых нескольких строк датафрейма print(data.head())
- Чтение данных из SQL базы данных:
from sqlalchemy import create_engine # Создание подключения к базе данных engine = create_engine('sqlite:///database.db') # Чтение данных с помощью SQL запроса query = "SELECT * FROM table_name" data = pd.read_sql(query, engine) # Вывод первых нескольких строк датафрейма print(data.head())
Запись данных:
- Запись данных в CSV или Exсel файл:
# Создание датафрейма data = pd.DataFrame(< 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 22] >) # Запись в CSV файл (или Exсel, нужно будет поменять расширение ниже) data.to_csv('output.csv', index=False)
- Запись данных в SQL базу данных:
import pandas as pd from sqlalchemy import create_engine # Создание датафрейма data = pd.DataFrame(< 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 22] >) # Создание подключения к базе данных engine = create_engine('sqlite:///new_database.db') # Запись данных в базу данных data.to_sql('new_table', engine, index=False, if_exists='replace')
Доступ по индексу в DataFrame
Для поиска данных в библиотеке Pandas используются два метода: .loc и .iloc . Рассмотрим их функциональность и применение.
Метод .loc:
Метод .loc предоставляет доступ к данным по заданному имени строки (индексу) в DataFrame. Рассмотрим пример с набором данных о скорости и ядовитости нескольких видов змей:
data = index = ['cobra', 'viper', 'sidewinder'] df = pd.DataFrame(data, index=index) # Вывод датафрейма print(df)
Используя метод .loc , мы можем получить информацию о конкретном виде змеи, например, гадюке (viper):
# Получение данных о гадюке (viper) viper_data = df.loc['viper'] print(viper_data)
Метод .iloc:
Метод .iloc позволяет осуществлять доступ к данным по порядковому номеру строки в DataFrame. Рассмотрим пример с набором данных, имеющим числовые индексы:
mydict = [, , ] df = pd.DataFrame(mydict) # Вывод датафрейма print(df)
a b c d 0 1 2 3 4 1 100 200 300 400 2 1000 2000 3000 4000
Используя метод .iloc , можно получить данные из первой строки с индексом 0:
first_row = df.iloc[0] first_row
Читайте также Что нужно знать, чтобы стать дата-сайентистом?
Группировка и агрегирование данных
Для этого используется метод .groupby , он позволяет анализировать отдельные группы данных и сравнивать показатели. Например, у нас есть несколько обучающих курсов, информация о которых хранится в одной таблице. Нужно проанализировать, какой доход приносит каждый из них:
Используем .groupby и указываем название колонки title, на основе которой Pandas объединит все данные. После этого используем метод .agregate – он поможет провести математические вычисления, то есть суммировать стоимость внутри каждой группы.
import pandas as pd # Создание DataFrame с данными о курсах data = < 'title': ['Курс A', 'Курс B', 'Курс C', 'Курс D', 'Курс E'], 'income': [100, 150, 200, 120, 180] >df = pd.DataFrame(data) # Группировка данных по названию курса и агрегирование дохода grouped = df.groupby('title', as_index=False).aggregate() grouped
Обратите внимание на as_index=False , эта часть кода отвечает за то, чтобы сохранить числовые индексы в результатах группировки и вычисления.
Сводные таблицы в Pandas
Их используют для обобщения информации, собранной об объекте исследования. Когда исходных данных много и все они разного типа, составление таблиц помогает упорядочить информацию. Чтобы создавать на Python сводные таблицы, тоже используют библиотеку Pandas, а именно — метод .pivot_table .
Для примера возьмем условный набор данных с простыми категориями one / two, small / large и числовыми значениями. В столбце A две категории foo / bar складываются в слово foobar — текст, который используется в программировании для условного обозначения. В этом случае он указывает, что мы делим данные на две группы по неопределенному признаку.
df = pd.DataFrame() df
Результат выполнения кода:
С помощью метода .pivot_table преобразуем эти данные в таблицу, а в скобках прописываем условия.
table = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum) table
Мы разбиваем данные на две категории: bar и foo, в каждой из них будут подгруппы со значениями one и two, которые в свою очередь делятся на small и large. В сводной таблице мы вычисляем, сколько объектов будет в каждой группе. Для этого используем методы values, index, columns и aggfunc:
- values — метод для агрегации, объединяет элементы в одну систему;
- index и columns — методы, отвечающие за группировку столбцов;
- aggfunc — метод, который передает список функций, необходимых для расчета.
Визуализация данных в Pandas
Дата-аналитики составляют наглядные графики с помощью Pandas и библиотеки Matplotlib. В этой связке Pandas отвечает за вычислительную часть работы, а вспомогательная библиотека «создает» картинку.
Посмотрим на данные о продажах в одной из компаний:
Число покупок на одного покупателя Количество покупателей 7000 4 3755 6 2523 13 541 16 251 21 1 31 В таблице видно, что одни пользователи совершили уже более 7 000 покупок, а некоторые — сделали первую. Чтобы увидеть подробную картину, составляем график sns.distplot. На горизонтальной оси будет отображаться число покупок на одного покупателя, а на вертикальной — количество покупателей, которые совершили именно столько покупок в этой компании. Так по графику можно определить, что самой многочисленной оказалась группа клиентов, которая совершила всего несколько покупок, а группа постоянных клиентов немногочисленная.
import seaborn as sns import matplotlib.pyplot as plt # Создание данных purchase_counts = [7000, 3755, 2523, 541, 251, 1] customer_counts = [4, 6, 13, 16, 21, 31] # Создание графика sns.set(style="whitegrid") sns.distplot(purchase_counts, bins=20, kde=False, hist_kws=) plt.xlabel('Число покупок на одного покупателя') plt.ylabel('Количество покупателей') plt.title('Распределение числа покупок') plt.show()
distplot — это график, который визуализирует гистограммы, то есть распределяет данные по столбцам. Каждому столбцу соответствует доля количества объектов в данной группе. Также distplot показывает плотность распределения — плавный линейный график, в котором самая высокая точка указывает на наибольшее количество объектов.
Кроме этого, в Pandas есть другие виды графиков:
- kdeplot — график плотности распределения, который останется, если убрать гистограммы из distplot;
- jointplot — график, показывающий распределение данных между двумя переменными. Каждая строка из набора данных в исходном файле отображается на графике как точка внутри системы координат. У точек на графике jointplot будет два заданных значения: одно по оси X, другое по оси Y.
Например, можно отследить взаимосвязь между тем, сколько минут посетитель проводит в торговом центре и сколько магазинов успевает посетить за это время: кто-то за 30 минут успеет зайти в 5 бутиков, а кто-то обойдет 16. При этом каждый посетитель на графике будет отображаться отдельной точкой.
Аналитик данных
Аналитики влияют на рост бизнеса. Они выясняют, какой товар и в какое время больше покупают. Считают юнит-экономику. Оценивают окупаемость рекламной кампании. Поэтому компании ищут и переманивают таких специалистов.
Статьи по теме:
Разбираемся, почему эти профессии не стоит путатьОтвечает Мария Жарова, эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.