Рубрики
Без рубрики

Окончательное руководство по библиотеке Pandas для науки о данных в Python

Автор оригинала: Nick McCullum.

Pandas (который является портуманто «Панель данных») является одним из наиболее важных пакетов, чтобы понять, когда вы начинаете Учите питон Отказ

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

Этот учебник научит вам основы пандов, которые вы можете использовать для создания приложений Python Data Python.

Оглавление

Вы можете перейти к определенному разделу этого учебника Pandas, используя таблицу содержимого ниже:

  • Введение в пандас
  • Серия Pandas
  • Pandas dataframes.
  • Как бороться с отсутствующими данными в Pandas Dat африканский
  • Метод Pandas Groupby
  • Что такое функция Pandas Groupby?
  • Метод Concat Pandas
  • Метод слияния Pandas
  • Метод соединения Pandas
  • Другие общие операции в Пандах
  • Локальный ввод данных и вывод (ввод/вывод) в пандах
  • Удаленный ввод данных и вывод (ввод/вывод) в пандах
  • Окончательные мысли и специальное предложение

Введение в пандас

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

Что такое панда?

Пандас это библиотека Python, созданная WES McKinney , которые построили панды, чтобы помочь работать с наборами набора данных в Python для его работы в финансах на своем месте работы.

По словам Сайт библиотеки , Пандас «Быстрый, мощный, гибкий и простой в использовании инструмент анализа данных и манипуляции с открытым исходным кодом, построенный на вершине Python язык программирования».

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

Pandas – это библиотека с открытым исходным кодом, что означает, что любой может просматривать свой исходный код и вносить предложения, используя запросы на потяну. Если вам интересно это, посетите хранилище исходного кода Pandas на GitHub

Основное преимущество панд

Пандас был разработан для работы с двумерными данными (аналогично электронным таблицам Excel). Как только Numpy Library имел встроенную структуру данных, называемую массив С помощью специальных атрибутов и методов библиотека Pandas имеет встроенную двумерную структуру данных, называемую Dataframe Отказ

Что мы узнаем о пандах

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

В течение следующих нескольких разделов мы осмотрим следующую информацию о библиотеке Pandas:

  • Серия Pandas
  • Pandas dataframes.
  • Как бороться с отсутствующими данными в пандах
  • Как объединить DataFrames в Pands
  • Как присоединиться к DataFrames в Пандах
  • Как объединять данные данных в пандах
  • Общие операции в пандах
  • Ввод данных и вывод в Pands
  • Как сохранить Pandas DataFrames в качестве файлов Excel для внешних пользователей

Серия Pandas

В этом разделе мы исследуем Панда серии , которые являются основным компонентом библиотеки Pandas для программирования Python.

Каковы серии Panda?

Серия – это специальный тип структуры данных, доступной в библиотеке Pandas Python. Серия Pandas аналогична примененным массивам, за исключением того, что мы можем дать им указанный или номер DateTime вместо всего численного индекса.

Импорт вам потребуется для работы с сериалом Pandas

Для работы с серией Panda вам нужно импортировать как numpy, так и pandas, следующим образом:

import numpy as np

import pandas as pd

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

Как создать серию Pandas

Существует ряд разных способов создания серии Panda. Мы рассмотрим все из них в этом разделе.

Во-первых, давайте создадим несколько стартерных переменных – в частности, мы создадим два списка, Numpy Array и словарь.

labels = ['a', 'b', 'c']

my_list = [10, 20, 30]

arr = np.array([10, 20, 30])

d = {'a':10, 'b':20, 'c':30}

Самый простой способ создания серии Panda – передача списка ванильного питона в PD.Series () метод. Мы делаем это с my_list Переменная ниже:

pd.Series(my_list)

Если вы запустите это в ноутбуке Jupyter, вы заметите, что вывод совсем отличается от того, чтобы он был для обычного списка Python:

0    10

1    20

2    30

dtype: int64

Выходной выше вывод явно предназначен для представления двух столбцов. Второй столбец – это данные из my_list Отказ Что такое первая колонна?

Одним из ключевых преимуществ использования серии Panda Over On Numpy является то, что они позволяют маркировку. Как вы уже догадались, этот первый столбец – это столбец меток.

Мы можем добавить этикетки в серию Panda, используя индекс Аргумент как это:

pd.Series(my_list, index=labels)

#Remember - we created the 'labels' list earlier in this section

Выход этого кода ниже:

a    10

b    20

c    30

dtype: int64

Почему вы хотите использовать этикетки в серии PandaS? Основное преимущество заключается в том, что он позволяет ссылаться на элемент серии, используя свой метку вместо его численного индекса. Чтобы быть понятным, когда этикетки были применены к серии Panda, вы можете использовать либо его числовой индекс или его этикетка.

Пример этого ниже.

Series = pd.Series(my_list, index=labels)

Series[0]

#Returns 10

Series['a']

#Also returns 10

Возможно, вы заметили, что способность ссылаться на элемент серии, используя его метку, похоже на то, как мы можем ссылаться на ценность из ключценность пара в словаре. Из-за этого сходства в том, как они функционируют, вы также можете пройти в словаре для создания серии Panda. Мы будем использовать d = {'a': 10, 'b': 20, 'c': 30} Что мы создали ранее в качестве примера:

