You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何统计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

火山引擎 最新活动