Python 熊猫数据框简单统计
我想找出每个赛季球队每场比赛的平均得分 <> P>是否有一个简单的方法来考虑团队赢得代码< WSCOR> <代码>的情况,当团队失去了代码> LSECK?< /P>Python 熊猫数据框简单统计,python,pandas,dataframe,data-analysis,Python,Pandas,Dataframe,Data Analysis,我想找出每个赛季球队每场比赛的平均得分 P>是否有一个简单的方法来考虑团队赢得代码< WSCOR> 的情况,当团队失去了代码> LSECK?< /P> Season Daynum Wteam Wscore Lteam Lscore Wloc Numot 0 1985 20 1228 81 1328 64 N 0 1 1985 25 1106 77 1354
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之间,并告诉您游戏在哪一天进行。它表示与seasures.csv
文件中的dayzero
日期的偏移量。例如,文件中的第一个游戏是daynum=20。再加上season.csv
文件中的事实,第0天是1984年10月29日,这意味着第一场比赛是在20天后,即1984年11月18日进行的。没有任何球队在给定日期玩过一场以上的比赛,因此如果您需要唯一的密钥,您可以使用此事实。为了实现这种独特性,我们必须调整一场比赛的日期。2008年3月,SEC季后赛锦标赛不得不将一场比赛(乔治亚-肯塔基州)改期到下一天,因此乔治亚州实际上不得不在同一天打两场比赛。为了加强这种独特性,我们将乔治亚-肯塔基州比赛的比赛日期移回其原始日期
wteam
-这标识赢得比赛的球队的id号,如teams.csv
文件中所列。无论比赛是主队还是客队获胜,wteam
始终识别获胜球队
wscore
-这标识了获胜团队的得分数量
lteam
-标识输掉比赛的球队的id号
lscore
-这表示败队得分的数量
numot
-表示游戏中的加班时间,整数为0或更高
wloc
-标识获胜团队的位置。如果获胜的球队是主队,该值将为H
。如果获胜队是客队,则该值将为A
。如果是在中性场地上进行的,则该值将为N
。有时不清楚该场地是否应被视为中立场地,因为它靠近一支球队的主场,甚至在比赛期间位于他们的主场,但为了确定这一点,我们仅使用了Kenneth Massey当前状态下的数据,@
标志与获胜队、败队一起列出,或者两个团队都没有。这里有一个方法可以做到这一点
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
仅包含获胜团队列表的数据框
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
仅包含损失团队列表的数据帧
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
将数据框与赢家和输家团队列表合并
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
这将是您需要分组并计算平均值的列表
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
您可以更新数据帧示例吗?我不明白那一行数字是干什么的。到目前为止你试过什么了吗?如果是,你面临什么问题?嗨,欢迎来到so。请阅读,然后尝试通过编辑问题来改进您的问题,关注具体问题并给出详细信息(代码、配置、错误消息、您面临的确切问题)。