我对python完全陌生,基本上对一般编程都是陌生的。 我有一个大学作业,包括扫描CSV文件并将每一行存储为一个列表。我的文件是英超赛季的足球数据列表,因此CSV文件的结构如下:
date; home; away; homegoals; awaygoals; result;
01/01/2012; Man United; Chelsea; 1; 2; A;
01/02/2012; Man City; Arsenal; 1; 1; D;
等等等等
当每列存储在一个变量中时:
date = row[0]
home = row[1]
away = row[2]
homegoals = row[4]
awaygoals = row[5]
因此,我现在可以访问,例如,所有游戏有三个以上的目标
totalgoals = homegoals+awaygoals
if totalgoals > 3:
print(date, home, homegoals, awaygoals, away)
我可以访问特定团队的所有游戏:
if (home or away) == "Man United":
print(date, home, homegoals, awaygoals, away)
很基本,我知道。 我希望能够更深入地跟踪事情。所以举例来说,我想能够访问的结果,球队没有赢得了3场比赛等。 我想知道一支球队是不是得分很低。你知道吗
现在,从网上阅读了一段时间,在我看来,你这样做的方式是结合字典和列表。你知道吗
迄今为止:
import csv
with open('premier_league_data_1819.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=';')
dates = []
hometeams = []
awayteams =[]
homegoals = []
awaygoals = []
results = []
next(readCSV)
for row in readCSV:
date = row[0]
home = row[1]
away = row[2]
hg = int(row[3]) #Home Goals
ag = int(row[4]) #Away Goals
ftr = row[6] #Result
dates.append(date)
hometeams.append(home)
awayteams.append(away)
homegoals.append(hg)
awaygoals.append(ag)
results.append(ftr)
如果有人能给我指出正确的方向,我将不胜感激。 这将是很好的,知道最好的方式来实现这一点,所以我不转我的车轮越来越困惑。你知道吗
我认为首先需要将所有球队的比赛存储在一个列表中,然后将该列表添加到一个字典中,该字典以球队名称作为键保存所有球队的记录。你知道吗
还有一种方法^{} ,您可以这样使用:
请注意,在您的csv分隔符后有一个空格,如果您可以将csv文件更改为:
或者,使用
很好,您已经在使用
csv
模块了—它将为您节省大量解析数据的麻烦。您还可以检查该模块中的DictReader
类—它将返回带有列名的行作为键,而无需进行下面的额外处理。你想把每场比赛的数据分组,这样你就可以进行聚合了。我会用这样的方法来解决这个问题:现在您有了一个字典列表,每个字典代表一个游戏,您可以更自然地与它们交互:
相关问题 更多 >
编程相关推荐