在python中,如何在csv中每次出现X值时查找某些字符串?
我创建了一个.csv,其中包含了自1979年以来NHL每年征召的每名球员的数据。我的csv中的9000行如下所示:在python中,如何在csv中每次出现X值时查找某些字符串?,python,list,csv,find-occurrences,Python,List,Csv,Find Occurrences,我创建了一个.csv,其中包含了自1979年以来NHL每年征召的每名球员的数据。我的csv中的9000行如下所示: 1979,Rob Ramage (D),ON 1979,Perry Turnbull (LW),AB 1979,Raymond Bourque (D),QC 2017,Kristian Røykås Marthinsen (LW),NOR 2017,William Reilly (D),ON 我想找到的是,每个省/州/国家每年有多少次进入。例如,当第一行为1979时,“QC”在第
1979,Rob Ramage (D),ON
1979,Perry Turnbull (LW),AB
1979,Raymond Bourque (D),QC
2017,Kristian Røykås Marthinsen (LW),NOR
2017,William Reilly (D),ON
我想找到的是,每个省/州/国家每年有多少次进入。例如,当第一行为1979时,“QC”在第三行中出现多少次,并将其放置在另一个csv中。请注意,我的csv中的所有行都是按年份排序的,这意味着我的第一行都从1979年开始,然后是1980年,然后是1981年,等等
在对一些州、省和国家的结果进行分组后,我希望能够得出如下结果:
1979,32,94,36,4
1980,37,84,40,10
1981,40,90,34,22
1982,39,102,18,10
...
第一行是年份,然后,每次该值的每个字符串(QC、ON、NOR等)出现时。正如你所看到的,我在这个应用程序中没有使用玩家的名字
我的问题是,如何在具有特定值的行中找到特定字符串的出现点?我觉得这应该不会太复杂,但我只是不知道从哪里开始,因为我对编程相当陌生
多谢各位 普通蟒蛇
这只能使用集合。计数器完成
from collections import Counter
with open(file_name, 'r') as f:
origin_count_by_year = {}
for line in f:
year, _, origin = map(str.strip, line.split(','))
if year not in origin_count_by_year:
origin_count_by_year[year] = Counter()
origin_count_by_year[year][origin] += 1
根据您提供的数据,这将生成以下dict
{
'1979': Counter({'ON': 1, 'AB': 1, 'QC': 1}),
'2017': Counter({'NOR': 1, 'ON': 1})
}
选择
上述方法适用于较短的项目,但如果您打算扩展它,则解析csv文件是错误的方法
最好的方法可能是使用专门用于数据分析的库。它将帮助您通过和缩放
第二种方法是使用数据库而不是csv文件。使用标准库,您可以按年份和国家查询玩家并对其进行计数。是否允许您使用第三方库,例如pandas
?