pd.Series(d)

Выход этого кода:

a    10

b    20

c    30

dtype: int64

Может еще не быть понятным, почему мы изучили две новые структуры данных (Numpy Armays и Service Series), которые настолько похожи. В следующем разделе этого раздела мы рассмотрим основные преимущества серии Panda Over Numpy.

Основное преимущество серии Panda через Numpy Armays

Хотя мы не сталкивались с ним в то время, Numpy Armays высоко ограничена одной характеристикой: каждый элемент Numpy Array должен быть одинаковым типом структуры данных. Сказал по-разному, элементы Numpy Array должны быть всей строкой, либо всеми целыми числами или всеми логическими. – вы получаете точку.

Серия Pandas не страдает от этого ограничения. На самом деле, серия Panda – Высоко гибкий.

В качестве примера вы можете пройти три встроенных функция Python в серии Panda без ошибки:

pd.Series([sum, print, len])

Вот вывод этого кода:

0      

1    

2      

dtype: object

Быть ясным, приведенный выше пример очень нецелесообразно, а не то, что мы когда-либо когда-либо выполняли на практике. Это, однако, отличный пример гибкости структуры данных серии PandaS.

Pandas dataframes.

Numpy позволяет разработчикам работать как с одномерными примечательными массивами (иногда называемыми векторами), так и двумерными примечательными массивами (иногда называемыми матрицами). Мы исследовали серию Panda в последнем разделе, которые аналогичны одномерным примечаниям.

В этом разделе мы погрузимся в Pandas DataFrames , которые похожи на двумерные многие массивы – но с гораздо более функциональными возможностями. DataFrames – это самая важная структура данных в библиотеке Pandas, поэтому уделите пристальное внимание на протяжении всего этого раздела.

Что такое Pandas DataFrame?

PandaS DataFrame – это двумерная структура данных, которая имеет ярлыки для его рядов, так и для столбцов. Для тех, кто знаком с Microsoft Excel, Google Piels или другим программным обеспечением для электронных таблиц, Dataframes очень похожи.

Вот пример, который отображается Pandas DataFrame в ноутбуке Jupyter.

Теперь мы пройдемся через процесс воссоздания этого пошагового шага DataFrame.

Во-первых, вам нужно импортировать библиотеки NUMPY и PANDAS. Мы сделали это раньше, но если вы не уверены, вот еще один пример того, как это сделать:

import numpy as np

import pandas as pd

Также нам необходимо создать списки для имен ряд и столбцов. Мы можем сделать это с помощью списков Vanilla Python:

rows = ['X','Y','Z']

cols = ['A', 'B', 'C', 'D', 'E']

Далее нам необходимо создать Numpy Array, который содержит данные, содержащиеся в ячейках The DataFrame. Я использовал numpy’s np.random.randn Метод для этого. Я также завернул этот метод в np.round Способ (со вторым аргументом 2 ), который раундут каждая точка данных до 2 десятичных знаков и делает структуру данных намного проще прочитать.

Вот окончательная функция, которая создала данные.

data = np.round(np.random.randn(3,5),2)

Как только это сделано, вы можете обернуть все составляющие переменные в pd.dataframe Способ создать ваш первый dataframe!

pd.DataFrame(data, rows, cols)

Здесь много, чтобы распаковать здесь, поэтому давайте обсудим этот пример более подробно.

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

pd.DataFrame(np.round(np.random.randn(3,5),2), ['X','Y','Z'], ['A', 'B', 'C', 'D', 'E'])

С этим сказанным, объявление каждой переменной отдельно заставляет код гораздо проще прочитать.

Во-вторых, вам может быть интересно, если нужно ставить строки в Dataframe Метод до столбцов. Это действительно необходимо. Если вы пробовали работать pd.dataframe (данные, колонны, строки) Ваша ноутбук Jupyter будет генерировать следующее сообщение об ошибке:

ValueError: Shape of passed values is (3, 5), indices imply (5, 3)

Далее мы рассмотрим отношения между серией Panda и Pandas DataFrames.

Отношения между сериалами Pandas и Pandas DataFrame

Давайте сделаем еще один взгляд на PandaS DataFrame, который мы только что создали:

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

Интересно, что каждый из этих колонн на самом деле является серией Pandas! Таким образом, мы можем изменить наше определение PandaS DataFrame, чтобы соответствовать его формальному определению:

« Набор серии Panda, который разделяет тот же индекс».

Индексирование и назначение в PandaS DataFrames

На самом деле мы можем назвать конкретную серию из PandaS DataFrame с использованием квадратных скобок, как мы называем элемент из списка. Несколько примеров ниже:

df = pd.DataFrame(data, rows, cols)

df['A']

"""

Returns:

X   -0.66

Y   -0.08

Z    0.64

Name: A, dtype: float64

"""

df['E']

"""

Returns:

X   -1.46

Y    1.71

Z   -0.20

Name: E, dtype: float64

"""

