Фільтрація та Вибірка Даних за Допомогою Python
Свайпніть щоб показати меню
Вибірка та фільтрація — це найпоширеніші операції при обробці даних. Вибірка дозволяє обрати конкретні стовпці, які вас цікавлять, а фільтрація дає змогу звузити вибірку рядків на основі певних критеріїв або умов.
У більшості реальних сценаріїв немає потреби працювати з кожним стовпцем або рядком у наборі даних. Великі таблиці можуть містити сотні стовпців і мільйони рядків, більшість з яких можуть бути неактуальними для вашого аналізу. У цьому розділі ви дізнаєтеся, як "виділити" саме ті дані, які вам потрібні, використовуючи методи select() та filter().
Вибірка конкретних стовпців
Метод select() дозволяє створити новий DataFrame, який містить лише обрані вами стовпці. Це зменшує обсяг пам'яті, яку використовує ваш кластер, і робить результати значно зручнішими для перегляду.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Зверніть увагу, що Spark не змінює оригінальний df. Натомість створюється новий датафрейм з назвою selected_df. Якщо потрібно вибрати всі стовпці, крім одного, або виконати обчислення під час вибору, використовується більш складний синтаксис, але для базових завдань стандартним підходом є передача назв стовпців як рядків.
Фільтрація рядків за умовами
Метод filter() (або його псевдонім where()) виконує роль сита для ваших даних. Ви задаєте умову, і Spark залишає лише ті рядки, для яких ця умова виконується.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
Можна використовувати стандартні оператори порівняння, такі як == (дорівнює), != (не дорівнює), > (більше ніж) та < (менше ніж).
Комбінування декількох фільтрів
Часто виникає потреба застосувати більше ніж одне правило одночасно. Для цього можна об'єднувати фільтри або використовувати логічні оператори "And" (&) та "Or" (|).
good_carat_df = df.filter((df.carat == 0.23) & (df.cut == "Good"))
display(good_carat_df)
Під час поєднання фільтрів за допомогою & або | завжди обгортайте кожну окрему умову в дужки. Це гарантує, що Spark правильно обробить логіку.
Вибірка та фільтрація в одному кроці
Оскільки Spark використовує "fluent" API, ці команди можна об'єднувати в один рядок коду. Це дуже поширений підхід у професійній інженерії даних:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Перевірка результатів
Після кожної вибірки або фільтрації корисно виконувати count(). Якщо ви починаєте з 10 000 рядків, а після фільтрації отримуєте 0, це може означати, що ваша умова фільтрації занадто сувора або містить помилку у рядкових значеннях.
1. Який метод слід використати, якщо потрібно вибрати лише 3 стовпці з таблиці, що містить 50 стовпців?
2. У Python, який правильний спосіб відфільтрувати рядки, де "Total_Profit" більше за 1000?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат