Використання 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
- Як фільтрувати рядки в DataFrame на основі значень кількох стовпців?
- Ви можете використовувати логічне індексування з кількома умовами, поєднаними за допомогою & і |. Наприклад: df[(df['age'] > 25) & (df['city'] == 'New York')].
- Яка різниця між loc[] і iloc[]?
- loc[] базується на мітках, тоді як iloc[] базується на цілочисельній позиції. використання loc[] для фільтрації за мітками та iloc[] для фільтрації за позиціями індексу.
- Як я можу використовувати query() функцію для фільтрації рядків DataFrame?
- The query() дозволяє використовувати SQL-подібний синтаксис. Наприклад: df.query('age > 25 and city == "New York"').
- Чи можна фільтрувати рядки на основі списку значень?
- Так, ви можете використовувати isin() метод. Наприклад: df[df['city'].isin(['New York', 'Los Angeles'])].
- Який найкращий спосіб фільтрації рядків на основі відповідності рядків?
- Ви можете використовувати str.contains() метод. Наприклад: df[df['city'].str.contains('New')].
- Як вибрати рядки, у яких відсутні значення стовпців?
- Ви можете використовувати isna() метод. Наприклад: df[df['age'].isna()].
- Як я можу фільтрувати рядки за допомогою спеціальної функції?
- Ви можете використовувати apply() метод з лямбда-функцією. Наприклад: df[df.apply(lambda row: row['age'] > 25, axis=1)].
- Чи можу я фільтрувати рядки на основі значень індексів?
- Так, ви можете використовувати index.isin() метод. Наприклад: df[df.index.isin([1, 3, 5])].
Ключові висновки щодо вибору рядка DataFrame
Вибір рядків із DataFrame на основі значень стовпців є фундаментальним навиком аналізу даних за допомогою Pandas. Використовуючи логічне індексування, loc[], iloc[], query(), і isin() дозволяє ефективно фільтрувати дані. Оволодіння цими техніками покращує вашу здатність ефективно маніпулювати наборами даних і аналізувати їх.