Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Складне групування | Агрегування Даних
Просунуті Техніки в Pandas

bookСкладне групування

Іноді виявляється, що вбудованих функцій pandas, таких як .mean() або .min(), недостатньо під час групування.

Зверніть увагу на стовпець 'Length'; тут вказано тривалість польоту в хвилинах. Уявіть, що потрібно обчислити максимальний час у годинах для елементів з однаковим значенням у стовпці 'Flight', а потім у 'Airline'. Для цього можна знайти максимальне значення стовпця 'Length' для кожного ключа групування, а потім поділити його на 60. Ознайомтеся з прикладом і поясненням нижче.

1234
import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
copy

Пояснення:

Ми трохи ускладнили приклад із попередніх розділів, тому при групуванні даних усе залишається так само; звернемося до методу .apply().

.apply(lambda x: x['Length'].max()/60)
  • .apply() — дозволяє застосувати певну функцію до потрібних стовпців;
  • у функції lambda аргументом є x, а виразом — x['Length'].max()/60. Тобто функція знаходить максимальне значення для кожного ключа групування та ділить агреговане значення на 60.
Завдання

Swipe to start coding

Ваше завдання — проаналізувати тривалість польотів з урахуванням аеропорту, авіакомпанії та дня тижня. Вам потрібно згрупувати дані, щоб визначити мінімальний загальний час польоту (суму стовпців 'Length' та 'Time') для кожної унікальної комбінації аеропорту вильоту, авіакомпанії та дня тижня.

Дотримуйтесь алгоритму крок за кроком:

  1. Збережіть список стовпців 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' та 'Length' (саме в такому порядку) у змінній columns.
  2. Витягніть ці стовпці з data за допомогою квадратних дужок (data[columns]).
  3. Згрупуйте набір даних за 'AirportFrom', 'Airline' та 'DayOfWeek' (саме в такому порядку).
  4. Усередині методу .groupby() застосуйте функцію .apply() для обчислення суми стовпців 'Length' та 'Time' для кожної групи, а потім знайдіть мінімальне значення цієї суми.
  5. Присвойте результат змінній data_flights.
  6. Виведіть перші 10 рядків отриманої Series за допомогою .head(10).

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 3
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain what the output of this code will look like?

How does the `.apply()` method differ from using `.agg()` in this context?

Can you show how to reset the index of the resulting DataFrame?

close

Awesome!

Completion rate improved to 3.03

bookСкладне групування

Свайпніть щоб показати меню

Іноді виявляється, що вбудованих функцій pandas, таких як .mean() або .min(), недостатньо під час групування.

Зверніть увагу на стовпець 'Length'; тут вказано тривалість польоту в хвилинах. Уявіть, що потрібно обчислити максимальний час у годинах для елементів з однаковим значенням у стовпці 'Flight', а потім у 'Airline'. Для цього можна знайти максимальне значення стовпця 'Length' для кожного ключа групування, а потім поділити його на 60. Ознайомтеся з прикладом і поясненням нижче.

1234
import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
copy

Пояснення:

Ми трохи ускладнили приклад із попередніх розділів, тому при групуванні даних усе залишається так само; звернемося до методу .apply().

.apply(lambda x: x['Length'].max()/60)
  • .apply() — дозволяє застосувати певну функцію до потрібних стовпців;
  • у функції lambda аргументом є x, а виразом — x['Length'].max()/60. Тобто функція знаходить максимальне значення для кожного ключа групування та ділить агреговане значення на 60.
Завдання

Swipe to start coding

Ваше завдання — проаналізувати тривалість польотів з урахуванням аеропорту, авіакомпанії та дня тижня. Вам потрібно згрупувати дані, щоб визначити мінімальний загальний час польоту (суму стовпців 'Length' та 'Time') для кожної унікальної комбінації аеропорту вильоту, авіакомпанії та дня тижня.

Дотримуйтесь алгоритму крок за кроком:

  1. Збережіть список стовпців 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' та 'Length' (саме в такому порядку) у змінній columns.
  2. Витягніть ці стовпці з data за допомогою квадратних дужок (data[columns]).
  3. Згрупуйте набір даних за 'AirportFrom', 'Airline' та 'DayOfWeek' (саме в такому порядку).
  4. Усередині методу .groupby() застосуйте функцію .apply() для обчислення суми стовпців 'Length' та 'Time' для кожної групи, а потім знайдіть мінімальне значення цієї суми.
  5. Присвойте результат змінній data_flights.
  6. Виведіть перші 10 рядків отриманої Series за допомогою .head(10).

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 3
single

single

some-alt