Складне групування
Іноді виявляється, що вбудованих функцій pandas, таких як .mean()
або .min()
, недостатньо під час групування.
Зверніть увагу на стовпець 'Length'
; тут вказано тривалість польоту в хвилинах. Уявіть, що потрібно обчислити максимальний час у годинах для елементів з однаковим значенням у стовпці 'Flight'
, а потім у 'Airline'
. Для цього можна знайти максимальне значення стовпця 'Length'
для кожного ключа групування, а потім поділити його на 60
. Ознайомтеся з прикладом і поясненням нижче.
1234import 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))
Пояснення:
Ми трохи ускладнили приклад із попередніх розділів, тому при групуванні даних усе залишається так само; звернемося до методу .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
— дозволяє застосувати певну функцію до потрібних стовпців;- у функції
lambda
аргументом єx
, а виразом —x['Length'].max()/60
. Тобто функція знаходить максимальне значення для кожного ключа групування та ділить агреговане значення на60
.
Swipe to start coding
Ваше завдання — проаналізувати тривалість польотів з урахуванням аеропорту, авіакомпанії та дня тижня.
Вам потрібно згрупувати дані, щоб визначити мінімальний загальний час польоту (суму стовпців 'Length'
та 'Time'
) для кожної унікальної комбінації аеропорту вильоту, авіакомпанії та дня тижня.
Дотримуйтесь алгоритму крок за кроком:
- Збережіть список стовпців
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
та'Length'
(саме в такому порядку) у зміннійcolumns
. - Витягніть ці стовпці з
data
за допомогою квадратних дужок (data[columns]
). - Згрупуйте набір даних за
'AirportFrom'
,'Airline'
та'DayOfWeek'
(саме в такому порядку). - Усередині методу
.groupby()
застосуйте функцію.apply()
для обчислення суми стовпців'Length'
та'Time'
для кожної групи, а потім знайдіть мінімальне значення цієї суми. - Присвойте результат змінній
data_flights
. - Виведіть перші 10 рядків отриманої Series за допомогою
.head(10)
.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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?
Awesome!
Completion rate improved to 3.03
Складне групування
Свайпніть щоб показати меню
Іноді виявляється, що вбудованих функцій pandas, таких як .mean()
або .min()
, недостатньо під час групування.
Зверніть увагу на стовпець 'Length'
; тут вказано тривалість польоту в хвилинах. Уявіть, що потрібно обчислити максимальний час у годинах для елементів з однаковим значенням у стовпці 'Flight'
, а потім у 'Airline'
. Для цього можна знайти максимальне значення стовпця 'Length'
для кожного ключа групування, а потім поділити його на 60
. Ознайомтеся з прикладом і поясненням нижче.
1234import 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))
Пояснення:
Ми трохи ускладнили приклад із попередніх розділів, тому при групуванні даних усе залишається так само; звернемося до методу .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
— дозволяє застосувати певну функцію до потрібних стовпців;- у функції
lambda
аргументом єx
, а виразом —x['Length'].max()/60
. Тобто функція знаходить максимальне значення для кожного ключа групування та ділить агреговане значення на60
.
Swipe to start coding
Ваше завдання — проаналізувати тривалість польотів з урахуванням аеропорту, авіакомпанії та дня тижня.
Вам потрібно згрупувати дані, щоб визначити мінімальний загальний час польоту (суму стовпців 'Length'
та 'Time'
) для кожної унікальної комбінації аеропорту вильоту, авіакомпанії та дня тижня.
Дотримуйтесь алгоритму крок за кроком:
- Збережіть список стовпців
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
та'Length'
(саме в такому порядку) у зміннійcolumns
. - Витягніть ці стовпці з
data
за допомогою квадратних дужок (data[columns]
). - Згрупуйте набір даних за
'AirportFrom'
,'Airline'
та'DayOfWeek'
(саме в такому порядку). - Усередині методу
.groupby()
застосуйте функцію.apply()
для обчислення суми стовпців'Length'
та'Time'
для кожної групи, а потім знайдіть мінімальне значення цієї суми. - Присвойте результат змінній
data_flights
. - Виведіть перші 10 рядків отриманої Series за допомогою
.head(10)
.
Рішення
Дякуємо за ваш відгук!
single