Как сделать копию датафрейма в питоне

Обновлено: 07.07.2024

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

Если вы знакомы с SQL или аналогичным типом табличных данных, вы, вероятно, знакомы с термином join , что означает объединение DataFrames для формирования нового DataFrame. Если вы новичок, может быть трудно полностью понять типы соединения ( внутреннее, внешнее, левое, правое ). В этом руководстве мы рассмотрим типы соединений с примерами.

Наше основное внимание будет сосредоточено на использовании функций merge() и concat() Однако мы обсудим другие методы слияния, чтобы дать вам как можно больше практических альтернатив.

В этом руководстве мы используем Pandas версии 1.1.4 и NumPy версии 1.19.4 .

Для вашего удобства вот содержание:

Объединить фреймы данных с помощью merge ()

Начнем с настройки наших DataFrames, которые мы будем использовать в оставшейся части учебника.

df1 будет включать наш воображаемый список пользователей с именами, адресами электронной почты и идентификаторами.

При разработке баз данных считается хорошей практикой хранить настройки профиля (например, цвет фона, ссылку на изображение аватара, размер шрифта и т. Д.) В отдельной таблице от данных пользователя (электронная почта, дата добавления и т. Д.). Эти таблицы могут иметь взаимно-однозначное отношение.

Чтобы смоделировать этот сценарий, мы сделаем то же самое, создав df2 с URL-адресами изображений и идентификаторами пользователей:

Вот как выглядят наши DataFrames:

Давайте объединим эти DataFrames с функцией merge() . Во-первых, взгляните на все параметры, которые может принимать эта функция:

Большинство этих параметров имеют значения по умолчанию, за исключением левого и правого . Эти два параметра являются именами DataFrames, которые мы будем объединять. Сама функция вернет новый DataFrame, который мы сохраним в переменной df3_merged

Введите следующий код в оболочку Python:

Поскольку оба наших DataFrames имеют столбец user_id с одинаковым именем, merge() автоматически объединяет две таблицы, соответствующие этому ключу. Если бы у нас было два столбца с разными именами, мы могли бы использовать left_on='left_column_name' и right_on='right_column_name' чтобы явно указать ключи для обоих DataFrames.

df3_merged чтобы увидеть ее содержимое:

Вы заметите, что df3_merged имеет только 5 строк, в то время как исходный df1 имел 7. Почему?

Когда значение по умолчанию для how установлено на inner , новый DataFrame создается из пересечения левого и правого DataFrame. Следовательно, если user_id отсутствует в одной из таблиц, его не будет в объединенном DataFrame.

Это останется верным, даже если поменять местами левую и правую строки:

Пользователи с идентификаторами 'id006' и 'id007' не являются частью объединенных DataFrames, поскольку они не пересекаются в обеих таблицах.

Однако бывают случаи, когда мы хотим использовать один из DataFrames в качестве основного DataFrame и включать все строки из него, даже если они не все пересекаются друг с другом. То есть, чтобы иметь всех наших пользователей, в то время как image_url является обязательным.

Как? Используя merge() , мы можем передать аргумент 'left' how :

При левом соединении мы включили все элементы левого DataFrame ( df1 ) и каждый элемент правого DataFrame ( df2 ). Выполнение приведенного выше кода отобразит следующее:

Ячейки, которые не имеют совпадающих значений с левым DataFrame, заполняются NaN .

Почему бы нам не попробовать правильное соединение? Создайте следующий объединенный DataFrame:

Как вы могли ожидать, правое соединение вернет каждое значение из левого DataFrame, которое соответствует правому DataFrame:

Поскольку каждая строка в df2 имеет значение в df1 , в этом случае это right соединение аналогично inner

Давайте посмотрим на outer соединения. Чтобы лучше всего проиллюстрировать, как они работают, давайте поменяем местами наши DataFrames и создадим две новые переменные для левого и внешнего соединений:

