文章目录

Python 数据处理:Pandas 读取 CSV 文件

发布于 2026-04-10 22:14:07 · 浏览 11 次 · 评论 0 条

Python 数据处理:Pandas 读取 CSV 文件

Pandas 是 Python 中处理数据的核心库,而 read_csv 是其最常用的功能。无论是分析销售数据、处理日志文件,还是读取实验记录,掌握它能帮你快速将文本转化为可操作的数据结构。


1. 准备工作

在开始读取文件之前,需要确保环境已就绪。

  1. 打开 终端或命令行工具(CMD、PowerShell 或 Terminal)。

  2. 输入 安装命令并 按下 回车键:

    pip install pandas
  3. 创建一个名为 data.csv 的测试文件,用于后续练习。你可以使用记事本或代码编辑器,输入 以下内容并 保存

    ID,Name,Age,Salary,Join_Date
    101,Alice,28,70000,2023-01-15
    102,Bob,34,85000,2022-11-01
    103,Charlie,29,72000,2023-03-20

2. 基础读取操作

最简单的读取方式只需一行代码。

  1. 启动 Python 交互环境或 创建 一个新的 .py 脚本文件。
  2. 导入 Pandas 库:
    import pandas as pd
  3. 调用 read_csv 函数 加载 文件:
    df = pd.read_csv('data.csv')
  4. 打印 数据内容 查看 结果:
    print(df)

    此步骤将输出一个表格形式的数据结构,默认第一行会被识别为列名。


3. 处理常见乱码问题

读取文件时,如果包含中文字符,经常会遇到 UnicodeDecodeError 或显示乱码。这是因为文件编码与 Python 默认读取编码(通常是 UTF-8)不匹配。

  1. 尝试 指定 encoding 参数为 gbk
    df = pd.read_csv('data.csv', encoding='gbk')
  2. 检查 输出是否正常。如果 gbk 无效,尝试 替换为 gb18030utf-8-sig

针对编码错误的排查流程,请参考以下逻辑:

graph TD A["开始: 尝试读取文件"] --> B{是否报错?} B -- "否" --> C["成功加载数据"] B -- "是 / 乱码" --> D["尝试 encoding='gbk'"] D --> E{是否解决?} E -- "是" --> C E -- "否" --> F["尝试 encoding='gb18030'"] F --> G{是否解决?} G -- "是" --> C G -- "否" --> H["尝试 encoding='utf-8-sig'"] H --> I{是否解决?} I -- "是" --> C I -- "否" --> J["检查文件原始编码格式"]

4. 处理分隔符与表头

并非所有 CSV 文件都使用逗号分隔,也并非所有文件都有表头。

场景一:使用非逗号分隔
某些 CSV 文件使用分号 ; 或制表符(Tab)分隔。

  1. 使用 sepdelimiter 参数 指定 分隔符。
  2. 输入 以下代码读取分号分隔的文件:
    df = pd.read_csv('data.csv', sep=';')

场景二:文件没有表头
如果文件的第一行就是数据,而不是列名。

  1. 设置 header 参数为 None
    df = pd.read_csv('data.csv', header=None)
  2. 此时,Pandas 会自动生成数字索引(0, 1, 2...)作为列名。

场景三:自定义列名

  1. 传入 names 参数 覆盖 原有列名:
    df = pd.read_csv('data.csv', names=['编号', '姓名', '年龄', '薪资', '入职日期'])

5. 数据筛选与类型优化

为了提高处理效率,读取时可以只加载需要的列或指定数据类型。

只读取特定列
如果文件有几百列,但你只需要两列。

  1. 使用 usecols 参数 传入 列名列表:
    df = pd.read_csv('data.csv', usecols=['Name', 'Salary'])

自动转换日期格式
默认情况下,日期会被读取为字符串。为了方便后续计算时间差。

  1. 设置 parse_dates 参数为 True指定 列名:
    df = pd.read_csv('data.csv', parse_dates=['Join_Date'])
  2. 查看 列的数据类型,Join_Date 列将变成 datetime64[ns] 类型。

6. 处理超大文件

当 CSV 文件大小超过内存容量(例如几 GB 或几十 GB)时,一次性读取会导致电脑卡死。

方法一:分块读取

  1. 设置 chunksize 参数 指定 每块的行数:
    chunk_iter = pd.read_csv('big_data.csv', chunksize=10000)
  2. 使用 for 循环 逐块处理 数据:
    for chunk in chunk_iter:
        # 在这里对每一块数据进行处理,例如筛选或聚合
        result = chunk[chunk['Age'] > 30]
        print(result.shape)

7. 常用参数速查表

以下是 pd.read_csv 最常用的参数汇总,便于查阅。

参数名称 功能描述 示例值
filepath_or_buffer 文件路径或 URL 'data.csv''https://example.com/data.csv'
sep 分隔符,默认为逗号 ';''\t'
header 指定哪一行作为表头 0 (第一行) 或 None (无表头)
names 自定义列名列表 ['列A', '列B', '列C']
index_col 指定某一列作为行索引 'ID'0
encoding 文件编码格式 'utf-8''gbk'
usecols 只读取指定的列 ['Name', 'Age']
parse_dates 尝试解析为日期 ['Date']True
chunksize 分块读取的行数 10000

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文