📜  Python读取CSV文件(1)

📅  最后修改于: 2023-12-03 15:34:32.563000             🧑  作者: Mango

Python 读取 CSV 文件

CSV (Comma Separated Values) 文件是一种常用的文本格式,它将数据以逗号为分隔符分割开来。Python 提供了多种方法来读取 CSV 文件,下面我们分别介绍这些方法。

使用 csv 模块

Python 内置了 csv 模块,使用它可以方便地读取和写入 CSV 文件。常用的方法有:

csv.reader()

csv.reader() 函数可以读取 CSV 文件中的每一行,返回一个迭代器。使用时需要传入文件对象和 CSV 文件中的分隔符。

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file, delimiter=',')  # delimiter 为分隔符,默认为逗号
    for row in reader:
        print(row)
csv.DictReader()

csv.DictReader() 函数与 csv.reader() 函数类似,但返回的是一个字典而不是列表,其中字典的键是 CSV 文件中的列名。

import csv

with open('data.csv', 'r') as file:
    reader = csv.DictReader(file, delimiter=',')  # delimiter 为分隔符,默认为逗号
    for row in reader:
        print(row)
使用 pandas 库

pandas 是 Python 中常用的数据分析库,它可以方便地读取和处理多种格式的数据,包括 CSV 文件。

pandas.read_csv()

pandas.read_csv() 函数可以读取 CSV 文件,并返回一个 DataFrame 对象。

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

如果 CSV 文件中包含中文等非 ASCII 字符,可以指定编码方式:

df = pd.read_csv('data.csv', encoding='utf-8')
实例演示

以一个包含学生信息的 CSV 文件为例,演示如何使用 Python 读取并处理 CSV 文件。

首先,我们先创建一个包含学生信息的 CSV 文件,命名为 students.csv :

name,age,gender,grade
小明,18,Male,100
小红,17,Female,98
小刚,19,Male,75
小丽,16,Female,82

然后,我们使用 csv.reader() 函数和 pandas.read_csv() 函数分别读取这个 CSV 文件:

import csv
import pandas as pd

# 使用 csv.reader() 函数读取 CSV 文件
with open('students.csv', 'r') as file:
    reader = csv.reader(file, delimiter=',')
    for row in reader:
        print(row)

# 使用 pandas.read_csv() 函数读取 CSV 文件
df = pd.read_csv('students.csv', encoding='utf-8')
print(df)

运行结果:

['name', 'age', 'gender', 'grade']
['小明', '18', 'Male', '100']
['小红', '17', 'Female', '98']
['小刚', '19', 'Male', '75']
['小丽', '16', 'Female', '82']

  name  age  gender  grade
0   小明   18    Male    100
1   小红   17  Female     98
2   小刚   19    Male     75
3   小丽   16  Female     82

我们可以看到,使用 csv.reader() 函数读取 CSV 文件时,返回的是一个二维列表,其中包含了 CSV 文件中的所有行和列。而使用 pandas.read_csv() 函数读取 CSV 文件时,返回的是一个 DataFrame 对象,其中每一列都被视为一种类型的数据。我们可以方便地对 DataFrame 对象进行排序、过滤、统计等操作,使数据分析变得更加简单。