h3llh0und

Dia 4 de 100 - Web Scraping com Python - Parte 3 de 3

26 Oct 2019

Dando início à parte 3 de nossa jornada sobre Web Scraping com Python no dia 4 de 100, é uma vez estando com nossos dados baixados e armazenados no dataframe df, representando as estatísticas anuais da liga norte-americana de basquete (NBA) extraídas do site Sports Reference. Lembrando que os dados foram adquiridos segundo seus respectivos anos de ocorrência (2015 a 2019 - escolha do autor), manipularemos agora este dataframe para extrair dele informações de interesse e mostrar exemplos de como usar e analisar estatisticamente seus resultados.

Exemplo de uso dos dados

O primeiro e importante passo se executar no processo está relacionado a uma filtragem dos dados adquiridos, para evitar inconsistências ou duplicidades. Independentemente da confiabilidade da fonte, recomenda-se que esta etapa seja levada a cabo para qur nao haja erros ou incoerências nos resultados da análise dos dados.

Filtragem de dados

Neste ponto, note-se que, na tabela original no site, há nomes de colunas que se repetem em uma mesma tupla. Uma forma de eliminar essas duplicidades do dataframe da seguinte maneira:

# Exemplo com a coluna 'Rk'
# Armazenando os valores de _index_ a serem eliminados.
drop_indexes = df[df['Rk'] == 'Rk'].index
# Eliminando os valores de __index_ armazenados acima
df.drop(drop_indexes, inplace=True) 

Homogeneização dos tipos de dados

O próximo passo após a filtragem é a conversão dos tipos de dados para homogeneizar valores e tipos no dataframe - exemplo: converter valores numéricos armazenados em forma de texto para o formato numérico.

numeric_cols = df.columns.drop(['Player','Pos','Tm'])
df[numeric_cols] = df[numeric_cols].apply(pd.to_numeric)

Bibliotecas utilizadas

  • Matplotlib; e
  • Seaborn.
    Ambas as bibliotecas foram utilizadas para gerar visualizações.

Exemplo de plotagem de dados - Análise da média de arremessos de 3 pontos convertidos por ano na NBA

E extrato de código a seguir plota um gráfico com a descrição acima.

sns.barplot(x=df['Year'], y=df['3PA'])
plt.show()

Sua saída para este contexto é:


Gráfico de média de tentativas de arremessos de 3 pontos por temporada

A partir da análise do gráfico anterior, nota-se que o volume de bolas de 3 aumentou ano após ano (exceção feita à análise prejudicada entre 2017 e 2018). Dessa forma, poderiamos questionar: quais são os jogadores que mais acertaram nesse período? Verifiquemos os 5 maiores arremessadores com manipulações do Pandas. O extrato de código abaixo traria a resposta:

# Ordenar o dataframe por 3PA em ordem decrescente
ord_df = df.sort_values(by=['3P'], axis=0, ascending=False)
# Exibe os 5 maiores arremessadores
ord_df[['Player', '3P', 'Year']].head()

Conclusão

Bom, espero que este passo-a-passo tenha elucidado o funcionamento do processo “básico” de Web Scraping com Python e possa serv ir de pontapé inicial para um estudo mais aprofundado sobre o tema. Como disse inicialmente, o intuito nunca foi esgotar o tema, mas sim prover um ponto de partida que desperte o interesse no tópico.

Em caso de alguma eventual dúvida, sigo à disposição para discutir o assunto.

Ahh.. E, para amanhã, vamos para um tema mais hackingtheworld-like. 😜

#100daysofcode #day4of100 #programming #coding #code #python #developer #coder #programmer #peoplewhocode #hacking #ethicalhacking #hacktheplanet #webscraping