Python 熊猫数据框简单统计

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

我想找出每个赛季球队每场比赛的平均得分

<> 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       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。请阅读,然后尝试通过编辑问题来改进您的问题,关注具体问题并给出详细信息(代码、配置、错误消息、您面临的确切问题)。