Имейте в виду, что наш левый DataFrame - это df2 а правый DataFrame - это df1 . Использование how='outer' объединяет DataFrames, совпадающие по ключу, но также включает значения, которые отсутствуют или не совпадают.

Мы также добавили indicator и установили для него значение True чтобы Pandas добавил дополнительный столбец _merge в конец нашего DataFrame. Этот столбец сообщает нам, была ли найдена строка в левом, правом или обоих фреймах данных.

df_left выглядит так:

Однако в df_outer есть такие данные:

Обратите внимание, что в df_outer DataFrame id006 и id007 существует только в правом DataFrame (в данном случае это df1 ). Если мы попытаемся сравнить левое и внешнее соединения, не меняя местами, мы получим одинаковые результаты для них обоих.

Объединить фреймы данных с помощью join ()

В отличие от merge() который является методом экземпляра Pandas, join() является методом самого DataFrame. Это означает, что мы можем использовать его как статический метод в DataFrame: DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False) .

DataFrame, из которого мы вызываем join() будет нашим левым DataFrame. DataFrame в other аргументе будет нашим правильным DataFrame.

Параметр on может принимать один или несколько ['key1', 'key2' . ] ) для определения соответствующего ключа, в то время how параметр how принимает один из аргументов дескриптора (левый, правый, внешний, внутренний), и он по умолчанию установлено left

Попробуем присоединить df2 к df1 :

Как и функция merge() join() автоматически пытается сопоставить ключи (столбцы) с тем же именем. В нашем случае это ключ user_id

Приведенный выше код распечатывает это:

Таким образом мы избавляемся от user_id и вместо этого устанавливаем его в качестве столбца индекса. Это дает нам более чистый результирующий DataFrame:

Объединить фреймы данных с помощью append ()

Как указывает официальная документация Pandas, поскольку concat() и append() возвращают новые копии DataFrames, чрезмерное использование этих методов может повлиять на производительность вашей программы.

Добавление очень полезно, когда вы хотите объединить два DataFrames только по оси строк. Это означает, что вместо сопоставления данных в их столбцах нам нужен новый DataFrame, содержащий все строки 2 DataFrame.

Давайте df2 к df1 и распечатаем результат:

Использование append() не приведет к сопоставлению DataFrames ни по каким ключам. Он просто добавит другой DataFrame к первому и вернет его копию. Если формы DataFrames не совпадают, Pandas заменит все несовпадающие ячейки на NaN.

Результат для добавления двух DataFrames выглядит следующим образом:

Большинство пользователей выбирают concat() append() поскольку он также предоставляет параметр сопоставления ключей и оси.

Объединить фреймы данных с помощью concat ()

Конкатенация немного более гибкая по сравнению с merge() и join() поскольку она позволяет нам комбинировать DataFrames по вертикали (по строкам) или по горизонтали (по столбцам).

Компромисс заключается в том, что любые несоответствующие данные будут отброшены. Вот полная функция с параметрами:

Вот наиболее часто используемые параметры функции concat() :

  • objs - это список объектов DataFrame ([df1, df2, . ]) для объединения
  • axis определяет направление конкатенации, 0 для строк и 1 для столбцов
  • join может быть inner (пересечение) или outer (объединение)
  • ignore_index по умолчанию установлен на False что позволяет значениям индекса оставаться такими, какими они были в исходных DataFrames, может привести к дублированию значений индекса. Если установлено значение True , он будет игнорировать исходные значения и повторно назначать значения индекса в последовательном порядке.
  • keys позволяет нам построить иерархический индекс. Подумайте об этом как о другом уровне индекса, который добавлен слева от DataFrame, который помогает нам различать индексы, когда значения не уникальны.

Давайте создадим новый DataFrame с теми же типами столбцов с df2 , но этот включает image_url для id006 и id007 :

Чтобы объединить df2 и df2_addition строкам, мы можем передать их в списке в качестве objs и присвоить полученный DataFrame новой переменной:

Мы успешно заполнили недостающие значения:

