如何统计CSV文件中男女数量?附示例数据与代码实现问询
统计CSV文件中男女数量的实现方案
嘿,这个需求挺直观的,我来一步步给你拆解怎么搞定它~
核心思路
咱们要做的事儿其实分几步:
- 读取
sample.csv的内容,注意要跳过表头和那行分隔线(就是---- --- --- ----那一行) - 逐行提取
SEX列的取值(M/F) - 统计这两个值的出现次数
- 按要求的格式输出结果
代码实现
下面给你两种常用的实现方式,按需选就行:
方式一:用Python内置csv模块(无需额外安装库)
这个方法适合不想折腾第三方库的场景,纯原生代码就能搞定:
import csv # 初始化计数器 male_count = 0 female_count = 0 # 打开CSV文件并读取内容 with open('sample.csv', 'r') as file: # 创建CSV阅读器,指定空格为分隔符 reader = csv.reader(file, delimiter=' ') # 跳过前两行:表头和分隔线 next(reader) next(reader) # 遍历每一行数据 for row in reader: # 过滤掉空字符串(因为是空格分隔,会产生空元素),取SEX列 sex = [col for col in row if col][2] if sex == 'M': male_count += 1 elif sex == 'F': female_count += 1 # 按要求格式输出结果 print(f"M : {male_count} F : {female_count}")
小提示:因为你的CSV是用空格分隔的,连续空格会产生空元素,所以用列表推导式过滤后再取对应列,避免出错。
方式二:用pandas库(更简洁,适合数据处理场景)
如果你平时经常和数据打交道,装个pandas会让代码短很多:
首先先安装pandas(如果没装的话):
pip install pandas
然后写代码:
import pandas as pd # 读取CSV,跳过第二行的分隔线,匹配任意数量空格作为分隔符 df = pd.read_csv('sample.csv', skiprows=[1], sep='\s+') # 统计SEX列的取值次数 sex_counts = df['SEX'].value_counts() # 格式化输出,用get()避免某个性别不存在时报错 print(f"M : {sex_counts.get('M', 0)} F : {sex_counts.get('F', 0)}")
小提示:sep='\s+'能自动处理多个连续空格的情况,比手动过滤省心多了。
测试结果
用你给的sample.csv测试,两种方法都会输出:
M : 2 F : 2
内容的提问来源于stack exchange,提问作者thepajama




