Панды: от нуля до героя

Dec 11 2022
Полная статья, которую вы можете читать во время просмотра своего любимого дневного телевизора, но она достаточно хороша, чтобы научить вас всему, что вам нужно знать, чтобы на самом деле выполнить работу. Приступая к работе Pandas — это библиотека для анализа и обработки данных на Python.

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

Начиная

Pandas — это библиотека анализа и обработки данных на Python. Pandas широко используется для науки о данных и машинного обучения. Он разработан на основе другого пакета Python под названием NumPy, который используется для научных вычислений. Если вы мало знаете о NumPy, вы можете быстро проверить это, прочитав мою 5-минутную статью , прежде чем продолжить работу с Pandas. Это не обязательно, но очень рекомендую.

Чтобы начать работу, сначала убедитесь, что в вашей системе установлены Python, NumPy и Pandas. Как вы его получите, зависит от вашей системы и выбранной вами IDE, но я рекомендую Anaconda. При базовой установке Anaconda вы можете просто зайти в терминал и запустить «conda install numpy», а затем «conda install pandas» и вуаля!

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

Примечание. Если бы мы создавали проект вместо одного файла примера для работы, нам пришлось бы просто создать каталог и файл __init__.py внутри него.

Вы должны добавить следующие строки в начало файла, чтобы иметь возможность работать с Pandas внутри файла.

импортировать numpy как np

импортировать панд как pd

Примечание. Обычно мы импортируем NumPy как np и Pandas как pd, чтобы нам не приходилось вводить numpy & pandas каждый раз, когда мы вызываем функцию из библиотек. Имейте в виду, что хотя np и pd можно изменить, это общепринятое соглашение.

После этого вы можете запустить код в файле примера, просто зайдя в терминал и выполнив команду:

пример питона.py

Серии

Подобно тому, как любой язык программирования имеет массивы, подобно тому, как NumPy имеет матрицы, мы получаем серии в Pandas. Основное различие между сериями и обычными матрицами/массивами заключается в том, что элементы внутри серий могут иметь порядковый номер или ключи для доступа к этому значению. Думайте об этом как о списке пар ключ-значение, таких как данные JSON.

Забавный факт: Pandas часто называют «Excel для науки о данных» из-за того, что он сохраняет значение — пары ключей, отображает их визуально и выполняет над ними вычисления аналогично MS Excel.

Вы можете создать серию Pandas из словаря Python:

myDictionary = { «Джон»: 35, «Джейн»: 40}

pd.Series(myDictionary) // возвращает Джон 35, Джейн 40

Если бы вы добавили массив вместо словаря, элементы в серии имели бы целые числа в качестве ключей:

мой массив = [35, 40]

pd.Series(myArray) // возвращает 0 35, 1 40

Вы можете добавить два массива вместе и создать из них ряд как:

мойМассив1 = [35, 40]

myArray2 = [ «Джон», «Джейн»]

pd.Series(data= myArray1, index=myArray2) // возвращает John 35, Jane 40

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

series1 = pd.Series({ «Джон»: 35, «Джейн»: 40})

series2 =pd.Series({ «Джон»: 100, «Джейн»: 50})

seriesSum = series1 + series2 // возвращает Джон 135, Джейн 90

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

Фреймы данных

Кадры данных можно рассматривать как серию, но для матриц. По сути, матрица, в которой индексы являются ключами, а все это — пара ключ-значение, называется фреймом данных.

Вы можете создать фрейм данных из любого массива или матрицы как:

мояМатрица = [[10, 20, 30], [100, 200, 300]]

dataFrame = pd.DataFrame(myMatrix)

Вы можете назначить клавиши столбцов и строк как:

myMatrix = [[ 1, 2, 3], [10, 20, 30], [ 100, 200, 300] ]

строки = [ «Джон», «Джейн», «Сара»]

столбцы = [ «Теннис», «Баскетбол», «Пинг-понг»]

dataFrame = pd.DataFrame (myMatrix, индекс = строки, столбцы = столбцы)

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

dataFrame[ "Теннис" ]

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

dataFrame.loc [ "Джон" ]

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

dataFrame.iloc[1] // возвращает строку Джейн со значениями 2, 20, 200

Вы можете добавить новый столбец во фрейм данных как:

dataFrame["Футбол"] = [1000, 2000, 3000]

И наоборот, вы можете удалить столбец или строку из фрейма данных следующим образом:

dataFrame.drop («Футбол», axis=1, inPlace=True) // чтобы удалить столбец, вы должны установить для оси значение 1

dataFrame.drop («Джон», axis=0, inPlace=True) // чтобы удалить строку, вы должны установить ось в 0

Примечание: Pandas не хочет, чтобы вы по ошибке изменили весь столбец или строку. Может быть, вы пытаетесь создать другой фрейм данных и установить старый фрейм данных с отсутствующим столбцом вместо того, чтобы фактически изменить старый? Поэтому, чтобы убедиться, что вы действительно изменяете сам фрейм данных, мы поместили параметр inPlace=True в функции.

