1
resposta

Como relacionar colunas de dois DataFrames diferentes?

Olá, estou tentando fazer um trabalho relativamente simples para trabalhar o que aprendi até agora na formação "Python para Data Science".

Sou fã de Formula 1 também, então uni as duas coisas.

Estou tentando fazer um gráfico simples que relaciona a volta mais rápida de um certo circuito.

Os dados que consegui no Kaggle reúnem os dados da F1 desde 1950 até o presente ano, 2020. Creio que por conta disso, são vários arquivos .csv (pilotos, circuitos, corridas, qualificações, times, etc.).

Já consegui filtrar bastante coisa, tenho no DataFrame que quero trabalhar encima somente as voltas mais rápidas. Porém, preciso das voltas mais rápidas de um determinado circuito.

E também já consegui filtrar todos os IDs das corridas desse determinado circuito, que é o dado que preciso para conseguir somente as voltas mais rápidas. Porém consegui esses dados em um DataFrame diferente do que preciso trabalhar.

Minha pergunta é: como posso relacionar essas duas colunas desses dois DataFrames diferentes?

(deixarei meu código abaixo, creio que ficará mais claro com o código)

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

pilotos = pd.read_csv('Dados F1/drivers.csv')
qualificacao = pd.read_csv('Dados F1/qualifying.csv')
circuitos = pd.read_csv('Dados F1/circuits.csv')
corridas = pd.read_csv('Dados F1/races.csv')

pole_position = qualificacao.position == 1
poles = qualificacao[pole_position]
poles

circuitos.head()

id_das_corridas_do_bahrein = corridas.query('circuitId == 3')

id_das_corridas_do_bahrein = id_das_corridas_do_bahrein.raceId

id_das_corridas_do_bahrein

Preciso relacionar a coluna "raceId" do DataFrame "Poles" com a Series (ou DataFrame, depende do que for correto) "id_das_corridas_do_bahrein".

Grato desde já!

1 resposta

Oi Doglas! Tudo bem com você?

Peço desculpas pela demora em dar um retorno.

No pandas, existe uma função chamada crosstab que cria uma tabulação cruzada simples de duas (ou mais) colunas. Por padrão, essa função relaciona essas duas colunas calculando a frequência dos fatores presentes nelas. Entretanto, caso você deseje relacionar essas colunas de outra forma basta incluir uma função de agregação.

Vou te mostrar um exemplo para entender melhor. Observe:

Exemplo de utilização da função crosstab

No caso da imagem, eu utilizei a função crosstab para relacionar as colunas Cor e Sexo do DataFrame dados, e descobrir qual é a frequência dos Sexos 0 e 1 nas cores 0, 2, 4, 6 e 8. Mas caso você queria relacionar seus dados de outra maneira, por exemplo, pela média, basta você acrescentar o parâmetro aggfunc = 'mean'.

Uma outra função do pandas que também é utilizada para relacionar colunas é a pivot_table. Observe um exemplo utilizando ela, mas dessa vez relacionando os dados com base na média:

Exemplo de utilização da função cpivot_table

Nesse caso eu relacionei a coluna Anos de Estudo com a coluna Cor e apliquei a função média, obtendo um DataFrame com a média de anos de estudos para cada uma das cores.

De um modo geral, a principal diferença entre o crosstab e o pivot_table é que pivot_table espera que seus dados de entrada já sejam um DataFrame. A função crosstab, por sua vez, não tem essa exigência.

As duas funções mostradas acima ainda possuem alguns outros parâmetros, como alterar o nome das colunas e dos índices, dentre outros. Caso queira saber um pouco mais sobre elas você pode pesquisar nas documentações:

Espero ter ajudado. Qualquer dúvida estou por aqui, tá bom?

Bons estudos!