Однако обратите внимание на индексы в крайнем левом столбце. Индексы 0 и 1 повторяются. Чтобы получить совершенно новые и уникальные значения индекса, мы передаем True параметру ignore_index

Теперь наш df_row_concat имеет уникальные значения индекса:

Как мы упоминали ранее, конкатенация может работать как по горизонтали, так и по вертикали. Чтобы объединить два DataFrames вместе по столбцам, нам нужно будет изменить значение axis 0 по 1 :

Вы заметите, что это не работает как слияние, сопоставление двух таблиц по ключу:

Если бы в нашем правом DataFrame даже не было user_id , эта конкатенация все равно вернула бы тот же результат. Функция concat() склеивает два DataFrames вместе, принимая во внимание значения индексов DataFrames и форму таблицы.

Он не выполняет сопоставление ключей, например merge() или join() . Попробуйте разные комбинации конкатенации, изменив join чтобы увидеть различия!

Объединение фреймов данных с помощью comb_first () и update ()

В некоторых случаях вы можете захотеть заполнить недостающие данные в вашем DataFrame, объединив их с другим DataFrame. Таким образом вы сохраните все не пропущенные значения в первом фрейме данных, заменив все NaN доступными не пропущенными значениями из второго фрейма данных (если они есть).

В этом примере мы импортируем NumPy, чтобы использовать значения NaN Если вы установили Pandas с помощью pip , NumPy уже должен быть установлен.

Введите следующий код в оболочку Python или файл сценария:

df_first df_first имеет 3 столбца и по 1 пропущенному значению в каждом из них:

В то время как df_second имеет только 2 столбца и одно отсутствующее значение в первом столбце:

Мы можем использовать df_second для исправления отсутствующих значений в df_first всеми соответствующими значениями:

Как упоминалось ранее, использование combine_first() заменит NaN только в порядке индексации и оставит все не пропущенные значения в первом DataFrame такими, какие они есть:

С другой стороны, если мы хотим перезаписать значения в df_first соответствующими значениями из df_second (независимо от того, являются они NaN или нет), мы бы использовали метод update() .

Давайте сначала добавим в наш код еще один DataFrame:

Форма (1, 3) - 1 строка и три столбца, не считая индекса:

Теперь давайте обновим df_first значениями из df_third :

Имейте в виду, что в отличие от combine_first() , update() не возвращает новый DataFrame. Он изменяет df_first на месте, изменяя соответствующие значения:

Для параметра overwrite update() по умолчанию установлено значение True Вот почему он изменяет все соответствующие значения, а не только значения NaN Мы можем изменить его на False чтобы заменить только значения NaN

Вот окончательное состояние нашего df_tictactoe df_tictactoe:

Заключение

Pandas предоставляет мощные инструменты для объединения DataFrames. Но бывает сложно решить, когда что использовать. Хотя в большинстве случаев функции merge() достаточно, в некоторых случаях вы можете использовать concat() для слияния по строкам, или использовать join() с суффиксами, или избавиться от отсутствующих значений с помощью combine_first() и update() . Вы даже можете добавлять строки данных с помощью append() .

Используйте ту функцию, которая вам удобна и лучше всего подходит для вашей задачи. Как эти функции помогут вам управлять данными в Pandas?


31.08.2021 | Симонов Дмитрий, г. Воронеж | 1

Если вы работаете с библиотекой pandas, то велика вероятность что вы сталкивались с предупреждением “SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame”. Иногда данное предупреждение можно игнорировать, и выполнение кода будет правильным. Однако, необходимо быть очень осторожным и понимать, что означает это предупреждение. Расплатой могут быть потраченные впустую часы работы, когда вместо ожидаемого измененного датафрейма, вы получаете старые значения. В этой статье я расскажу, что означает данное предупреждение и как правильно присваивать значения внутри датафрейма.

Основная идея этого предупреждения связана с понятием view (представление) и copy (копия). Одни операции возвращают копию, а другие представление. Представление – это подмножество изначального объекта, связанное с ним ссылкой. При изменении представления мы изменяем оригинальный объект. Копия – совершенно новый объект. Изменение копии никак не отражается на оригинальном объекте, так как они не связаны между собой.