Что, если вы хотите выбрать несколько столбцов из PandaS DataFrame? Вы можете пройти в список столбцов, либо непосредственно в квадратных скобках – например DF [«« A »,« E »]] – или, объявляя переменную за пределами квадратных скобок, как это:

columnsIWant = ['A', 'E']

df[columnsIWant]

#Returns the DataFrame, but only with columns A and E

Вы также можете выбрать определенный элемент определенной строки с помощью кровавых квадратных скобок. Например, если вы хотите, чтобы элемент, содержащийся в строке A, в индексе x (который является элементом в верхней левой ячейке DataFrame), вы можете получить доступ к нему с помощью df ['a'] ['x'] Отказ

Несколько других примеров ниже.

df['B']['Z']

#Returns 1.34

df['D']['Y']

#Returns -0.64

Как создавать и удалять столбцы в PandaS DataFrame

Вы можете создать новый столбец в DataFrame PandaS, указав столбец, как будто он уже существует, а затем назначает его новую серию Panda.

В качестве примера в следующем блоке кода мы создаем новую колонку, называемую «A + B», которая является суммой столбцов A и B:

df['A + B'] = df['A'] + df['B']

df 

#The last line prints out the new DataFrame

Вот вывод этого блока кода:

Чтобы удалить этот столбец из PandaS DataFrame, нам нужно использовать pd.dataframe.drop метод.

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

df.drop('A + B', axis = 1)

Очень важно отметить, что это падение Метод на самом деле не модифицирует сам dataframe. Для доказательств этого распечатайте DF Переменная снова и обратите внимание, как у него все еще есть A + B столбец:

df

Причина того, что падение (И многие другие методы данных DataFrame!) Не изменяйте структуру данных по умолчанию, чтобы предотвратить случайное удаление данных.

Есть два способа сделать Pandas автоматически перезаписать текущее dataframe.

Первый, пройдя в аргумент Inplace = True , как это:

df.drop('A + B', axis=1, inplace=True)

Во-вторых, используя оператор присваивания, который вручную перезаписывает существующую переменную, как это:

df = df.drop('A + B', axis=1)

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

падение Способ также может быть использован для падения строк. Например, мы можем удалить строку Z следующим образом:

df.drop('Z')

Как выбрать строку из PandaS DataFrame

Мы уже видели, что мы можем получить доступ к определенному столбцу PandaFrame DataFrame с использованием квадратных скобок. Теперь мы увидим, как получить доступ к конкретному ряду Pandaframe DataFrame Pandas, с аналогичной целью генерации серии Panda из большей структуры данных.

Ряды DataFrame могут быть доступны на метку ряд, используя loc атрибут вместе с квадратными скобками. Пример ниже.

df.loc['X']

Вот выход этого кода:

A   -0.66

B   -1.43

C   -0.88

D    1.60

E   -1.46

Name: X, dtype: float64

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

df.iloc[0]

Как вы ожидаете, этот код имеет тот же выход, что и наш последний пример:

A   -0.66

B   -1.43

C   -0.88

D    1.60

E   -1.46

Name: X, dtype: float64

Как определить количество рядов и столбцов в PandaFrame PandaS

Есть много случаев, когда вы захотите узнать форму PandaFrame Pandas. По форме я имею в виду количество столбцов и строк в структуре данных.

Pandas имеет встроенный атрибут под названием Форма Это позволяет нам легко получить доступ к этому:

df.shape

#Returns (3, 5)

Нарезание Pandas DataFrames.

Мы уже видели, как выбрать строки, столбцы и элементы из PandaFrame PandaS. В этом разделе мы рассмотрим, как выбрать подмножество данных DataFrame. В частности, давайте выберем элементы из колонн А и B и строки Х и Y Отказ

На самом деле мы можем приблизиться к этому в пошаговой моде. Сначала давайте выберем столбцы А и B :

df[['A', 'B']]

Затем давайте выберем строки Х и Y :

df[['A', 'B']].loc[['X', 'Y']]

И мы закончили!

Условный выбор с использованием Pandas DataFrame

Если вы вспоминаете из нашего обсуждения Numpy массивов, мы смогли выбрать определенные элементы массива, используя условные операторы. Например, если бы у нас был множный массив под названием arr И мы хотели только значения массива, которые были больше 4, мы могли бы использовать команду Arr [Arr> 4] Отказ

Pandas DataFrames Следуйте по аналогичному синтаксису. Например, если бы мы хотели узнать, где наш DataFrame имеет значения, которые были больше 0,5, мы могли ввести DF> 0,5 Чтобы получить следующий вывод:

Мы также можем генерировать новые Pandas DataFrame, который содержит нормальные значения, где оператор является Правда и Нан – Что означает не число – значения, где утверждение ложно. Мы делаем это, передавая заявление в DataFrame, используя квадратные скобки, как это:

df[df > 0.5]

Вот выход этого кода:

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

Чтобы быть более конкретным, скажем, что вы хотите подмножество DataFrame, где значение в столбце C было меньше 1. Это только верно для ряда Х Отказ

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

df['C'] < 1

Вот вывод:

X     True

Y    False

Z    False

Name: C, dtype: bool

