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

Начиная

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 могут быть изменены, это общее соглашение.

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

пример Python.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:

myDataFrame.dropna()

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

myDataFrame.dropna(ось = 1)

  • Чтобы вернуть фрейм данных из исходного фрейма данных с удаленными строками, содержащими более двух значений NaN:

myDataFrame.dropna(порог = 2)

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

myDataFrame.fillna(20)

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

group = employeeInfoDataFrame.groupby («Зарплата»)

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

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

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

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

pd.concat([dataFrame1, dataFrame2])

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

pd.concat ([dataFrame1, dataFrame2], ось = 1)

  • Однако, если вы хотите получить два или более фрейма данных с разными столбцами, вы должны использовать метод слияния, как показано ниже. Но имейте в виду, чтобы иметь возможность сделать это, все фреймы данных, которые вы объединяете, должны иметь хотя бы один общий столбец.

pd.merge (dataFrame1, dataFrame2, on = «commonColumnName»)

  • Вы можете внести только уникальные значения в столбец в базе данных, как:

myDataFrame["имя_столбца"].unique()

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

myDataFrame["имя_столбца"].nunique()

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

def priceWithTax (цена):

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

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

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

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

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

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

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

Заключение

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