Як інновації в техніці сприяють розвитку сектору розробки додатків? 1

Як запитувати фрейм даних Pandas

Вихідний вузол: 1017694

Як запитувати фрейм даних Pandas

Погляд Data Scientist на SQL-подібні функції Python.


By Матвій Пшибила, старший науковий співробітник Favor Delivery



Фото Брюс Хонг on Unsplash [1].

Зміст

 
 

  1. Вступ
  2. Кілька умов
  3. Об’єднання кількох певних стовпців
  4. Підсумки
  5. посилання

Вступ

 
 
Незалежно від того, чи збираєтеся ви перейти від інженера/аналітика даних, чи хочете стати ефективнішим спеціалістом із обробки даних, запит до фрейму даних може виявитися досить корисним методом повернення певних рядків, які вам потрібні. Важливо відзначити, що для панд існує спеціальна функція запиту з відповідною назвою, query. Однак замість цього я обговорюватиму інші способи, якими можна імітувати запити, фільтрацію та об’єднання даних. Ми представимо загальні сценарії або запитання, які ви поставили б своїм даним, і замість SQL ми зробимо це за допомогою Python. У наведених нижче параграфах я опишу кілька простих способів запиту рядків для вашого фрейму даних pandas за допомогою мови програмування Python.

Кілька умов

 
 



Зразкові дані. Скріншот від автора [2].

 

Як дослідники даних або аналітики даних, ми хочемо повертати певні рядки даних. Один із цих сценаріїв полягає в тому, що ви хочете застосувати кілька умов, усі в одному рядку коду. Щоб показати свій приклад, я створив кілька підроблених зразків даних імені та прізвища, а також їх відповідної статі та дати народження. Ці дані відображаються вище на скріншоті.

Приклад із кількома умовами, по суті, дасть відповідь на конкретне запитання, як і під час використання SQL. Питання в тому, який відсоток наших даних становить чоловіча стать OR особа, яка народилася між 2010 і 2021 роками.

Ось код, який вирішить це питання (є кілька способів відповісти на це запитання, але ось мій конкретний спосіб це зробити):

print(“Percent of data who are Males OR were born between 2010 and 2021:”, 100*round(df[(df[‘Gender’] == ‘M’) | (df[‘Birthdate’] >= ‘2010–01–01’) & (df[‘Birthdate’] <= ‘2021–01–01’)][‘Gender’].count()/df.shape [0],4), “%”)

Щоб краще візуалізувати цей код, я також включив цей скріншот того самого коду зверху разом із виводом/результатом. Ви також можете застосувати ці умови, щоб повернути фактичні рядки замість отримання частки чи відсотків рядків із загальної кількості рядків.



Код умов. Скріншот автора [3].

 

Ось порядок виконання команд:

  • Повернути рядки з чоловічим Gender
  • Включіть OR функція |
  • Повернути рядки Birthdate > 2010 і 2021
  • Об’єднайте це все, а потім розділіть на загальну кількість рядків

Як бачите, цей код схожий на те, що ви бачите в SQL. Я особисто вважаю, що це простіше в pandas, тому що це може бути менше коду, а також можна візуально побачити весь код в одному зручному місці, без необхідності прокручувати вгору та вниз (але цей формат мені більше подобається).

Об’єднання кількох певних стовпців

 
 



Результат об’єднаного кадру даних. Скріншот автора [4].

 

Ймовірно, ми бачили, як об’єднати фрейми даних разом в інших навчальних посібниках, тому я хотів додати унікальний підхід, якого я насправді там не бачив, який полягає в об’єднанні кількох конкретних стовпців. У цьому сценарії ми хочемо об’єднати два кадри даних, де два поля є спільними для них. Ви можете сказати, що якщо є ще більше стовпців, цей метод може бути ще кориснішим.

У нас є наш перший фрейм даних, який є df, потім ми об’єднуємо наші стовпці у другому фреймі даних, df2. Ось цей код для досягнення очікуваного результату:

merged_df = df.merge(df2, how=’inner’, left_on=cols, right_on=cols )

Щоб краще візуалізувати це злиття та код, я представив знімок екрана нижче. Нижче ви бачите, як виглядає другий кадр даних із First та  Last імена, як і в першому кадрі даних, але з новим стовпцем, Numeric. Потім у нас є конкретні стовпці, які ми хотіли об’єднати, повертаючи стовпці GenderBirthdate, і новий Numeric колонка також. Стовпці - це список стовпців, який має назву cols.



Злиття фрейму даних. Скріншот автора [5].

 

Як бачите, цей спосіб об’єднання фреймів даних є простим способом досягнення тих самих результатів, які ви отримали б із запитом SQL.

Підсумки

 
 
У цьому підручнику ми побачили два поширених запитання чи запити, які ви б виконали в SQL, але замість цього виконали б їх із фреймами даних pandas у Python.

Підводячи підсумок, ось два сценарії, з якими ми працювали:

  1. Повернення відсотка рядків із загального набору даних із кількох умов
  2. Об’єднання кількох певних стовпців для повернення остаточного кадру даних із новим стовпцем

Сподіваюся, моя стаття була вам цікава та корисна. Будь ласка, не соромтеся коментувати нижче, якщо ви погоджуєтеся чи не погоджуєтеся з цими методами. Чому або чому ні? Це, безумовно, можна уточнити ще більше, але я сподіваюся, що мені вдалося пролити світло на деякі способи використання pandas і Python замість SQL. Дякую за читання!

Перегляньте мій профіль, Метт Пржибилата інші статті, а також зв’яжіться зі мною на LinkedIn.

Я не пов’язаний із цими компаніями.

 
посилання

[1] Автор фото Брюс Хонг on Unsplash(2018)

[2] М. Прибила, скріншот зразка даних, (2021)

[3] М. Пржибила, скріншот коду умов, (2021)

[4] M. Przybyla, скріншот результату об’єднаного кадру даних, (2021)

[5] М. Пржибила, скріншот об’єднання фрейму даних, (2021)

 
Біо: Матвій Пшибила є старшим спеціалістом із обробки даних у Favor Delivery та незалежним технічним автором, особливо в галузі обробки даних.

Оригінал. Повідомлено з дозволу.

За темою:

Джерело: https://www.kdnuggets.com/2021/08/query-pandas-dataframe.html

Часова мітка:

Більше від KDnuggets