Вы также можете получить фактические значения DataFrame относительно этой команды условного выбора, набрав DF [DF ['C'] <1] , который выводит только первый ряд данных dataframe (поскольку это единственная строка, в которой оператор верно для столбца C :

Вы также можете объединить несколько условий, используя условный выбор. Мы делаем это, используя Pandas ‘ & оператор. Вы не можете использовать нормальный Python и Оператор, потому что в этом случае мы не сравниваем два логических значения. Вместо этого мы сравниваем два серии Panda, которые содержат логические значения, поэтому & символ используется вместо этого.

В качестве примера нескольких условных выделений вы можете вернуть подмножество данных DataFrame, которое удовлетворяет DF ['C']> 0 и df ['a']> 0 со следующим кодом:

df[(df['C'] > 0) & (df['A']> 0)]

Как изменить индекс PandaS DataFrame

Существует ряд способов изменять индекс DataFrame PandaS.

Наиболее основным является сброс индекса к его числовым значениям по умолчанию. Мы делаем это, используя RESET_INDEX Метод:

df.reset_index()

Обратите внимание, что это создает новый столбец в DataFrame под названием индекс который содержит предыдущие этикетки индекса:

Обратите внимание, что, как и другие операции DataFrame, которые мы изучили, RESET_INDEX Не изменяет исходное dataframe, если вы либо (1) не заставляют его использовать = Оператор назначения или (2) Укажите Inplace = True Отказ

Вы также можете установить существующий столбец в качестве индекса DataFrame, используя set_index метод. Мы можем установить столбец А Как индекс DataFrame, используя следующий код:

df.set_index('A')

Значения А сейчас в индексе DataFrame:

Здесь стоит отметить три вещи:

  • set_index Не изменяет исходное dataframe, если вы либо (1) не заставляют его использовать = Оператор назначения или (2) Укажите Inplace = True Отказ
  • Если вы не запустите RESET_INDEX Во-первых, выполняя set_index Операция с Inplace = True или принудительный = Оператор назначения будет постоянно перезаписать ваши текущие значения индекса.
  • Если вы хотите переименовать свой индекс к меткам, которые в настоящее время не содержатся в столбце, вы можете сделать это через (1) создание Numpy Array с этими значениями, (2) добавление этих значений в качестве новой строки PandaFrame и (3) работает set_index операция.

Как переименовать столбцы в PandaS DataFrame

Последняя операция DataFrame мы обсудим, так как переименовать их столбцы.

Столбцы – это атрибут данных PandaSAframe, что означает, что мы можем позвонить им и изменять их, используя простой точечный оператор. Например:

df.columns

#Returns Index(['A', 'B', 'C', 'D', 'E'], dtype='object'

Оператор назначения – лучший способ изменить этот атрибут:

df.columns = [1, 2, 3, 4, 5]

df

Как бороться с отсутствующими данными в PandaS DataFrames

В идеальном мире мы всегда будем работать с идеальными наборами данных. Однако это никогда не бывает на практике. Существует много случаев при работе с количественными данными, которые вам нужно будет упасть или изменить отсутствующие данные. Мы рассмотрим стратегии для Обработка отсутствующих данных в пандах На протяжении всего этого раздела.

DataFrame мы будем использовать в этом разделе

Мы будем использовать NP.NAN атрибут для генерации Нан значения на протяжении всего этого раздела.

Np.nan

#Returns nan

В этом разделе мы воспользуемся следующим DataFrame:

df = pd.DataFrame(np.array([[1, 5, 1],[2, np.nan, 2],[np.nan, np.nan, 3]]))

df.columns = ['A', 'B', 'C']

df

Метод Dropna Pandas

Пандас имеет встроенный метод под названием Dropna Отказ При применении к DataFrame, Dropna Метод удалит любые строки, которые содержат значение NAN.

Давайте применим Dropna Метод нашему DF Dataframe в качестве примера:

df.dropna()

Обратите внимание, что, как и другие операции DataFrame, которые мы изучили, Dropna Не изменяет исходное dataframe, если вы либо (1) не заставляют его использовать = Оператор назначения или (2) Укажите Inplace = True Отказ

Мы также можем бросить какие-либо столбцы, которые имеют недостающие значения, проходящие в ось = 1 Аргумент для Dropna Метод, как это:

df.dropna(axis=1)

Метод панды

Во многих случаях вы захотите заменить недостающие значения в PandaS DataFrame вместо того, чтобы полностью отбрасывать его. Филна Метод предназначен для этого.

В качестве примера давайте заполним все недостающие значения в нашем DataFrame с ? :

df.fillna('?')

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

Вместо этого чаще мы заменим недостающее значение либо:

  • Среднее значение всего dataframe
  • Среднее значение этой строки датафарама

Мы продемонстрируем как ниже.

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

df.fillna(df.mean())

Чтобы заполнить недостающие значения в определенном столбце со средним значением из этого столбца, используйте следующий код (это для столбца A ):

df['A'].fillna(df['A'].mean())

Метод Pandas Groupby

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

Что такое функция Pandas Groupby?

Пандас поставляется со встроенным Groupby Функция, которая позволяет объединять строки вместе, основанные на столбец и выполняют на них совокупную функцию. Например, вы можете рассчитать сумму всех строк, которые имеют значение 1 в колонне ID Отказ

Для всех, кто знаком с языком SQL для запросов баз данных, пандас Groupby Метод очень похож на SQL Groupby заявление Отказ

Проще всего понимать панды Groupby Способ с использованием примера. Мы будем использовать следующее dataframe:

df = pd.DataFrame([ ['Google', 'Sam', 200],

                    ['Google', 'Charlie', 120],

                    ['Salesforce','Ralph', 125],

                    ['Salesforce','Emily', 250],

                    ['Adobe','Rosalynn', 150],

                    ['Adobe','Chelsea', 500]])

df.columns = ['Organization', 'Salesperson Name', 'Sales']

df

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

Начать, нам нужно будет создать Groupby объект. Это структура данных, которая говорит Python, какой столбец вы хотите группировать DataFrame. В нашем случае это Организация столбец, поэтому мы создаем Groupby Объект, как это:

df.groupby('Organization')

Если вы видите вывод, который выглядит так, вы узнаете, что вы успешно создали объект:



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

df.groupby('Organization').mean()

#The mean (or average) of the sales column

df.groupby('Organization').sum()

#The sum of the sales column

df.groupby('Organization').std()

#The standard deviation of the sales column

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

Вот несколько других совокупных функций, которые хорошо работают с пандами Groupby Метод:

df.groupby('Organization').count()

#Counts the number of observations

df.groupby('Organization').max()

#Returns the maximum value

df.groupby('Organization').min()

#Returns the minimum value

Использование Groupby с описанием метода

Один очень полезный инструмент, когда Работа с Pandas DataFrames это Опишите Метод, который возвращает полезную информацию для каждой категории, что Groupby Функция работает с.

Это лучше всего учиться через пример. Я объединил Groupby и Опишите Методы ниже:

df.groupby('Organization').describe()

Вот что выглядит вывод:

Метод Concat Pandas

В этом разделе мы узнаем Как объединить Pandas DataFrames Отказ Это будет краткий раздел, но тем не менее, это важная концепция. Давайте копать!

DataFrames мы будем использовать в этом разделе

Чтобы продемонстрировать, как объединить Pandas Dataframes, я буду использовать следующие 3 пример данных Dataframes:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],

                        'B': ['B0', 'B1', 'B2', 'B3'],

                        'C': ['C0', 'C1', 'C2', 'C3'],

                        'D': ['D0', 'D1', 'D2', 'D3']},

                        index=[0, 1, 2, 3])

