1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[Python] Loop não funciona para a lista completa - Python

Discussão em 'Python' iniciado por Stack, Setembro 25, 2021.

  1. Stack

    Stack Membro Participativo

    Eu estou com um problema que acredito ser simples mas que está travando todo o desenvolvimento do meu código.

    Esse é o código

    from bs4 import BeautifulSoup
    from urllib.request import urlopen
    import pandas as pd
    import matplotlib as mpl
    import numpy as np
    import matplotlib.pyplot as plt

    #create a list of each year where data will be extract

    years_list = [2001, 2002, 2008, 2012, 2015,2018, 2020 , 2021]

    #list of top 10 players in rating of 2020

    player_list = ['Mac Jones', 'Aaron Rodgers', 'Deshaun Watson', 'Patrick Mahomes',
    'Josh Allen', 'Ryan Tannehill', 'Drew Bress', 'Russel Wilson',
    'Kirk Cousins', 'Tom Brady', 'Derek Carr']
    #selecting stats
    cols = ['Player', 'Tm','Cmp%', 'Yds', 'TD', 'Int', 'Y/A', 'Rate', 'G']
    df_list = []

    #loop for extract data
    for year in years_list:
    url_mac = f'https://www.pro-football-reference.com/years/{year}/passing.htm'
    temp_df = pd.read_html(url_mac)[0][cols]
    temp_df['Season'] = year

    df_list.append(temp_df)
    print(f'Collect: {year}')


    data_radar = pd.concat(df_list)

    #renaming columns
    new_columns = data_radar.columns.values
    new_columns[-6] = '_sack'
    data_radar.columns = new_columns

    #picking top 10 qb in rating stats in last season
    mid_data = pd.DataFrame()
    for player in player_list:
    mid_data = mid_data.append(data_radar[data_radar['Player'] == player])

    #Converting columns from object to floats
    cols = ['Cmp%', 'Yds', 'Int', 'Y/A','Rate', 'G', 'Season']
    final_data = pd.DataFrame()
    for i in cols:
    final_data = pd.to_numeric(mid_data)


    final_data = mid_data[['Player', 'Tm'] + cols]
    final_data.sort_values(by = 'Season', ascending=False)
    final_data.drop_duplicates(subset = 'Player')


    O problema é que ele não está pegando os dados dos jogadores em todos os anos que estão na year_list. Por exemplo, o jogador Tom Brady me retorna somente 4 anos enquanto na verdade ele deveria me retornar dados de todos os anos, já que ele está na liga desde 2001, do jogador 'Patrick Mahomes' só retorna os dados do ano 2021, e assim por diante.

    Não tenho muita ideia de como resolver isso.

    Continue reading...

Compartilhe esta Página