Руководство по питону от специалиста по данным для запроса фреймов данных с помощью функции запроса pandas

Оглавление

  1. Набор данных
  2. Панды
  3. Запрос
  4. Учебный код
  5. Резюме
  6. использованная литература

Набор данных

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

Панды

Pandas [2] - одна из самых распространенных библиотек, используемых специалистами по обработке данных и инженерами по машинному обучению. Он в основном используется на этапе исследовательского анализа данных при построении модели, а также для специального анализа результатов модели. Он также содержит несколько функций, включая функцию запроса.

Запрос

Функция запроса в pandas - это полезная функция, которая действует аналогично предложению ‘where’ в SQL. Однако преимущество этого заключается в том, что вам не нужно постоянно переключаться с pandas, Jupyter Notebook и платформы SQL, которую вы используете в настоящее время. Некоторые другие преимущества перечислены ниже:

  • компилирует несколько условий
  • простая функция, которая работает с вашим фреймом данных pandas
  • ссылается на описательную статистику вместо подзапроса

Учебный код

Я собрал несколько примеров того, как можно использовать функцию запроса pandas. На приведенном ниже снимке экрана приводится сводка полезных примеров с запросом. Ниже вы можете увидеть, как можно удовлетворить как текстовые, так и числовые условия. Найдите строки, в которых определенный столбец содержит определенное текстовое значение, или создайте описательную статистику с помощью символа ‘@’. Например, ‘@mean_of_column’ ссылается на значение, которое вы установили с помощью функции ‘.mean ()’. В строке 65 возвращенные строки имели значение 'Blue' и значение 'Confirmed_Recovery', которое больше среднего значения самого 'Confirmed_Recovery'. , а также значение 'Label_3'.

Код руководства, указанный в сером поле, представляет собой весь код, используемый для демонстрации функции запроса. Сначала я импортировал панд и прочитал свой фрейм данных. Затем я добавляю новые строки, которые, как я знал, удовлетворяют определенным условиям для отображения того, как можно использовать функцию запроса. Здесь также была полезна функция ‘append’, поскольку она быстро добавляла новые строки в фрейм данных без необходимости явно вызывать каждый столбец, один раз в формате серии. Я вернул ‘df.tail ()’, чтобы убедиться, что возвращенные строки соответствуют моим ожиданиям.

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

Я считаю, что наиболее полезной функцией запроса является метод ‘@’. Подобно SQL, где подзапрос может использоваться для ссылки для выбора строк, в которых выполняются определенные условия, также может использоваться этот метод. Метод ‘@’ сохраняет значение, с которым вы хотите сравнить. В приведенном ниже примере я сравнил среднее значение одного столбца.

Наконец, вы можете выполнить несколько условий в одной строке кода, используя функцию запроса, введя ‘&’ аналогично ‘и’ в SQL.

# All the python code below for use:
# import library
import pandas as pd

# read in your dataframe
df = pd.read_csv('/Users/example.csv')
# write out new rows
rows = [pd.Series([100, 100, 20,'Blue','Label_1'], index=df.columns),
pd.Series([100, 80, 60,'Blue','Label_1'], index=df.columns),
pd.Series([80, 60, 100,'Blue','Label_1'], index=df.columns)]
# append the multiple rows
new_df = df.append(rows , ignore_index=True)
# check the newest 3 rows you made
new_df.tail(3)
# return rows where values from one column equal that of another
# they do not for this comparison
new_df.query('Confirmed_Test == Confirmed_New')
# return rows where values from one column equal that of another
# they do for this comparison
new_df.query('Confirmed_Test == Confirmed_Recovery')
# return rows where values from one column do not equal that of another
# they do for this comparison
new_df.query('Confirmed_New != Confirmed_Recovery').head()
# return rows where values from one column are bigger than that of another
new_df.query('Confirmed_New > Confirmed_Recovery').head()
# see which rows where the 'Confirmed_New' values
# are greater than the mean of the total column
# use the '@' to reference 'cn_mean'
cn_mean = new_df['Confirmed_New'].mean()
new_df.query('Confirmed_New > @cn_mean').head()
# multiple conditions example
cn_min = new_df['Confirmed_New'].min()
cn_max = new_df['Confirmed_New'].max()
new_df.query('Confirmed_New > @cn_min & Confirmed_New < @cn_max').head()
# text conditions
# use double quotes for matching on the string value
# all the rows returned have 'Blue' for the 'Text_Feature' column
new_df.query('Text_Feature == "Blue"').head()
# return rows which have a 'Blue' value, and a 'Confirmed_Recovery' that is greater
# than the mean of 'Confirmed_Recovery' itself, while also satisfying the 'Label_3' value
# only 3 return here (did not print out head())
cr_mean = new_df['Confirmed_Recovery'].mean()
new_df.query('Text_Feature == "Blue" & Confirmed_Recovery > @cr_mean & Text_Predictor == "Label_3"')

Чтобы увидеть код в формате python, а не в письменном виде, вот встроенная суть [4]:

Резюме

Функция запроса от pandas - это простой и быстрый способ манипулировать фреймом данных. Вы можете использовать предложения, подобные SQL, которые возвращают определенные строки, удовлетворяющие определенным вами условиям. Это полезно, если вы уже находитесь в своем файле Jupyter Notebook .ipynb или .py, вместо того, чтобы повторно загружать или выполнять команды SQL на платформе SQL. Запрос Pandas также интуитивно понятен и не требует много времени для изучения. Надеюсь, вы нашли примеры из этой статьи полезными. Спасибо за чтение!

использованная литература

[1] Мелодия П, Unsplash (2017)

[2] панды, панды (2020)

[3] M.Przybyla, скриншот (2020)

[4] М.Прибыла, суть (2020)