df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],

                        'B': ['B4', 'B5', 'B6', 'B7'],

                        'C': ['C4', 'C5', 'C6', 'C7'],

                        'D': ['D4', 'D5', 'D6', 'D7']},

                         index=[4, 5, 6, 7]) 

df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],

                        'B': ['B8', 'B9', 'B10', 'B11'],

                        'C': ['C8', 'C9', 'C10', 'C11'],

                        'D': ['D8', 'D9', 'D10', 'D11']},

                        index=[8, 9, 10, 11])

Как объединить Pandas DataFrames

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

str1 = "Hello "

str2 = "World!"

str1 + str2

#Returns 'Hello World!'

Concatenation DataFrame очень похож. Это означает добавление одного DataFrame в конец другого DataFrame.

Для того, чтобы мы выполняли строковые конкатенации, мы должны иметь два данных данных с теми же колонками. Пример ниже:

pd.concat([df1, df2, df3])

По умолчанию Pandas будет объединяться вдоль Ось = 0 , что означает, что его добавление рядов, не столбцов.

Если вы хотите добавить строки, просто пропустите Ось = 0 как новая переменная в Concat функция.

pd.concat([df1,df2,df3],axis=1)

В нашем случае это создает очень уродливое значение dataframe со многими недостающими значениями:

Метод слияния Pandas

В этом разделе мы узнаем, как Слияние Pandas DataFrames Отказ

Dataframes мы будем использовать в этом разделе

В этом разделе мы будем использовать следующие два Dataframes PandaS:

import pandas as pd

leftDataFrame = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],

                     'A': ['A0', 'A1', 'A2', 'A3'],

                     'B': ['B0', 'B1', 'B2', 'B3']})

   

rightDataFrame = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],

                          'C': ['C0', 'C1', 'C2', 'C3'],

                          'D': ['D0', 'D1', 'D2', 'D3']})    

Колонны А , B , C и D иметь реальные данные в них, пока колонна ключ имеет ключ, который распространен среди обоих данных. К слияние Два данных DataFrames означает соединение их вдоль одного столбца, в которой они общими общими.

Как объединить Pandas DataFrames

Вы можете объединить два данных Pandas DataFrames вдоль общего столбца, используя слияние столбцы. Для всех, кто знаком с языком программирования SQL, это очень похоже на выполнение Внутреннее соединение в SQL.

Не волнуйтесь, если вы не знакомы с SQL, потому что слияние Синтаксис на самом деле очень прост. Похоже, это выглядит:

pd.merge(leftDataFrame, rightDataFrame, how='inner', on='key')

