Вибір рядків DataFrame на основі значень стовпців у Python

Вибір рядків DataFrame на основі значень стовпців у Python
Python

Використання Pandas для фільтрації DataFrames за значеннями стовпців

Під час роботи з даними в Python бібліотека Pandas пропонує потужні інструменти для обробки та аналізу даних. Одним із поширених завдань є вибір рядків із DataFrame на основі значень у певному стовпці. Ця операція схожа на SQL-запит: SELECT * FROM table WHERE column_name = some_value.

У цій статті ми розглянемо, як досягти цього в Pandas за допомогою різних методів. Незалежно від того, чи виконуєте ви фільтрацію за одним значенням чи кількома критеріями, Pandas надає інтуїтивно зрозумілі та ефективні способи обробки таких операцій. Давайте зануримося в деталі.

Команда опис
pd.DataFrame() Створює об’єкт DataFrame зі словника чи інших структур даних.
df[condition] Фільтрує рядки DataFrame на основі умови, повертаючи лише ті, які відповідають критеріям.
print() Виводить вказане повідомлення або DataFrame на консоль.
df['column'] == value Створює логічний ряд, який використовується для фільтрації рядків, у яких стовпець відповідає вказаному значенню.
df['column'] >df['column'] > value Створює логічний ряд, який використовується для фільтрації рядків, у яких значення стовпця перевищують вказане значення.
# Comment Використовується для додавання пояснень або приміток у код, які не виконуються як частина сценарію.

Реалізація вибору рядка DataFrame в Pandas

У наданих сценаріях ключовим завданням є фільтрація рядків із DataFrame на основі значень певних стовпців, що є загальною вимогою в аналізі даних. Перший сценарій починається з імпорту бібліотеки Pandas за допомогою import pandas as pd. Це важливо, оскільки Pandas є потужною бібліотекою для обробки даних у Python. Далі ми створюємо зразок DataFrame за допомогою pd.DataFrame() зі словником, що містить дані про імена, вік і міста. Ця структура дозволяє нам легко візуалізувати та маніпулювати табличними даними. Вирішальною частиною сценарію є те, де ми фільтруємо рядки за допомогою df[df['city'] == 'New York']. Ця команда вибирає всі рядки, де значенням стовпця міста є «Нью-Йорк». Результат зберігається в змінній ny_rows, який потім друкується для відображення відфільтрованого DataFrame.

Другий сценарій має подібну структуру, але фокусується на фільтрації рядків на основі числової умови. Після імпорту Pandas і створення DataFrame зі стовпцями продукту, ціни та кількості сценарій використовує df[df['price'] > 150] щоб відфільтрувати рядки, ціна яких перевищує 150. Ця команда створює підмножину вихідного DataFrame, що містить лише рядки, які відповідають вказаній умові. Результат зберігається в expensive_products і роздруковано для перевірки. Обидва сценарії демонструють потужність і простоту Pandas для обробки даних. Використовуючи логічне індексування, метод, за допомогою якого ми передаємо ряд значень true/false для фільтрації даних, ми можемо ефективно вибирати підмножини даних на основі різних умов, що робить його безцінним інструментом для аналітиків даних і науковців.

Фільтрування рядків у DataFrame на основі значень стовпців

Python - використання Pandas для операцій DataFrame

import pandas as pd
# Create a sample DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
    'age': [24, 27, 22, 32, 29],
    'city': ['New York', 'Los Angeles', 'New York', 'Chicago', 'Los Angeles']
}
df = pd.DataFrame(data)

# Select rows where city is New York
ny_rows = df[df['city'] == 'New York']
print(ny_rows)

# Output:
#       name  age      city
# 0    Alice   24  New York
# 2  Charlie   22  New York

Запит рядків DataFrame на основі значень стовпців

Python – розширена фільтрація з Pandas

import pandas as pd

# Create a sample DataFrame
data = {
    'product': ['A', 'B', 'C', 'D'],
    'price': [100, 150, 200, 250],
    'quantity': [30, 50, 20, 40]
}
df = pd.DataFrame(data)

