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
datautilizando 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
datautilizando 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