Создадим в качестве примера следующий датафрейм:


Пусть нам необходимо для всех строк, где столбец Y больше 13, в столбце Z присвоить 777. Первое, что приходит в голову записать это в виде:

Однако после выполнения мы можем заметить, что ничего в исходном датафрейме не поменялось.


Происходит это потому, что такая запись выполняется как две операции: фильтрация и присваивание. Фильтрация возвращает копию. Соответственно присваивание применяется уже не к исходному объекту. Для того чтобы избежать данной ошибки, необходимо исключить использование конструкции [ ][ ]. Вместо неё можно использовать функцию loc[ , ] или поменять местами операции [ ][ ] (в этом случае выбор столбца возвращает series, ссылающаяся на оригинальный столбец, а фильтрация с присваиванием изменяет эти значения).

Говоря в целом об операциях выбора столбцов, фильтрации и присваивании, нежелательно использовать сложные конструкции с цепочками этих операций. В документации Pandas указано, что использование сложных конструкций зачастую непредсказуемо, может в одинаковых случаях возвращать или view или copy (в зависимости о расположения массива в памяти). Поэтому чтобы избежать ошибок лучше использовать простые выражения с использованием одной операции фильтрации.


Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Pandas — главная Python-библиотека для анализа данных. Она быстрая и мощная: в ней можно работать с таблицами, в которых миллионы строк. Вместе с Марией Жаровой, ментором проекта на курсе по Data Science, рассказываем про команды, которые позволят начать работать с реальными данными.

Библиотека Pandas

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

В Pandas можно работать с данными трех структур:

  • последовательности (Series) — одномерные массивы данных;
  • фреймы (Data Frames) — объединение нескольких одномерных массивов в двумерный, то есть привычная таблица из строк и столбцов. Этот формат чаще всего используют аналитики;
  • панели (Panels) — трехмерная структура из нескольких фреймов.

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

У библиотеки открытый исходный код, она бесплатная, и в ней, в отличие от Excel, можно работать с данными в формате JSON. Подробнее о библиотеке мы писали в этой статье.

Среда разработки

Pandas работает как в IDE (средах разработки), так и в облачных блокнотах для программирования. Как установить библиотеку в конкретную IDE, читайте тут. Мы для примера будем работать в облачной среде Google Colab. Она удобна тем, что не нужно ничего устанавливать на компьютер: файлы можно загружать и работать с ними онлайн, к тому же есть совместный режим для работы с коллегами. Про Colab мы писали в этом обзоре.

Получите крепкий фундамент профессии Data Analyst с нуля за 6 месяцев. Все инструменты, необходимые junior-специалисту: Google Sheets, SQL, Python, Power BI и др. Кейсы на основе популярных бизнес-моделей и помощь в трудоустройстве.

Анализ данных в Pandas

На сайте Google Colab сразу появляется экран с доступными блокнотами. Создадим новый блокнот:


Импортирование библиотеки

Pandas недоступна в Python по умолчанию. Чтобы начать с ней работать, нужно ее импортировать с помощью этого кода:

pd — это распространенное сокращенное название библиотеки. Далее будем обращаться к ней именно так.

Загрузка данных

1. Загрузить в сессионное хранилище:


И прочитать с помощью такой команды:

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

Это можно сделать через словарь и через преобразование вложенных списков (фактически таблиц).

Через вложенные списки:

Результаты будут эквивалентны.

Просмотр данных

Загруженный файл преобразован во фрейм и теперь хранится в переменной df. Посмотрим, как он выглядит, с помощью метода .head(), который по умолчанию выводит пять первых строк:

Если нужно посмотреть на другое количество строк, оно указывается в скобках, например df.head(12). Последние строки фрейма выводятся методом .tail().

Также чтобы просто полностью красиво отобразить датасет, используется функция display(). По умолчанию в Jupyter Notebook, если написать имя переменной на последней строке какой-либо ячейки (даже без ключевого слова display), ее содержимое будет отображено.

