Ниже приведен код, и я просто показываю в качестве примера 2015–2016 годы. Я на самом деле пишу тот же код для набора данных 2015-2019. Это работает для меня, но, как вы можете видеть, оно давно затянуто, так как я должен продолжать повторять коды (до набора данных 2019 года).
Вопрос: 1. Каков будет лучший и эффективный способ написания этого?
df2015 = pd.read_csv('EPL_20152016.csv', parse_dates=['Date'], dayfirst=True,
usecols=['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'FTR', 'BbAv>2.5','BbAv<2.5'])
df2015.rename(columns={'BbAv>2.5': 'Avg>2.5', 'BbAv<2.5': 'Avg<2.5'},inplace=True)
df2015['FTTG'] = df2015['FTHG'] + df2015['FTAG']
df2015['%Avg>2.5'] = 100* (1 / df2015['Avg>2.5'])
df2015['%Avg<2.5'] = 100* (1 / df2015['Avg<2.5'])
df2015['%TotalAvg><2.5'] = df2015['%Avg>2.5'] + df2015['%Avg<2.5']
df2015['%Vig><2.5'] = df2015['%TotalAvg><2.5'] - 100
#df2015 = df2015[['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'FTTG', 'FTR','Avg>2.5','Avg<2.5',
df2015 = df2015.reindex(columns=['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'FTTG', 'FTR','Avg>2.5','Avg<2.5','%Avg>2.5', '%Avg<2.5', '%TotalAvg><2.5', '%Vig><2.5'])
df2016 = pd.read_csv('EPL_20162017.csv', parse_dates=['Date'], dayfirst=True,
usecols=['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'FTR', 'BbAv>2.5','BbAv<2.5'])
df2016.rename(columns={'BbAv>2.5': 'Avg>2.5', 'BbAv<2.5': 'Avg<2.5'},inplace=True)
df2016['FTTG'] = df2016['FTHG'] + df2016['FTAG']
df2016['%Avg>2.5'] = 100* (1 / df2016['Avg>2.5'])
df2016['%Avg<2.5'] = 100* (1 / df2016['Avg<2.5'])
df2016['%TotalAvg><2.5'] = df2016['%Avg>2.5'] + df2016['%Avg<2.5']
df2016['%Vig><2.5'] = df2016['%TotalAvg><2.5'] - 100
df2016 = df2016.reindex(columns=['Date', 'HomeTeam', 'AwayTeam', 'FTHG', 'FTAG', 'FTTG', 'FTR','Avg>2.5','Avg<2.5','%Avg>2.5', '%Avg<2.5', '%TotalAvg><2.5', '%Vig><2.5'])
Тот же код, что и для наборов данных 2017,2018 и 2019. А потом я использую pd.concat и .set_index
df20152019 = pd.concat([df2015, df2016, df2017, df2018, df2019]).set_index('Date')