Руководство по питону от специалиста по данным для запроса фреймов данных с помощью функции запроса pandas
Оглавление
- Набор данных
- Панды
- Запрос
- Учебный код
- Резюме
- использованная литература
Набор данных
Набор данных, используемый в этом анализе и руководстве по запросу 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)