Размеры датасета

Количество строк и столбцов в датафрейме можно узнать, используя метод .shape:

Переименование столбцов

Названия столбцов можно переименовать под себя с помощью команды rename:

Характеристики датасета

Чтобы получить первичное представление о статистических характеристиках нашего датасета, достаточно этой команды:

Обзор содержит среднее значение, стандартное отклонение, минимум и максимум, верхние значения первого и третьего квартиля и медиану по каждому столбцу.

Еще одна команда показывает другую справку: сколько значений в каждом столбце (в нашем случае в столбцах нет пропущенных значений) и формат данных:

Работа с отдельными столбцами или строками

Выделить несколько столбцов можно разными способами.

1. Сделать срез фрейма


Срез можно сохранить в новой переменной:

Теперь можно выполнить любое действие с этим сокращенным фреймом.

2. Использовать метод loc

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

В этом случае мы оставили все столбцы от Места в рейтинге до Социальной поддержки.

3. Использовать метод iloc

Если нужно вырезать одновременно строки и столбцы, можно сделать это с помощью метода iloc:

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

В методе iloc значения в правом конце исключаются, поэтому последняя строка, которую мы видим, — 99.

4. Использовать метод tolist()

Можно выделить какой-либо столбец в отдельный список при помощи метода tolist(). Это упростит задачу, если необходимо извлекать данные из столбцов:

Часто бывает нужно получить в виде списка названия столбцов датафрейма. Это тоже можно сделать с помощью метода tolist():

Добавление новых строк и столбцов

Можно добавлять и новые строки: для этого нужно составить словарь с ключами — названиями столбцов. Если вы не укажете значения в каких-то столбцах, они по умолчанию заполнятся пустыми значениями NaN. Добавим еще одну страну под названием Country:

Важно: при добавлении новой строки методом .append() не забывайте указывать параметр ignore_index=True, иначе возникнет ошибка.

Иногда бывает полезно добавить строку с суммой, медианой или средним арифметическим) по столбцу. Сделать это можно с помощью агрегирующих (aggregate (англ.) — группировать, объединять) функций: sum(), mean(), median(). Для примера добавим в конце строку с суммами значений по каждому столбцу:

Удаление строк и столбцов

Удалить отдельные столбцы можно при помощи метода drop() — это целесообразно делать, если убрать нужно небольшое количество столбцов.

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

Обратите внимание, что этот метод требует дополнительного сохранения через присваивание датафрейма с примененным методом исходному. Также в параметрах обязательно нужно указать axis = 1, который показывает, что мы удаляем именно столбец, а не строку.

Соответственно, задав параметр axis = 0, можно удалить любую строку из датафрейма: для этого нужно написать ее номер в качестве первого аргумента в методе drop(). Удалим последнюю строчку (указываем ее индекс — это будет количество строк):

Копирование датафрейма

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

Уникальные значения

Уникальные значения в какой-либо колонке датафрейма можно вывести при помощи метода .unique():

Чтобы дополнительно узнать их количество, можно воспользоваться функцией len():

Подсчет количества значений

Отличается от предыдущего метода тем, что дополнительно подсчитывает количество раз, которое то или иное уникальное значение встречается в колонке, пишется как .value_counts():

Группировка данных

Некоторым обобщением .value_counts() является метод .groupby() — он тоже группирует данные какого-либо столбца по одинаковым значениям. Отличие в том, что при помощи него можно не просто вывести количество уникальных элементов в одном столбце, но и найти для каждой группы сумму / среднее значение / медиану по любым другим столбцам.

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

Получается, что чаще всего страны получали 6 баллов (таких было 49):

2) Получим более содержательный для анализа данных результат — посчитаем сумму значений в каждой группе. Для этого вместо .count() используем sum():

3) Теперь рассчитаем среднее значение по каждой группе, в качестве агрегирующей функции в этом случае возьмем mean():

