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

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

Фільтрування рядків у Pandas DataFrames

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

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

Команда опис
pd.DataFrame(data) Створює DataFrame зі словника даних.
df[column_name] Отримує доступ до стовпця в DataFrame за назвою.
df[condition] Фільтрує DataFrame на основі умови, застосованої до стовпця.
print(selected_rows) Друкує DataFrame або його підмножину на консоль.
df[df['Age'] >df[df['Age'] > 25] Вибирає рядки, де значення стовпця «Вік» перевищують 25.
df[df['City'] == 'Chicago'] Вибирає рядки, де значення стовпця "Місто" дорівнюють "Чикаго".

Розуміння вибору рядка DataFrame у Pandas

Надані сценарії демонструють, як вибрати рядки з DataFrame на основі значень стовпців за допомогою бібліотеки Pandas у Python. Перший сценарій починається з імпорту бібліотеки Pandas за допомогою import pandas as pd команда. Потім він створює зразок DataFrame за допомогою словника даних, який перетворюється на DataFrame за допомогою pd.DataFrame(data) команда. Потім сценарій ілюструє два методи вибору рядків: вибір рядків, де значення стовпця «Вік» перевищує 25, використовуючи df[df['Age'] > 25], і вибираючи рядки, де значенням стовпця "Місто" є "Чикаго", використовуючи df[df['City'] == 'Chicago']. Ці відфільтровані кадри даних друкуються за допомогою print() для відображення вибраних рядків.

Другий сценарій має подібну структуру, але використовує інші дані та критерії вибору. Він створює DataFrame з інформацією про продукт, включаючи стовпці «Продукт», «Ціна» та «Акції». Вибираються рядки, у яких "Ціна" менше або дорівнює 200 с df[df['Price'] <= 200], і де «Запас» перевищує 40 використань df[df['Stock'] > 40]. Мета цих сценаріїв — показати, як фільтрувати рядки DataFrame на основі певних умов, подібно до того, як ви використовуєте SQL-запит для вибору рядків із таблиці на основі значення стовпця. Розуміючи та застосовуючи ці команди, ви можете ефективно маніпулювати й аналізувати дані у своїх DataFrames.

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

Python з бібліотекою Pandas

# Importing the necessary library
import pandas as pd

# Creating a sample DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [24, 27, 22, 32, 29],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)

# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)

# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)

Фільтрування даних у DataFrame на основі критеріїв стовпців

Python з бібліотекою Pandas

# Importing pandas library
import pandas as pd

# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
        'Price': [100, 150, 200, 250, 300],
        'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)

# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)

# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)

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

Окрім базової фільтрації за допомогою логічного індексування, Pandas пропонує розширені методи вибору рядків на основі значень стовпців. Одним з потужних методів є використання query() функція, яка дозволяє фільтрувати рядки за допомогою виразу запиту, роблячи синтаксис чистішим і часто більш інтуїтивно зрозумілим. Наприклад, замість використання df[df['Age'] > 25], можете писати df.query('Age > 25'). Цей метод особливо корисний при роботі зі складнішими умовами або коли імена стовпців містять пробіли. Крім того, isin() Ця функція корисна, якщо потрібно відфільтрувати рядки на основі списку значень. Наприклад, щоб вибрати рядки, у яких у стовпці «Місто» є значення «Чикаго» або «Нью-Йорк», можна використати df[df['City'].isin(['Chicago', 'New York'])].

Інша техніка передбачає loc і iloc індексатори. The loc індексатор базується на мітках, що дозволяє вибирати рядки на основі міток рядків і назв стовпців, а iloc базується на цілочисельному розташуванні, що дозволяє вибирати номери рядків і стовпців. Ця гнучкість особливо корисна для вибору рядків на основі умови, застосованої до іншого стовпця. Наприклад, df.loc[df['Age'] > 25, 'Name'] повертає імена осіб старше 25 років. Ці методи розширюють ваш набір інструментів для ефективної обробки та аналізу даних у Pandas, пропонуючи код, який можна читати та підтримувати.

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

  1. Як я можу вибрати рядки на основі кількох умов?
  2. Ви можете використовувати query() функціонувати або поєднувати умови з логічними операторами, наприклад & і |. Наприклад, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
  3. Чи можна фільтрувати рядки на основі списку значень?
  4. Так, використовуйте isin() функція. Наприклад, df[df['City'].isin(['Chicago', 'New York'])].
  5. Яка різниця між loc і iloc?
  6. loc базується на мітках, тоді як iloc базується на цілочисельному розташуванні. використання loc з мітками рядків/стовпців і iloc з індексами рядка/стовпця.
  7. Як я можу вибрати певні стовпці під час фільтрації рядків?
  8. Ви можете використовувати loc. Наприклад, df.loc[df['Age'] > 25, ['Name', 'City']].
  9. Як обробляти відсутні значення під час вибору рядків?
  10. Використовувати dropna() функцію для видалення рядків із пропущеними значеннями або fillna() щоб замінити їх на вказане значення.
  11. Чи можна використовувати регулярні вирази для фільтрації рядків?
  12. Так, str.contains() функція з regex=True Параметр дозволяє фільтрувати рядки на основі шаблонів регулярних виразів. Наприклад, df[df['Name'].str.contains('^A', regex=True)].
  13. Як фільтрувати рядки на основі індексу?
  14. Ви можете використовувати loc з назвою індексу. Наприклад, df.loc[df.index == 'some_index'].
  15. Що робити, якщо назви моїх стовпців містять пробіли або спеціальні символи?
  16. Використовувати query() функція, яка може обробляти такі імена стовпців із зворотними галочками. Наприклад, df.query('`column name` == value').

Останні думки про методи вибору рядків DataFrame

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