我想找到每个赛季每场比赛球队平均得分。
是否有一种简单的方法既可以考虑当团队赢Wscore
时又可以当团队输Lscore
时的情况?
Season Daynum Wteam Wscore Lteam Lscore Wloc Numot
0 1985 20 1228 81 1328 64 N 0
1 1985 25 1106 77 1354 70 H 0
season
-这是seasons.csv中相关条目的年份(最后一场比赛发生的年份)
daynum
-该整数始终在0到132的范围内,并告诉您玩游戏的星期几。它表示与dayzero
文件中的seasons.csv
日期的偏移量。例如,文件中的第一个游戏是daynum = 20。结合season.csv
文件中的事实,零日为1984年10月29日,这意味着第一场比赛是在20天后(即1984年11月18日)进行的。在给定的日期,没有团队玩过一场以上的比赛,因此如果您需要唯一的钥匙,则可以使用此事实。为了实现这种独特性,我们必须调整一个游戏的日期。 2008年3月,SEC季后赛不得不将一场比赛(格鲁吉亚-肯塔基州)重新安排到第二天,因此乔治亚州实际上必须在同一天打两场比赛。为了实现这种独特性,我们将佐治亚州-肯塔基州游戏的游戏日期改回其原始日期。
wteam
-teams.csv
文件中列出的标识赢得比赛的球队的ID号。无论比赛是主队还是客队获胜,wteam
始终会确定获胜的球队。
wscore
-标识获胜团队的得分点。
lteam
-标识输掉比赛的球队的ID号。
lscore
-这标识了输球队得分的数量。
numot
-这表示游戏中的超时时间,整数0或更高。
wloc
-标识获胜团队的location
。如果获胜的团队是主队,则此值为H
。如果获胜的团队是客队,则该值为A
。如果在中立的球场上进行比赛,则此值为N
。有时,不清楚该地点是否应视为中立,因为它在一个团队的主场附近,甚至在比赛期间也在他们的场上,但是对于这种确定,我们仅使用肯尼思·梅西数据在当前状态下,{ {1}}标志与获胜球队,失败球队或没有球队一同列出。
答案 0 :(得分:1)
这是一种执行此操作的方法。
import pandas as pd
cols = ['Season','Daynum','Wteam','Wscore','Lteam','Lscore','Wloc','Numot']
colx = ['Season','Daynum','Team', 'Score']
dt = [[1985, 20, 1228, 81, 1328, 64, 'N', 0],
[1985, 20, 1354, 77, 1228, 70, 'H', 0],
[1985, 25, 1106, 77, 1354, 70, 'H', 0],
[1985, 25, 1328, 82, 1106, 78, 'N', 0],
[1985, 21, 1106, 77, 1228, 65, 'N', 0]]
df = pd.DataFrame(data=dt,columns=cols)
#take the first 4 columns into d1. Keep only Season, Wteam, Wscore
#rename Wteam and Wscore as Team and Score
d1 = df.iloc[:,:4]
d1 = d1.rename(columns={'Wteam': 'Team', 'Wscore': 'Score'})
d1 = d1.drop(columns = ['Daynum'])
#take the first 4 columns into d1. Keep only Season, Lteam, Lscore
#rename Lteam and Lscore as Team and Score
d2 = df.iloc[:,:6]
d2 = d2.drop(columns =['Daynum','Wteam','Wscore'])
d2 = d2.rename(columns={'Lteam': 'Team', 'Lscore': 'Score'})
#Now you have two dataframes that have common name but subsets of original dataframe
d3 = pd.concat([d1,d2])
#Group by Season and Team to get the average Score for each team by each Season
print(d3 = d3.groupby(['Season','Team']).mean())
#To show you the breakup of each set, I am printing all the dataframes
print(df)
print(d1)
print(d2)
print(d3)
按赛季和球队划分的平均得分数据框
Score
Season Team
1985 1106 77.333333
1228 72.000000
1328 73.000000
1354 73.500000
原始数据框:
Season Daynum Wteam Wscore Lteam Lscore Wloc Numot
0 1985 20 1228 81 1328 64 N 0
1 1985 20 1354 77 1228 70 H 0
2 1985 25 1106 77 1354 70 H 0
3 1985 25 1328 82 1106 78 N 0
4 1985 21 1106 77 1228 65 N 0
仅包含Win Team列表的DataFrame
Season Team Score
0 1985 1228 81
1 1985 1354 77
2 1985 1106 77
3 1985 1328 82
4 1985 1106 77
仅包含损失小组列表的数据框
Season Team Score
0 1985 1328 64
1 1985 1228 70
2 1985 1354 70
3 1985 1106 78
4 1985 1228 65
合并了DataFrame和赢与输团队的列表
这是您需要分组并计算平均值的列表
Season Team Score
0 1985 1228 81
1 1985 1354 77
2 1985 1106 77
3 1985 1328 82
4 1985 1106 77
0 1985 1328 64
1 1985 1228 70
2 1985 1354 70
3 1985 1106 78
4 1985 1228 65