Меню

Pandas сводная таблица индексы



Иерархическое индексирование и уровни признаков / pd 6

Содержание

Иерархическое индексирование — это важная особенность pandas, поскольку она позволяет иметь несколько уровней индексов в одной оси. С ее помощью можно работать с данными в большом количестве измерений, по-прежнему используя для этого структуру данных из двух измерений.

Начнем с простого примера, создав Series с двумя массивами индексов — структуру с двумя уровнями.

За счет спецификации иерархического индексирования, выбор подмножеств значений в таком случае заметно упрощен. Можно выбрать значения для определенного значения первого индекса стандартным способом:

Или же значения для конкретного значения во втором индекса — таким:

Если необходимо конкретное значение, просто указываются оба индекса.

Иерархическое индексирование играет важную роль в изменении формы данных и групповых операциях, таких как сводные таблицы. Например, данные могут быть перестроены и использованы в объекте Dataframe с помощью функции unstack() . Она конвертирует Series с иерархическими индексами в простой Dataframe , где второй набор индексов превращается в новые колонки.

down left right up
blue 0.408367 NaN NaN 0.081480
red 0.374153 0.325975 NaN 0.465264
white 0.512268 NaN 0.639885 0.661039

Если необходимо выполнить обратную операцию — превратить Dataframe в Series , — используется функция stack() .

Источник

Введение в pandas: анализ данных на Python

4 Март 2017 , Python, 499866 просмотров, Introduction to pandas: data analytics in Python

pandas это высокоуровневая Python библиотека для анализа данных. Почему я её называю высокоуровневой, потому что построена она поверх более низкоуровневой библиотеки NumPy (написана на Си), что является большим плюсом в производительности. В экосистеме Python, pandas является наиболее продвинутой и быстроразвивающейся библиотекой для обработки и анализа данных. В своей работе мне приходится пользоваться ею практически каждый день, поэтому я пишу эту краткую заметку для того, чтобы в будущем ссылаться к ней, если вдруг что-то забуду. Также надеюсь, что читателям блога заметка поможет в решении их собственных задач с помощью pandas, и послужит небольшим введением в возможности этой библиотеки.

DataFrame и Series

Чтобы эффективно работать с pandas, необходимо освоить самые главные структуры данных библиотеки: DataFrame и Series. Без понимания что они из себя представляют, невозможно в дальнейшем проводить качественный анализ.

Series

Структура/объект Series представляет из себя объект, похожий на одномерный массив (питоновский список, например), но отличительной его чертой является наличие ассоциированных меток, т.н. индексов, вдоль каждого элемента из списка. Такая особенность превращает его в ассоциативный массив или словарь в Python.

В строковом представлении объекта Series, индекс находится слева, а сам элемент справа. Если индекс явно не задан, то pandas автоматически создаёт RangeIndex от 0 до N-1, где N общее количество элементов. Также стоит обратить, что у Series есть тип хранимых элементов, в нашем случае это int64, т.к. мы передали целочисленные значения.

У объекта Series есть атрибуты через которые можно получить список элементов и индексы, это values и index соответственно.

Доступ к элементам объекта Series возможны по их индексу (вспоминается аналогия со словарем и доступом по ключу).

Индексы можно задавать явно:

Делать выборку по нескольким индексам и осуществлять групповое присваивание:

Фильтровать Series как душе заблагорассудится, а также применять математические операции и многое другое:

Если Series напоминает нам словарь, где ключом является индекс, а значением сам элемент, то можно сделать так:

У объекта Series и его индекса есть атрибут name, задающий имя объекту и индексу соответственно.

Индекс можно поменять «на лету», присвоив список атрибуту index объекта Series

Имейте в виду, что список с индексами по длине должен совпадать с количеством элементов в Series.

DataFrame

Объект DataFrame лучше всего представлять себе в виде обычной таблицы и это правильно, ведь DataFrame является табличной структурой данных. В любой таблице всегда присутствуют строки и столбцы. Столбцами в объекте DataFrame выступают объекты Series, строки которых являются их непосредственными элементами.

DataFrame проще всего сконструировать на примере питоновского словаря:

Чтобы убедиться, что столбец в DataFrame это Series, извлекаем любой:

Объект DataFrame имеет 2 индекса: по строкам и по столбцам. Если индекс по строкам явно не задан (например, колонка по которой нужно их строить), то pandas задаёт целочисленный индекс RangeIndex от 0 до N-1, где N это количество строк в таблице.

В таблице у нас 4 элемента от 0 до 3.

Доступ по индексу в DataFrame

Индекс по строкам можно задать разными способами, например, при формировании самого объекта DataFrame или «на лету»:

Как видно, индексу было задано имя — Country Code. Отмечу, что объекты Series из DataFrame будут иметь те же индексы, что и объект DataFrame:

Читайте также:  Таблица видов чертежного шрифта

Доступ к строкам по индексу возможен несколькими способами:

  • .loc — используется для доступа по строковой метке
  • .iloc — используется для доступа по числовому значению (начиная от 0)

Можно делать выборку по индексу и интересующим колонкам:

Как можно заметить, .loc в квадратных скобках принимает 2 аргумента: интересующий индекс, в том числе поддерживается слайсинг и колонки.

Фильтровать DataFrame с помощью т.н. булевых массивов:

Кстати, к столбцам можно обращаться, используя атрибут или нотацию словарей Python, т.е. df.population и df[‘population’] это одно и то же.

Сбросить индексы можно вот так:

pandas при операциях над DataFrame, возвращает новый объект DataFrame.

Добавим новый столбец, в котором население (в миллионах) поделим на площадь страны, получив тем самым плотность:

Не нравится новый столбец? Не проблема, удалим его:

Особо ленивые могут просто написать del df[‘density’].

Переименовывать столбцы нужно через метод rename:

В этом примере перед тем как переименовать столбец Country Code, убедитесь, что с него сброшен индекс, иначе не будет никакого эффекта.

Чтение и запись данных

pandas поддерживает все самые популярные форматы хранения данных: csv, excel, sql, буфер обмена, html и многое другое:

Чаще всего приходится работать с csv-файлами. Например, чтобы сохранить наш DataFrame со странами, достаточно написать:

Функции to_csv ещё передаются различные аргументы (например, символ разделителя между колонками) о которых подробнее можно узнать в официальной документации.

Считать данные из csv-файла и превратить в DataFrame можно функцией read_csv.

Аргумент sep указывает разделитесь столбцов. Существует ещё масса способов сформировать DataFrame из различных источников, но наиболее часто используют CSV, Excel и SQL. Например, с помощью функции read_sql, pandas может выполнить SQL запрос и на основе ответа от базы данных сформировать необходимый DataFrame. За более подробной информацией стоит обратиться к официальной документации.

Группировка и агрегирование в pandas

Группировка данных один из самых часто используемых методов при анализе данных. В pandas за группировку отвечает метод .groupby. Я долго думал какой пример будет наиболее наглядным, чтобы продемонстрировать группировку, решил взять стандартный набор данных (dataset), использующийся во всех курсах про анализ данных — данные о пассажирах Титаника. Скачать CSV файл можно тут.

Необходимо подсчитать, сколько женщин и мужчин выжило, а сколько нет. В этом нам поможет метод .groupby.

А теперь проанализируем в разрезе класса кабины:

Сводные таблицы в pandas

Термин «сводная таблица» хорошо известен тем, кто не по наслышке знаком с инструментом Microsoft Excel или любым иным, предназначенным для обработки и анализа данных. В pandas сводные таблицы строятся через метод .pivot_table. За основу возьмём всё тот же пример с Титаником. Например, перед нами стоит задача посчитать сколько всего женщин и мужчин было в конкретном классе корабля:

В качестве индекса теперь у нас будет пол человека, колонками станут значения из PClass, функцией агрегирования будет count (подсчёт количества записей) по колонке Name.

Всё очень просто.

Анализ временных рядов

В pandas очень удобно анализировать временные ряды. В качестве показательного примера я буду использовать цену на акции корпорации Apple за 5 лет по дням. Файл с данными можно скачать тут.

Здесь мы формируем DataFrame с DatetimeIndex по колонке Date и сортируем новый индекс в правильном порядке для работы с выборками. Если колонка имеет формат даты и времени отличный от ISO8601, то для правильного перевода строки в нужный тип, можно использовать метод pandas.to_datetime.

Давайте теперь узнаем среднюю цену акции (mean) на закрытии (Close):

А если взять промежуток с февраля 2012 по февраль 2015 и посчитать среднее:

А что если нам нужно узнать среднюю цену закрытия по неделям?!

Resampling мощный инструмент при работе с временными рядами (time series), помогающий переформировать выборку так, как удобно вам. Метод resample первым аргументом принимает строку rule. Все доступные значения можно найти в документации.

Визуализация данных в pandas

Для визуального анализа данных, pandas использует библиотеку matplotlib. Продемонстрирую простейший способ визуализации в pandas на примере с акциями Apple.

Берём цену закрытия в промежутке между 2012 и 2017.

И видим вот такую картину:

По оси X, если не задано явно, всегда будет индекс. По оси Y в нашем случае цена закрытия. Если внимательно посмотреть, то в 2014 году цена на акцию резко упала, это событие было связано с тем, что Apple проводила сплит 7 к 1. Так мало кода и уже более-менее наглядный анализ 😉

Читайте также:  Финансовый капитал коммерческой организации таблица

Эта заметка демонстрирует лишь малую часть возможностей pandas. Со своей стороны я постараюсь по мере своих сил обновлять и дополнять её.

Полезные ссылки

  • pandas cheatsheet
  • Официальная документация pandas
  • Почему Python
  • Python Data Science Handbook

💌 Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Источник

Сводные таблицы Панд в Python – Простое руководство

В этой статье мы поговорим о сводных таблицах в Python. Мы реализуем то же самое с помощью функции pivot_table в модуле Pandas.

Автор: Pankaj Kumar
Дата записи

В этой статье мы поговорим о сводных таблицах в Python. Мы реализуем то же самое с помощью функции pivot_table в модуле Pandas .

Что такое Сводная таблица?

Сводные таблицы являются ключевой особенностью Microsoft Excel и одной из причин, по которой Excel стал таким популярным в корпоративном мире.

Сводные таблицы обеспечивают большую гибкость для выполнения анализа данных.

Это позволяет нам преобразовывать столбцы в строки, а строки в столбцы. Поскольку он позволяет группировать по любому параметру, его можно легко спутать с функцией pandas Groupby .

Подумайте о сводных таблицах как о многомерной версии функции GroupBy .

Шаги по реализации сводных таблиц в Python

Давайте сразу перейдем к реализации сводных таблиц в Python.

1. Загрузите набор данных по вашему выбору

Мы будем анализировать покемонов с помощью набора данных статистики (загруженного из Kaggle). Вы можете получить набор данных здесь .

И на случай, если вам интересно Что такое покемоны? для ясности вы можете проверить эту ссылку .

Независимо от того, любите ли вы покемонов или нет, вы все равно можете получить 100% от этой статьи.

Нужно поймать их всех.… 🙂

2. Синтаксис метода pivot_table()

После вызова метода pivot_table в фрейме данных давайте разберем основные входные аргументы , данные методу.

  • data – это числовой столбец, к которому мы применяем функцию агрегации. например, продажи, скорость, цена и т. Д.
  • index – Столбцы, которые мы хотим преобразовать в строки. мы можем передать несколько значений в виде списка.
  • columns – Переменные столбца, которые мы теперь хотим сохранить как столбец.
  • aggfunc – тип операции, выполняемой с данными, т. е. сумма, среднее значение, количество и т. Д.

Это будет намного яснее на примере.

3. Реализация сводных таблиц в Python

Допустим, нам нужно найти среднюю скорость покемонов, принадлежащих к типу 1.

Это можно легко сделать с помощью pandas Groupby , но тот же результат можно легко получить с помощью pivot_table с гораздо более чистым кодом.

С каждым примером мы будем медленно исследовать pivot_table во всей его красе.

Аналогичный результат с использованием pivot_table

4. Найдите среднюю скорость с помощью сводных таблиц

Но теперь, если бы нас попросили найти среднюю скорость каждого покемона типа 1, а также разделить их на легендарных и Не Легендарных.

Тада! С помощью одной строки кода мы смогли добиться желаемых результатов.

Я не мог не заметить, что в среднем Легендарные Покемоны были быстрее, чем нелегендарные. Магия сводных таблиц.

Здесь важно понять, что нам нужен столбец типа 1 в качестве индекса, поэтому мы передали его в аргумент индекса в методе pivot_table.

Но теперь, поскольку каждый покемон типа 1 принадлежал либо к Легендарной категории, либо к Не Легендарной, мы просто преобразовали наш фрейм данных таким образом, чтобы он теперь показывал среднюю скорость каждого типа.

Теперь у нас есть легендарные или не легендарные функции в наших данных.

Поскольку нам нужна была “Легендарная” функция в наших данных в качестве столбца новых данных, нам просто нужно было передать ее в параметре columns . Давайте немного изменим наш набор данных и проведем новый анализ.

Теперь мы создаем ячейки переменной скорости в качестве новой добавленной функции.

Теперь давайте выведем фрейм данных, который показывает среднюю скорость на основе легендарной функции и функции диапазона скоростей.

Я призываю вас попробовать pandas pivot_table на наборе данных Titanic, поскольку это дополнит вашу практику в этой теме.

Сводные таблицы в Python-непростая тема для освоения, но, учитывая преимущества, которые она может предложить, необходимо обязательно включить эти знания в свой инструментарий анализа. Помните, что практика-это ключ здесь!

Вывод

в этой статье мы попытались получить некоторое представление о Pandas pivot_table , реализовав его на наборе данных. Мы поняли, что это многомерная версия операции groupby (концептуально говоря). Счастливого Обучения!

Источник

Как создать сводную таблицу в Pandas Python

FavoriteLoadingДобавить в избранное

Читайте также:  Система опоры и движения органы и функции таблица