Давайте сломаем четыре аргумента, которые мы передали в слияние Метод:

  1. Leftataframe : Это датафарам, который мы хотели бы сливаться слева.
  2. rightdataframe : Это DataFrame, который мы хотели бы сливаться справа.
  3. Как = внутреннее : Это тип слияния, который выполняет операцию. Есть несколько типов слияний, но мы будем охватывать только внутренние слива в этом курсе.
  4. on = 'Key' : Это столбец, который вы хотели бы выполнить слияние. С ключ Была ли единственная столбца, общая между двумя данными, именно единственный вариант, который мы могли бы использовать для выполнения слияния.

Метод соединения Pandas

В этом разделе вы узнаете Как присоединиться к Pandas DataFrames Отказ

Dataframes мы будем использовать в этом разделе

Мы будем использовать следующие два данных DataFrames в этом разделе:

leftDataFrame = pd.DataFrame({  'A': ['A0', 'A1', 'A2', 'A3'],

                                'B': ['B0', 'B1', 'B2', 'B3']},

                                index =['K0', 'K1', 'K2', 'K3'])

   

rightDataFrame = pd.DataFrame({ 'C': ['C0', 'C1', 'C2', 'C3'],

                                'D': ['D0', 'D1', 'D2', 'D3']},

                                index = ['K0', 'K1', 'K2', 'K3'])  

Если они выглядят знакомыми, это потому, что они! Это почти одни и те же история данных, как мы использовали при изучении того, как объединить Pandas DataFrames. Ключевое отличие в том, что вместо ключ Столбец, являющийся его собственным столбцом, теперь является индекс DataFrame. Вы можете подумать об этих данных о том, что он из последнего раздела после выполнения .set_index (ключ) Отказ

Как присоединиться к Pandas DataFrames

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

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

leftDataFrame.join(rightDataFrame)

Другие общие операции в Пандах

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

DataFrame мы будем использовать в этом разделе

Я буду использовать следующее dataframe в этом разделе:

df = pd.DataFrame({'col1':['A','B','C','D'],

                   'col2':[2,7,3,7],

                   'col3':['fgh','rty','asd','qwe']})

Как найти уникальные значения в серии PandaS

Пандас имеет отличный метод под названием Уникальный Это можно использовать для поиска уникальных значений в пределах серии Panda. Обратите внимание, что этот метод работает только по сериалам, а не на DataFrames. Если вы попытаетесь применить этот метод в DataFrame, вы столкнулись с ошибкой:

df.unique()

#Returns AttributeError: 'DataFrame' object has no attribute 'unique'

Однако, поскольку столбцы панды данных DataFrame каждый серия, мы можем применить Уникальный Метод для определенного столбца, как это:

df['col2'].unique()

#Returns array([2, 7, 3])

Pandas также имеет отдельный NUNIQUE Способ, который подсчитывает количество уникальных значений в серии и возвращает это значение как целое число. Например:

df['col2'].nunique()

#Returns 3

Интересно, что NUNIQUE Метод это точно так же как Лен (уникальный ()) Но достаточно распространено, что сообщество Pandas решило создать определенный метод для этого случая использования.

Как считать возникновение каждого значения в серии PandaS

Пандас имеет функцию под названием counts_value Это позволяет легко подсчитать количество времени каждое наблюдение. Пример ниже:

df['col2'].value_counts()

"""

Returns:

7    2

2    1

3    1

Name: col2, dtype: int64

"""

Как использовать метод Pandas Apply

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

В качестве примера представьте, что у нас была следующая функция Exponentify который принимает целое число и поднимает его к самой силы:

def exponentify(x):

    return x**x

Применить Метод позволяет легко применить Exponentify Функция для каждого элемента серии:

df['col2'].apply(exponentify)

"""

Returns:

0         4

1    823543

2        27

3    823543

Name: col2, dtype: int64

"""

Применить Способ также можно использовать со встроенными функциями, такими как Лен (Хотя это определенно более мощный при использовании с пользовательскими функциями). Пример Лен Функция используется в сочетании с Применить ниже:

df['col3'].apply(len)

"""

Returns

0    3

1    3

2    3

3    3

Name: col3, dtype: int64

"""

Как сортировать Pandas DataFrame

Вы можете отфильтровать DataFrame Pandas по значкам определенного столбца, используя sort_values метод. В качестве примера, если вы хотите сортировать по Col2 В нашем dataframe DF , вы бы запускали следующую команду:

df.sort_values('col2')

Выход этой команды ниже:

Из этого выхода есть две вещи:

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

Локальный ввод данных и вывод (ввод/вывод) в пандах

В этом разделе мы начнем исследуя Ввод данных и вывод с библиотекой Pandas Python Отказ

Файл мы будем работать в этом разделе

Мы будем работать с разными файлами, содержащими цены на акции для Facebook (FB), Amazon (AMZN), Google (Goog) и Microsoft (MSFT) в этом разделе. Чтобы загрузить эти файлы, скачайте весь репозиторий GitHUB для этого курса здесь Отказ Файлы, используемые в этом разделе, можно найти в Stock_prices папка репозитория.

