Pandas 数据处理实战:CSV 与 JSON 文件操作详解
在实际数据分析工作中,90% 以上的数据来源于外部文件(如 CSV、Excel、JSON)。) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回。) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。将DataFrame分别保存为CSV和JSON,比较文件差异。复杂结构(自动处理日期、缺失值等)内存占用(memory usage)大数据文件(支
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()获取数据摘要
-
练习建议:
-
下载一个CSV数据集(如 Kaggle),尝试用
head()和info()探索数据 -
将DataFrame分别保存为CSV和JSON,比较文件差异
更多推荐



所有评论(0)