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' для кожної групи, щоб визначити, скільки часу може тривати рейс із затримкою. Дотримуйтесь алгоритму для виконання завдання:

Групування даних:

  • Збережіть список стовпців 'AirportFrom', 'Airline', 'Time' та 'Length' (саме в такому порядку) у змінній columns;
  • Витягніть columns із data;
  • Порядок важливий у методі .groupby(); використовуйте стовпці 'AirportFrom' та 'Airline' саме в такому порядку;
  • Застосуйте функцію до значень набору даних із однаковими ключами групування;
  • Обчисліть суму двох стовпців: 'Length' та 'Time'. Потім знайдіть їхній мінімум.

Рішення

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

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

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

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

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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' для кожної групи, щоб визначити, скільки часу може тривати рейс із затримкою. Дотримуйтесь алгоритму для виконання завдання:

Групування даних:

  • Збережіть список стовпців 'AirportFrom', 'Airline', 'Time' та 'Length' (саме в такому порядку) у змінній columns;
  • Витягніть columns із data;
  • Порядок важливий у методі .groupby(); використовуйте стовпці 'AirportFrom' та 'Airline' саме в такому порядку;
  • Застосуйте функцію до значень набору даних із однаковими ключами групування;
  • Обчисліть суму двох стовпців: 'Length' та 'Time'. Потім знайдіть їхній мінімум.

Рішення

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

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

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

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

single

some-alt