Вы захотите сохранить эти файлы в том же каталоге, что и ноутбук Jupyter для этого раздела. Самый простой способ сделать это – это скачать репозиторий GitHub, а затем открыть ноутбук Jupyter в Stock_prices папка репозитория.

Как импортировать файлы .csv, используя Pandas

Мы можем импортировать .csv Файлы в DataFrame PandaS используют read_csv Метод, как это:

import pandas as pd

pd.read_csv('stock_prices.csv')

Как вы увидите, это создает (и отображает) новое dataframe pandas, содержащее данные из .csv файл.

Вы также можете назначить этот новый Dataframe для переменной, который будет ссылаться позже, используя обычные = Оператор назначения:

new_data_frame = pd.read_csv('stock_prices.csv')

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

Несколько примеров разных читать Методы ниже:

pd.read_json()

pd.read_html()

pd.read_excel()

Мы рассмотрим некоторые из этих методов позже в этом разделе.

Если бы мы хотели импортировать .csv Файл, который не был непосредственно в нашем рабочем каталоге, нам нужно изменить синтаксис read_csv метод слегка.

Если файл находится в папке глубже, чем вы сейчас работаете, вам нужно указать полный путь файла в read_csv аргумент метода. В качестве примера, если Stock_Prices.csv Файл был содержался в папке под названием new_folder Тогда мы могли бы импортировать это так:

new_data_frame = pd.read_csv('./new_folder/stock_prices.csv')

Для тех, которые незнакомы с работой с обращением с справочником, Отказ В начале FilePath указывает текущий каталог. Точно так же .. Указывает один каталог над текущим каталогом, а A ... Указывает Два Справочники выше текущего каталога.

Этот синтаксис (с использованием периодов) именно то, как мы ссылаемся (и импортирующие) файлы, которые превышают наш текущий рабочий каталог. В качестве примера открыть ноутбук Jupyter внутри new_folder Папка и место Stock_Prices.csv в родительской папке. С помощью этого макета файлов вы можете импортировать Stock_Prices.csv Файл с использованием следующей команды:

new_data_frame = pd.read_csv('../stock_prices.csv')

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

Как экспортировать файлы .csv, используя Pandas

Чтобы продемонстрировать, как сохранить новый .csv Файл, давайте сначала создам новое dataframe. В частности, давайте заполним DataFrame с 3 столбцами и 50 строками со случайными данными, используя np.random.randn Метод:

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(50,3))

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

df.to_csv('my_new_csv.csv')

Вы заметите, что если вы запустите код выше, новый .csv Файл начнется с незамеченного столбца, который содержит индекс DataFrame. Пример ниже (после открытия .csv в Microsoft Excel):

Во многих случаях это нежелательно. Чтобы удалить столбец чистого индекса, пропустите index = false Как второй аргумент для to_csv Метод, как это:

new_data_frame.to_csv('my_new_csv.csv', index = False)

Новый .csv Файл не имеет неразмерной индексной колонны:

read_csv и to_csv Методы позволяют легко импортировать и экспортировать данные из .csv Файлы с использованием Pandas. Позже мы увидим в этом разделе, что для каждого читать Метод, который позволяет им импортировать данные, обычно есть соответствующая к Функция, которая позволяет нам сохранять эти данные!

Как импортировать файлы .json с помощью pandas

Если вы не испытываете работу с большими наборами набора данных, вы не можете быть знакомы с типом файла JSON.

JSON означает для объекта JavaScript. JSON Files очень похожи на словари Python.

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

Пандас имеет метод под названием read_json Это позволяет очень легко импортировать файлы JSON в виде DataFrame PandaS. Пример ниже.

json_data_frame = pd.read_json('stock_prices.json')

Мы узнаем, как экспортировать файлы JSON Далее.

Как экспортировать файлы .json, используя Pandas

Как я упоминал ранее, вообще есть к Метод для каждого читать метод. Это означает, что мы можем сохранить dataframe к файлу json, используя to_json метод.

В качестве примера давайте возьмем случайно генерируемое dataframe DF По сравнению с ранее в этом разделе и сохраните его в качестве файла JSON в нашем локальном каталоге:

df.to_json('my_new_json.json')

Мы узнаем, как работать с файлами Excel – у которых есть расширение файла .xlsx – следующий.

Как импортировать файлы .xlsx с помощью Pandas

Пандас read_excel Метод позволяет очень легко импортировать данные из документа Excel в DataFrame PandaS:

new_data_frame = pd.read_excel('stock_prices.xlsx')

В отличие от read_csv и read_json Методы, которые мы изучили ранее в этом разделе, read_excel Метод может принять второй аргумент. Причина, почему read_excel Принимает несколько аргументов в том, что электронные таблицы Excel могут содержать несколько листов. Второй аргумент определяет, какой лист вы пытаетесь импортировать и называется STEST_NAME Отказ

В качестве примера, если наше Stock_prices был второй лист под названием Лист2 , вы бы импортировали этот лист в Pandas DataFrame, как это:

new_data_frame.to_excel('stock_prices.xlsx', sheet_name='Sheet2')

