Python读取CSV文件分类并统计行数

随着数据分析和数据处理的需求不断增长,CSV(Comma Separated Values)文件成为了一种常见的数据存储格式。在Python中,我们可以使用csv模块来读取和处理CSV文件。本文将介绍如何使用Python读取CSV文件并按照特定的条件对其进行分类,并统计每个分类的行数。

CSV文件的基本结构

CSV文件是一种以逗号或其他特定字符(如分号、制表符)作为列分隔符,以换行符作为行分隔符的文本文件。每一行代表一个数据记录,每一列代表一个数据字段。下面是一个简单的示例,展示了一个包含学生信息的CSV文件:

学号,姓名,性别,年龄
10001,张三,男,18
10002,李四,女,19
10003,王五,男,20
10004,赵六,女,19

使用Python读取CSV文件

首先,我们需要导入csv模块,并使用open()函数打开CSV文件。然后,我们可以使用csv模块提供的reader()函数创建一个CSV文件的Reader对象,该对象可以用于逐行读取CSV文件。

import csv

with open('students.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

上述代码中,我们首先使用open()函数打开名为"students.csv"的CSV文件,并指定打开模式为只读模式('r')。然后,我们使用csv.reader()函数创建一个Reader对象,并将其赋值给变量reader。接下来,我们使用for循环逐行读取文件内容,并使用print()函数打印每一行。

对CSV文件进行分类和统计

假设我们希望根据学生的性别对数据进行分类,并统计每个分类的行数。我们可以定义一个字典对象来保存每个分类的行数,并使用条件语句对数据进行分类。代码示例如下:

import csv

categories = {'男': 0, '女': 0}

with open('students.csv', 'r') as file:
    reader = csv.reader(file)
    next(reader)  # 跳过文件的第一行(表头)
    for row in reader:
        gender = row[2]
        categories[gender] += 1

print(categories)

上述代码中,我们首先定义了一个名为categories的字典对象,其中键为分类的名称('男'和'女'),值为初始的行数(0)。然后,我们使用open()函数打开CSV文件,并创建一个Reader对象。为了跳过文件的第一行(表头),我们使用了next()函数。之后,我们使用for循环逐行读取文件内容,并从每一行中获取性别信息。根据性别信息,我们将行数累加到相应的分类中。

最后,我们使用print()函数打印分类和对应的行数。

状态图

下面是对以上代码的状态图表示,描述了读取CSV文件并对其进行分类的过程。

stateDiagram
    [*] --> 读取CSV文件
    读取CSV文件 --> 读取行
    读取行 --> 判断行数
    判断行数 --> 更新分类
    判断行数 --> 继续读取行
    继续读取行 --> 读取行
    更新分类 --> 继续读取行
    继续读取行 --> 读取行
    判断行数 --> 输出结果
    输出结果 --> [*]

甘特图

下面是对以上代码的甘特图表示,描述了读取CSV文件并对其进行分类的时间流程。

gantt
    dateFormat  YYYY-MM-DD
    title 读取CSV文件并分类
    section 读取CSV文件
    打开文件          : 2022-01-01, 1d
    创建Reader对象    : 2022-01-02, 1d
    跳过表头          : 2022-01-03, 1d
    section 读取行
    读取行            : 2022-01-04, 2d
    section 判断行数
    判断行数