Agrupamento Complicado
Às vezes, não estamos satisfeitos com as funções internas do pandas, como .mean()
ou .min()
ao realizar agrupamentos.
Observe a coluna 'Length'
; aqui, temos a duração do voo em minutos. Imagine que desejamos calcular o tempo máximo em horas para itens que possuem o mesmo valor na coluna 'Flight'
e, em seguida, na coluna 'Airline'
. Para isso, podemos calcular o valor máximo da coluna 'Length'
para cada chave de grupo e depois dividir por 60
. Veja o exemplo e a explicação abaixo.
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))
Explicação:
Tornamos o exemplo dos capítulos anteriores um pouco mais complexo, então, com o agrupamento de dados, tudo permanece igual; vamos focar no método .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
- permite aplicar uma função específica às colunas necessárias;- na função
lambda
,x
é o argumento ex['Length'].max()/60
é a expressão. Assim, a função encontra o valor máximo para cada chave de grupo e divide o valor agregado por60
.
Swipe to start coding
Sua tarefa aqui é analisar as durações dos voos considerando aeroporto, companhia aérea e dia da semana.
Você irá agrupar os dados para determinar o menor tempo total de voo (a soma de 'Length'
e 'Time'
) para cada combinação única de aeroporto de partida, companhia aérea e dia da semana.
Siga o algoritmo passo a passo:
- Armazene a lista de colunas
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
e'Length'
(nesta ordem) na variávelcolumns
. - Extraia essas colunas de
data
utilizando a notação de colchetes (data[columns]
). - Agrupe o conjunto de dados por
'AirportFrom'
,'Airline'
e'DayOfWeek'
(nesta ordem exata). - Dentro do método
.groupby()
, aplique a função.apply()
para calcular a soma das colunas'Length'
e'Time'
para cada grupo e, em seguida, encontre o valor mínimo dessa soma. - Atribua o resultado a uma variável chamada
data_flights
. - Exiba as 10 primeiras linhas da Series resultante utilizando
.head(10)
.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.03
Agrupamento Complicado
Deslize para mostrar o menu
Às vezes, não estamos satisfeitos com as funções internas do pandas, como .mean()
ou .min()
ao realizar agrupamentos.
Observe a coluna 'Length'
; aqui, temos a duração do voo em minutos. Imagine que desejamos calcular o tempo máximo em horas para itens que possuem o mesmo valor na coluna 'Flight'
e, em seguida, na coluna 'Airline'
. Para isso, podemos calcular o valor máximo da coluna 'Length'
para cada chave de grupo e depois dividir por 60
. Veja o exemplo e a explicação abaixo.
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))
Explicação:
Tornamos o exemplo dos capítulos anteriores um pouco mais complexo, então, com o agrupamento de dados, tudo permanece igual; vamos focar no método .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
- permite aplicar uma função específica às colunas necessárias;- na função
lambda
,x
é o argumento ex['Length'].max()/60
é a expressão. Assim, a função encontra o valor máximo para cada chave de grupo e divide o valor agregado por60
.
Swipe to start coding
Sua tarefa aqui é analisar as durações dos voos considerando aeroporto, companhia aérea e dia da semana.
Você irá agrupar os dados para determinar o menor tempo total de voo (a soma de 'Length'
e 'Time'
) para cada combinação única de aeroporto de partida, companhia aérea e dia da semana.
Siga o algoritmo passo a passo:
- Armazene a lista de colunas
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
e'Length'
(nesta ordem) na variávelcolumns
. - Extraia essas colunas de
data
utilizando a notação de colchetes (data[columns]
). - Agrupe o conjunto de dados por
'AirportFrom'
,'Airline'
e'DayOfWeek'
(nesta ordem exata). - Dentro do método
.groupby()
, aplique a função.apply()
para calcular a soma das colunas'Length'
e'Time'
para cada grupo e, em seguida, encontre o valor mínimo dessa soma. - Atribua o resultado a uma variável chamada
data_flights
. - Exiba as 10 primeiras linhas da Series resultante utilizando
.head(10)
.
Solução
Obrigado pelo seu feedback!
single