Если вы не укажете какое-либо значение для STEST_NAME Тогда read_excel По умолчанию будет импортировать первый лист электронной таблицы Excel.

При импорте документов Excel очень важно отметить, что Pandas импортирует только данные. Он не может импортировать другие возможности Excel, такие как форматирование, формулы или макросы. Попытка импортировать данные из документа Excel, имеющего эти функции, могут привести к сбою панды.

Как экспортировать файлы .xlsx с помощью Pandas

Экспорт файлов Excel очень похож на импорт файлов Excel, кроме мы используем to_excel вместо read_excel Отказ Пример ниже, используя наш случайно сгенерированный DF Dataframe:

df.to_excel('my_new_excel_file.xlsx')

Как read_excel , to_excel принимает второй аргумент под названием STEST_NAME Это позволяет указывать имя листа, которое вы экономите. Например, мы могли бы назвать лист нового .xlsx Файл Мой новый лист! Передавая его в to_excel Метод такой:

df.to_excel('my_new_excel_file.xlsx', sheet_name='My New Sheet!')

Если вы не укажете значение для STEST_NAME Тогда лист будет назван Лист1 По умолчанию (как только когда вы создаете новый документ Excel, используя фактическое приложение).

Удаленный ввод данных и вывод (ввод/вывод) в пандах

В последнем разделе этого курса мы узнали, как импортировать данные из .csv , .json и .xlsx Файлы, которые были сохранены на нашем локальном компьютере. Мы будем следить, показывая вам, как вы можете импортировать файлы, не сохраняя их в первую очередь на свой локальный компьютер. Это называется Удаленный импорт Отказ

Что такое удаленный импорт и почему это полезно?

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

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

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

На протяжении всей остальной части этого раздела я продемонстрирую Как выполнить удаленный импорт в Pandas для .csv , .json и .xlsx файлы.

Как импортировать удаленные файлы .csv

Во-первых, перейдите к этому курсу Github Repository Отказ Откройте Stock_prices папка. Нажмите на файл Stock_Prices.csv и затем нажмите кнопку для Сырой файл, как показано ниже.

Это отвезует на новую страницу, которая имеет данные из .csv Файл содержится в Stock_Prices.csv Отказ

Чтобы импортировать этот удаленный файл в свой скрипт Python, вы должны сначала скопировать свой URL в свой буфер обмена. Вы можете сделать это с помощью (1), выделяя весь URL, щелкнув правой кнопкой мыши на выбранный текст и нажав Скопировать или (2) подчеркивая весь URL и набрав Ctrl + C на клавиатуре.

URL будет выглядеть так:

[https://raw.githubusercontent.com/nicholasmccullum/advanced-python/master/stock_prices/stock_prices.csv](https://raw.githubusercontent.com/nicholasmccullum/advanced-python/master/stock_prices/stock_prices.csv)

Вы можете передать этот URL в read_csv Способ для импорта набора данных в PandaS DataFrame без сохранения набора данных на ваш компьютер первым:

pd.read_csv('https://raw.githubusercontent.com/nicholasmccullum/advanced-python/master/stock_prices/stock_prices.csv')

Как импортировать удаленные файлы .json

Мы можем импортировать удаленный .json Файлы в аналогичной форме для .csv файлы.

Сначала возьмите URL URL из GitHub. Это будет выглядеть так:

https://raw.githubusercontent.com/nicholasmccullum/advanced-python/master/stock_prices/stock_prices.json

Далее передайте этот URL в read_json Метод такой:

pd.read_json('https://raw.githubusercontent.com/nicholasmccullum/advanced-python/master/stock_prices/stock_prices.json')

Как импортировать удаленные файлы .xlsx

Мы можем импортировать удаленный .xlsx Файлы в аналогичной форме для .csv и .json файлы. Обратите внимание, что вам нужно будет нажать в немного другое место на интерфейсе GitHub. В частности, вам необходимо щелкнуть правой кнопкой мыши «Просмотр RAW» и выберите «Копировать адрес ссылки», как показано ниже.

RAW URL будет выглядеть так:

https://github.com/nicholasmccullum/advanced-python/blob/master/stock_prices/stock_prices.xlsx?raw=true

Затем передайте этот URL в read_excel Метод, как это:

pd.read_excel('https://github.com/nicholasmccullum/advanced-python/blob/master/stock_prices/stock_prices.xlsx?raw=true')

Даунсид для удаленного импорта

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

Тем не менее, удаленный импорт также имеет два недостатка:

  1. У вас должно быть подключение к Интернету для выполнения удаленного импорта
  2. Pinging URL-адрес для получения набора данных – довольно много времени, что означает, что выполнение удаленного импорта замедляет скорость вашего кода Python

Окончательные мысли и специальное предложение

Спасибо за прочтение этой статьи на PandA, которая является одним из моих любимых пакетов Python и библиотека должна знать для каждого разработчика Python.

Этот учебник – выдержка из моего курса Python для финансов и науки о данных Отказ Если вы заинтересованы в изучении более основных навыков Python, курс скидка на 50% для первых 50 читателей FreeCodecamp, которые зарегистрируются – Нажмите здесь, чтобы получить дисконтированный курс сейчас !