Python统计CSV文件中值重复次数 音乐人专辑数统计实例
Python统计音乐人专辑数量实现方案
你可以用以下两种常用方案实现需求,第一种仅用Python标准库,无需安装额外依赖:
import csv from collections import defaultdict # 替换为你实际的CSV文件路径 csv_file = "./musician_album.csv" count_dict = defaultdict(int) with open(csv_file, "r", encoding="utf-8") as f: csv_reader = csv.reader(f) for line in csv_reader: # 跳过空行 if not line: continue # 取每行第一个值为音乐人ssn,计数+1 ssn = line[0].strip() count_dict[ssn] += 1 # 按ssn排序后输出指定格式结果 for ssn, cnt in sorted(count_dict.items()): print(f"{ssn} no of albums = {cnt}")
如果你的文件体积较大,也可以用pandas简化实现:
import pandas as pd # 替换为你实际的CSV文件路径 csv_file = "./musician_album.csv" # 读取无表头的CSV文件,指定两列的列名 df = pd.read_csv(csv_file, header=None, names=["ssn", "album_id"]) # 按ssn分组统计行数 count_res = df.groupby("ssn").size() # 输出结果 for ssn, cnt in count_res.items(): print(f"{ssn} no of albums = {cnt}")
如果你需要对同一音乐人重复的专辑编号去重后统计,可将标准库方案的统计逻辑修改为:
from collections import defaultdict count_dict = defaultdict(set) with open(csv_file, "r", encoding="utf-8") as f: csv_reader = csv.reader(f) for line in csv_reader: if not line: continue ssn, album_id = line[0].strip(), line[1].strip() count_dict[ssn].add(album_id) for ssn, albums in sorted(count_dict.items()): print(f"{ssn} no of albums = {len(albums)}")
内容的提问来源于stack exchange,提问作者JefG
相关产品推荐
相关产品推荐