# Select rows where price is greater than 150
expensive_products = df[df['price'] > 150]
print(expensive_products)

# Output:
#   product  price  quantity
# 2       C    200        20
# 3       D    250        40

Розширені методи вибору рядків DataFrame

Окрім базової фільтрації з логічним індексуванням, Pandas пропонує більш просунуті методи вибору рядків на основі значень стовпців. Одним із таких методів є query() функція, яка дозволяє використовувати SQL-подібний синтаксис для фільтрації рядків DataFrame. Наприклад, можна використовувати df.query('age > 25 and city == "New York"') щоб вибрати рядки, де вік старше 25 і місто Нью-Йорк. Цей метод може зробити ваш код більш читабельним, особливо для складних умов. Крім того, Pandas надає loc[] і iloc[] засоби доступу для більш точного вибору рядків. The loc[] засіб доступу базується на мітках, тобто ви можете фільтрувати рядки за їхніми мітками або логічним масивом. На противагу цьому iloc[] засіб доступу базується на цілочисельній позиції, що дозволяє фільтрувати рядки за їх позиціями індексів.

Ще одна потужна функція Pandas — це можливість фільтрувати рядки DataFrame за допомогою isin() метод. Цей метод корисний, коли потрібно відфільтрувати рядки на основі списку значень. Наприклад, df[df['city'].isin(['New York', 'Los Angeles'])] вибирає рядки, де значенням стовпця міста є Нью-Йорк або Лос-Анджелес. Крім того, ви можете об’єднати кілька умов за допомогою & і | оператори для створення більш складних фільтрів. Наприклад, df[(df['age'] > 25) & (df['city'] == 'New York')] фільтрує рядки, у яких вік понад 25 років і місто Нью-Йорк. Ці вдосконалені методи забезпечують надійну структуру для фільтрації даних, що робить Pandas універсальним інструментом для аналізу та маніпулювання даними.

Поширені запитання щодо вибору рядків DataFrame у Pandas

  1. Як фільтрувати рядки в DataFrame на основі значень кількох стовпців?
  2. Ви можете використовувати логічне індексування з кількома умовами, поєднаними за допомогою & і |. Наприклад: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Яка різниця між loc[] і iloc[]?
  4. loc[] базується на мітках, тоді як iloc[] базується на цілочисельній позиції. використання loc[] для фільтрації за мітками та iloc[] для фільтрації за позиціями індексу.
  5. Як я можу використовувати query() функцію для фільтрації рядків DataFrame?
  6. The query() дозволяє використовувати SQL-подібний синтаксис. Наприклад: df.query('age > 25 and city == "New York"').
  7. Чи можна фільтрувати рядки на основі списку значень?
  8. Так, ви можете використовувати isin() метод. Наприклад: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Який найкращий спосіб фільтрації рядків на основі відповідності рядків?
  10. Ви можете використовувати str.contains() метод. Наприклад: df[df['city'].str.contains('New')].
  11. Як вибрати рядки, у яких відсутні значення стовпців?
  12. Ви можете використовувати isna() метод. Наприклад: df[df['age'].isna()].
  13. Як я можу фільтрувати рядки за допомогою спеціальної функції?
  14. Ви можете використовувати apply() метод з лямбда-функцією. Наприклад: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Чи можу я фільтрувати рядки на основі значень індексів?
  16. Так, ви можете використовувати index.isin() метод. Наприклад: df[df.index.isin([1, 3, 5])].

Ключові висновки щодо вибору рядка DataFrame

Вибір рядків із DataFrame на основі значень стовпців є фундаментальним навиком аналізу даних за допомогою Pandas. Використовуючи логічне індексування, loc[], iloc[], query(), і isin() дозволяє ефективно фільтрувати дані. Оволодіння цими техніками покращує вашу здатність ефективно маніпулювати наборами даних і аналізувати їх.