Главное меню » Программирование » Python » Как создать сводную таблицу в Pandas Python

1 Звезда2 Звезды3 Звезды4 Звезды 5 Звезд(1 оценок, среднее: 5,00 из 5)
Загрузка.

Как удалить повторяющиеся строки в Pandas Python

Перед использованием сводной таблицы panda убедитесь, что вы понимаете свои данные и вопросы, которые вы пытаетесь решить с помощью сводной таблицы. Используя этот метод, вы можете добиться впечатляющих результатов. В этой статье мы подробно рассмотрим, как создать сводную таблицу в pandas python.

Чтение данных из файла Excel

Мы скачали базу данных по продажам продуктов питания в формате Excel. Перед началом реализации вам необходимо установить некоторые необходимые пакеты для чтения и записи файлов базы данных Excel. Введите следующую команду в разделе терминала редактора pycharm:

Теперь прочтите данные из таблицы Excel. Импортируйте необходимые библиотеки panda и измените путь к вашей базе данных. Затем, запустив следующий код, можно получить данные из файла.

Здесь данные считываются из базы данных Excel по продажам продуктов питания и передаются в переменную dataframe.

Создайте сводную таблицу с помощью Pandas Python

Ниже мы создали простую сводную таблицу, используя базу данных о продажах продуктов питания. Для создания сводной таблицы требуются два параметра. Первый – это данные, которые мы передали в фрейм данных, а второй – индекс.

Сводные данные по индексу

Индекс – это функция сводной таблицы, которая позволяет группировать данные в соответствии с требованиями. Здесь мы взяли «Product» в качестве индекса для создания базовой сводной таблицы.

Явно определите столбцы

Для более подробного анализа ваших данных явно укажите имена столбцов с индексом. Например, мы хотим отображать в результате только UnitPrice каждого продукта. Для этого добавьте параметр значений в свою сводную таблицу. Следующий код дает тот же результат:

Сводные данные с мультииндексом

Данные могут быть сгруппированы на основе более чем одного объекта в качестве индекса. Используя многоиндексный подход, вы можете получить более конкретные результаты для анализа данных. Например, товары относятся к разным категориям. Таким образом, вы можете отобразить индекс «Product» и «Category» с доступными значениями «Quantity» и «UnitPrice» для каждого продукта следующим образом:

Применение функции агрегирования в сводной таблице

В сводной таблице aggfunc можно применять для разных значений функций. Результирующая таблица – это сводка данных по функциям. Агрегатная функция применяется к данным вашей группы в pivot_table. По умолчанию агрегатная функция – np.mean(). Но в зависимости от требований пользователя для разных функций данных могут применяться разные агрегатные функции.

В этом примере мы применили агрегатные функции. Функция np.sum() используется для функции «Quantity», а функция np.mean() – для функции «UnitPrice».

Используя параметр значения, вы также можете применить агрегатную функцию для определенной функции. Если вы не укажете значение функции, она объединит числовые характеристики вашей базы данных. Следуя данному исходному коду, вы можете применить агрегатную функцию для конкретной функции:

Различия между значениями и столбцами в сводной таблице

Значения и столбцы являются основным запутывающим моментом в pivot_table. Важно отметить, что столбцы являются необязательными полями, отображая значения результирующей таблицы горизонтально вверху. Функция агрегирования aggfunc применяется к перечисляемому вами полю значений.

Обработка отсутствующих данных в сводной таблице

Вы также можете обработать отсутствующие значения в сводной таблице с помощью параметра fill_value. Это позволяет вам заменить значения NaN некоторым новым значением, которое вы предоставляете для заполнения.

Например, мы удалили все нулевые значения из приведенной выше результирующей таблицы, запустив следующий код и заменив значения NaN на 0 во всей результирующей таблице.

Фильтрация в сводной таблице

Как только результат будет сгенерирован, вы можете применить фильтр, используя стандартную функцию фрейма данных. Возьмем пример. Отфильтруйте те продукты, у которых UnitPrice меньше 60. Он отображает те продукты, цена которых меньше 60.

Используя другой метод запроса, вы можете фильтровать результаты. Например, например, мы отфильтровали категорию файлов cookie на основе следующих функций:

Визуализируйте данные сводной таблицы

Чтобы визуализировать данные сводной таблицы, выполните следующий метод:

В приведенной выше визуализации мы показали цену за единицу различных продуктов вместе с категориями.

Вывод

Мы изучили, как вы можете создать сводную таблицу из фрейма данных с помощью Pandas python. Сводная таблица позволяет глубже анализировать наборы данных. Мы видели, как сгенерировать простую сводную таблицу с помощью мультииндекса и применить фильтры к сводным таблицам. Кроме того, мы также показали, как построить данные сводной таблицы и заполнить недостающие данные.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Adblock
detector