1. 前言:为什么需要学习 Pandas 文件操作?

在实际数据分析工作中,90% 以上的数据来源于外部文件(如 CSV、Excel、JSON)。Pandas 提供了高效的文件读写接口,能够轻松实现:

  • 快速加载 大数据文件(支持分块读取)

  • 智能解析 复杂结构(自动处理日期、缺失值等)

  • 内存优化 处理远超内存大小的数据集

本文将重点讲解 CSV 和 JSON 这两种最常用的数据格式。

 

2. CSV 文件操作

2.1 读取 CSV 文件

import pandas as pd

# 基本读取(自动推断列名和数据类型)
df = pd.read_csv('data.csv')

# 常用参数:
# - header=None          # 无列名时使用
# - names=['列1','列2']  # 自定义列名
# - index_col='日期'     # 指定索引列
# - encoding='gbk'      # 解决中文乱码

2.2 数据预览方法

(1)head() / tail() - 查看首尾数据

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。  

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。  

print(df.head(3))  # 默认显示前5行,可指定行数
print(df.tail())   # 查看最后5行

 输出示例:

   Name  Age  Score
0  Alice   25   88.5
1    Bob   30   92.0
2  Charlie 35   78.5

 (2)info() - 数据摘要

df.info()

输出说明:

  • 行数(RangeIndex)

  • 列名、非空值数量

  • 数据类型(dtype)

  • 内存占用(memory usage)

示例输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   Name    3 non-null      object 
 1   Age     3 non-null      int64  
 2   Score   3 non-null      float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes

 2.3 写入 CSV 文件

df.to_csv('new_data.csv', 
          index=False,      # 不保存行索引
          encoding='utf-8') # 指定编码

 

3. JSON 文件操作

3.1 读取 JSON 文件

# 简单JSON(列表格式)
df_json = pd.read_json('data.json')

# 嵌套JSON(需要指定路径)
# 假设数据格式:{"students": [{"name":"Alice", "age":25}, ...]}
df_json = pd.json_normalize(data, 'students')

3.2 JSON 数据预览

与 CSV 相同,可使用 head()/info() 等方法:

print(df_json.head(2))
df_json.info()

 3.3 写入 JSON 文件

df.to_json('output.json',
           orient='records',  # 输出为记录列表
           indent=2)          # 美化缩进

 

4. 实战对比:CSV vs JSON

特性 CSV JSON
可读性 高(文本编辑器可读) 中(需要格式化)
数据结构支持 仅平面表格 支持嵌套复杂结构
文件大小 通常更小 因冗余字符通常更大
解析速度 更快 较慢(需解析语法树)
适用场景 规整表格数据 API接口/嵌套数据

 

5. 进阶技巧

5.1 处理大文件(分块读取)

# 每次读取10000行
chunk_iter = pd.read_csv('big_data.csv', chunksize=10000)
for chunk in chunk_iter:
    process(chunk)  # 自定义处理函数

 5.2 数据类型优化

# 读取时指定数据类型节省内存
dtypes = {'Age': 'int8', 'Score': 'float32'}
pd.read_csv('data.csv', dtype=dtypes)

 5.3 处理日期列

# 自动解析日期列
pd.read_csv('data.csv', parse_dates=['Date'])

 

6. 总结

  • CSV:适合规整表格数据,使用 read_csv()/to_csv()

  • JSON:适合嵌套数据,使用 read_json()/json_normalize()

  • 核心预览方法

    • head()/tail() 快速查看数据

    • info() 获取数据摘要

练习建议:

  1. 下载一个CSV数据集(如 Kaggle),尝试用head()info()探索数据

  2. 将DataFrame分别保存为CSV和JSON,比较文件差异

 

更多推荐