Вы можете вызвать значение ячейки как:

dataFrame.loc[ «Джон», «Теннис»]

Вы можете исключить в кадрах данных как:

dataFrame[ dataFrame["Теннис"] > 5]

// удалит строки, в которых значение столбца Tennis меньше 5, следовательно, удалит строку John

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

dataFrame.set_indexes («Новый индексный столбец», inPlace = True)

Фрейм данных с несколькими индексами выглядит в Excel следующим образом:

Здесь есть два индекса для строк: Фрукты и овощи И название продукта. Мы также можем создавать такие мультииндексы с помощью Pandas. Для этого вы должны:

  • Определите два списка внешних индексов и внутренних индексов, а затем объедините их в кортеж, используя список и методы zip.
  • Затем используйте метод MultiIndex.from_tuples(), чтобы преобразовать кортеж в мультииндекс.
  • Затем создайте список столбцов.
  • После этого создайте список данных в виде матрицы и фактически превратите его в матрицу с помощью метода np.array().
  • Наконец, используйте функцию DataFrame() из Pandas, чтобы создать фрейм данных с мультииндексом.

externalIndexes = ["Овощи", "Овощи", "Фрутис", "Фрукты"]

innerIndexes = [«Помидоры», «Огурцы», «Апельсины», «Черника»]

комбинированные индексы = список (zip (внешние индексы, внутренние индексы))

комбинированные индексы = pd.MultiIndex.from_tuples (комбинированные индексы)

listAmountPrice = [ [ 2 доллара США, 5 фунтов], [ 1 доллар США, 3 фунта], [ 2 доллара США, 3 фунта], [ 3 доллара США, 2 фунта] ]

numpySeriesAmountPrice = np.array (listAmountPrice)

myColumns = ["Цена", "Сумма"]

multiIndexDataFrame = pd.DataFrame (numpySeriesAmountPrice, индекс = комбинированные индексы, столбцы = мои столбцы)

И тогда вы можете назвать количество и цену черники как:

multiIndexDataFrame.loc["Фрукты"].loc["Черника"]

Вы также можете дать мультииндексным столбцам некоторые имена, например:

multiIndexDataFrame.index.names = [«Проход», «Название продукта»]

Операции

  • Чтобы вернуть фрейм данных из исходного фрейма данных с удаленными строками, содержащими значения NaN:
  • Чтобы вернуть фрейм данных из исходного фрейма данных с удаленными столбцами, содержащими значения NaN:
  • Чтобы вернуть фрейм данных из исходного фрейма данных с удаленными строками, содержащими более двух значений NaN:
  • Чтобы вернуть фрейм данных из исходного фрейма данных с ячейками, которые содержат значение NaN, измененное на определенное значение, скажем, целое число 20:
  • Чтобы выполнять операции и собирать данные о фрейме данных на основе столбца, вы должны сгруппировать фрейм данных по отношению к этому столбцу с помощью groupby. Затем вы можете выполнять операции для подсчета данных внутри, получения среднего значения и т. д.

group.mean() // получает среднее значение зарплат в таблице

group.count() // вычисляет, сколько сотрудников получают определенную зарплату для каждой зарплаты

group.describe() // выводит некоторые результаты статистического анализа, такие как среднее, максимальное и минимальное значения и т. д. для этого фрейма данных относительно сгруппированного столбца «Зарплата»

  • Если у вас есть два или более фреймов данных с одинаковыми столбцами, вы можете собрать их вместе (один под другим) следующим образом:
  • Аналогичным образом, если у вас есть два или более фреймов данных с одинаковыми строками, вы можете собрать их вместе (один под другим) следующим образом:
  • Однако, если вы хотите получить два или более фреймов данных с разными столбцами, вы должны использовать метод слияния, как показано ниже. Но имейте в виду, чтобы иметь возможность сделать это, все фреймы данных, которые вы объединяете, должны иметь хотя бы один общий столбец.
  • Вы можете внести только уникальные значения в столбец в базе данных, как:
  • Вы можете рассчитать, сколько уникальных значений находится в столбце во фрейме данных, как:
  • Вы можете определить функцию и применить ее к каждому значению во фрейме данных с помощью функции .apply(). Чтобы объяснить далее в примере:

Возвращаемая цена * 1,33 // функция, которая добавляет 33% налога к исходной цене

priceDataFrame[ «Цена» ].apply( priceWithTax ) // возвращает серию с обновленными ценами

Эксель с пандами

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

Чтобы иметь возможность работать с файлом Excel, обязательно сохраните его в том же каталоге, где находится ваш файл python (файл python, в котором вы будете запускать свои функции и операции Pandas). Затем вы можете импортировать файл Excel как:

myDataFrame = pd.read_excel («myExcelFile.xlsx»)

Файлы Excel будут импортированы как тип DataFrame по умолчанию, так что все готово!

Вывод

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