4) Рассчитаем медиану. Для этого пишем команду median():

Это самые основные агрегирующие функции, которые пригодятся на начальном этапе работы с данными.

Вот пример синтаксиса, как можно сагрегировать значения по группам при помощи сразу нескольких функций:

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

Бывает, что нужно сделать группировку сразу по двум параметрам. Для этого в Pandas используются сводные таблицы или pivot_table(). Они составляются на основе датафреймов, но, в отличие от них, группировать данные можно не только по значениям столбцов, но и по строкам.

Сортировка данных

Строки датасета можно сортировать по значениям любого столбца при помощи функции sort_values(). По умолчанию метод делает сортировку по убыванию. Например, отсортируем по столбцу значений ВВП на душу населения:

Видно, что самые высокие ВВП совсем не гарантируют высокое место в рейтинге.

Фильтрация

1) Получение строки с конкретным значением какого-либо столбца (выведем строку из датасета для Норвегии):

3) В условиях фильтрации можно использовать не только математические операции сравнения, но и методы работы со строками. Выведем строки датасета, названия стран которых начинаются с буквы F, — для этого воспользуемся методом .startswith():

4) Можно комбинировать несколько условий одновременно, используя логические операторы. Выведем строки, в которых значение ВВП больше 1 и уровень социальной поддержки больше 1,5:

Таким образом, если внутри внешних квадратных скобок стоит истинное выражение, то строка датасета будет удовлетворять условию фильтрации. Поэтому в других ситуациях можно использовать в условии фильтрации любые функции/конструкции, возвращающие значения True или False.

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

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

Рассмотрим пример: напишем функцию, которая преобразует все буквы в строке к нижнему регистру, и применим к столбцу стран и регионов:

Очистка данных

Это целый этап работы с данными при подготовке их к построению моделей и нейронных сетей. Рассмотрим основные приемы и функции.

Этот метод не требует дополнительного присваивания в исходную переменную, чтобы результат сохранился, — поэтому предварительно создадим копию нашего датасета, чтобы не форматировать исходный.

Строки-дубликаты удаляются полностью, таким образом, их количество уменьшается. Чтобы заменить их на пустые, можно использовать параметр inplace = True.

2) Для замены пропусков NaN на какое-либо значение используется функция fillna(). Например, заполним появившиеся после предыдущего пункта пропуски в последней строке нулями:

3) Пустые строки с NaN можно и вовсе удалить из датасета, для этого используется функция dropna() (можно также дополнительно указать параметр inplace = True):

Построение графиков

В Pandas есть также инструменты для простой визуализации данных.

1) Обычный график по точкам.

Построим зависимость ВВП на душу населения от места в рейтинге:

2) Гистограмма.

Отобразим ту же зависимость в виде столбчатой гистограммы:

3) Точечный график.

Мы видим предсказуемую тенденцию: чем выше ВВП на душу населения, тем ближе страна к первой строчке рейтинга.

Сохранение датафрейма на компьютер

Сохраним наш датафрейм на компьютер:

Теперь с ним можно работать и в других программах.

Блокнот с кодом можно скачать здесь (формат .ipynb).

Освойте перспективную профессию с нуля: научитесь собирать и организовывать данные, делать выводы на основе их анализа и помогать бизнесу работать эффективнее.

  • 20% теории и 80% практики
  • Постоянный контакт с преподавателями
  • Подготовка к трудоустройству

Мария Жарова

Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Модуль Python Pandas представляет собой модуль с открытым исходным кодом. Он имеет широкую сферу применения в области вычислений, анализа данных, статистики и т. д.

Начало работы

Python Pandas модуль


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

Есть разные способы установить модуль Python Pandas. Один из самых простых способов — установить с помощью установщика пакетов Python, то есть PIP.

Введите следующую команду в командной строке:
pip install pandas
Чтобы добавить модуль Pandas и NumPy в ваш код, нам необходимо импортировать эти модули в наш код.

Pandas — структуры данных

Pandas работает со следующими структурами данных:

