Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Agrupamento Complicado | Agregando Dados
Técnicas Avançadas em Pandas

bookAgrupamento 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.

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

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 e x['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 por 60.
Tarefa

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:

  1. Armazene a lista de colunas 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' e 'Length' (nesta ordem) na variável columns.
  2. Extraia essas colunas de data utilizando a notação de colchetes (data[columns]).
  3. Agrupe o conjunto de dados por 'AirportFrom', 'Airline' e 'DayOfWeek' (nesta ordem exata).
  4. 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.
  5. Atribua o resultado a uma variável chamada data_flights.
  6. Exiba as 10 primeiras linhas da Series resultante utilizando .head(10).

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

close

Awesome!

Completion rate improved to 3.03

bookAgrupamento 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.

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

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 e x['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 por 60.
Tarefa

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:

  1. Armazene a lista de colunas 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' e 'Length' (nesta ordem) na variável columns.
  2. Extraia essas colunas de data utilizando a notação de colchetes (data[columns]).
  3. Agrupe o conjunto de dados por 'AirportFrom', 'Airline' e 'DayOfWeek' (nesta ordem exata).
  4. 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.
  5. Atribua o resultado a uma variável chamada data_flights.
  6. Exiba as 10 primeiras linhas da Series resultante utilizando .head(10).

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3
single

single

some-alt