Эти структуры данных быстрее по сравнению с массивами NumPy.

1 Серия

Pandas Series — это одномерная структура, напоминающая массивы, содержащие однородные данные. Это линейная структура данных, в которой элементы хранятся в одном измерении.

Примечание. Размер структуры данных серии в Pandas является неизменным, т.е. однажды установленный, он не может быть изменен динамически. При этом значения и элементы в серии можно изменять.

Синтаксис:
pandas.Series(input_data, index, data_type, copy)

  • input_data: принимает ввод в виде списка, константы, массива NumPy, Dict и т. д.
  • index: значения индекса, переданные в данные.
  • data_type: распознает тип данных.
  • copy: Копирует данные. Значение по умолчанию неверно.

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

Выход:
10 John
11 Bran
12 Sam
13 Peter
dtype: object

2 DataFrame

Модуль Python Pandas предоставляет DataFrame, который представляет собой двумерную структуру, напоминающую двумерные массивы. Здесь входные данные оформляются в виде строк и столбцов.

Примечание. Размер структуры данных DataFrame в Pandas можно изменять.

Синтаксис:
pandas.DataFrame(input_data, index_value, columns, data_type, copy)

  • input_data: принимает ввод как списки, ряды, массивы NumPy, Dict, другой DataFrame и т. д.
  • значения индекса: значения индекса, передаваемые в данные.
  • data_type: распознает тип данных каждого столбца.
  • copy: скопировать данные. Значение по умолчанию неверно.
  • столбцы: метки данные столбцов.

Выход:
Name City
1 John Pune
2 Bran Mumbai
3 Peter Delhi

3 Panel

Модуль Python Pandas предлагает панель, которая представляет собой трехмерную структуру данных и содержит 3 оси для выполнения следующих функций:

  • items: (ось 0). Каждый его элемент соответствует DataFrame в нем.
  • major_axis: (ось 1) Соответствует строкам каждого DataFrame.
  • minor_axis: (ось 2) соответствует столбцам каждого DataFrame.

Синтаксис:
pandas.Panel(input_data, items, major_axis, minor_axis, data_type, copy)

Импорт данных из файла CSV в DataFrame

Модуль DataFrame Python Pandas также может быть построен с использованием файлов CSV. Файл CSV — это в основном текстовый файл, в котором хранятся данные для каждой строки. Элементы разделяются запятой.

Метод read_csv (file_name) используется для чтения данных из файла CSV в DataFrame.

Синтаксис:
pandas.read_csv()
Пример:

Выход:
Name Age
0 John 21
1 Bran 22

Статистический анализ в Pandas

Модуль Python Pandas предлагает большое количество встроенных методов, помогающих пользователям проводить статистический анализ данных.

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

Метод Description
count() Подсчитывает количество всех непустых наблюдений
sum() Возвращает сумму элементов данных.
mean() Возвращает среднее значение всех элементов данных.
median() Возвращает медианное значение всех элементов данных.
mode() Возвращает режим всех элементов данных
std() Возвращает стандартное отклонение всех элементов данных.
min() Возвращает минимальный элемент данных среди всех входных элементов.
max() Возвращает максимальный элемент данных среди всех входных элементов.
abs() Возвращает абсолютное значение.
prod() Возвращает произведение значений данных.
cumsum() Возвращает кумулятивную сумму значений данных.
cumprod() Возвращает совокупное произведение значений данных.
describe() Он отображает статистическую сводку всех записей за один снимок, т.е. (сумма, количество, мин, среднее и т. Д.)

Для начала давайте создадим DataFrame, который мы будем использовать в этом разделе для понимания различных функций, предоставляемых для статистического анализа.

Функция sum()

Как видно выше, функция sum() добавляет данные каждого столбца отдельно и добавляет строковые значения везде, где они есть.

функция mean()

Выход:
Marks 59.8
Roll_num 3.0
dtype: float64
Функция mean не будет воздействовать на строки, найденные в данных, в отличие от функции sum().

Читайте также: