下面我将详细介绍几种最常见的输出方法,从最基础的到更高级的。

在控制台/终端显示
这是最常用的方式,用于在开发过程中快速检查数据。
print(df)
这是最直接的方法,但有一个小缺点:DataFrame 太宽,它会自动截断显示,并且列名可能会换行。
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame
data = {'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳']}
df = pd.DataFrame(data)
print(df)
输出:
姓名 年龄 城市
0 张三 25 北京
1 李四 30 上海
2 王五 28 广州
3 赵六 35 深圳
display(df)
在 Jupyter Notebook 或 JupyterLab 等交互式环境中,display() 是首选,它会渲染出一个格式更美观、带有 HTML 样式的表格,并且可以显示更多内容(如滚动条)。

# 在 Jupyter Notebook 中运行 display(df)
输出: (一个格式漂亮的HTML表格)
df (直接在交互式环境中输入变量名)
在 Jupyter Notebook 中,你甚至可以直接输入变量名 df 然后运行,效果和 display(df) 一样。
# 在 Jupyter Notebook 中运行 df
调整显示选项
当你的 DataFrame 非常大或非常宽时,默认显示可能不够用。pandas 提供了几个设置来调整显示。
pd.set_option()
你可以使用 pd.set_option() 来修改全局显示设置。

| 选项 | 描述 | 示例 |
|---|---|---|
pd.set_option('display.max_rows', N) |
设置最大显示行数,超过部分会被省略。None 表示显示所有行。 |
pd.set_option('display.max_rows', 100) |
pd.set_option('display.max_columns', N) |
设置最大显示列数,超过部分会被省略。None 表示显示所有列。 |
pd.set_option('display.max_columns', 20) |
pd.set_option('display.width', N) |
设置显示区域的宽度(字符数)。 | pd.set_option('display.width', 200) |
pd.set_option('display.precision', N) |
设置浮点数的显示精度(小数位数)。 | pd.set_option('display.precision', 2) |
pd.set_option('display.expand_frame_repr', False) |
如果为 True,当 DataFrame 太宽时会自动换行,设为 False 可以强制在一行显示,但可能需要水平滚动。 |
pd.set_option('display.expand_frame_repr', False) |
示例:
# 创建一个更宽的 DataFrame
wide_data = {f'Col_{i}': np.random.rand(5) for i in range(15)}
wide_df = pd.DataFrame(wide_data)
# 设置显示所有列
pd.set_option('display.max_columns', None)
# 设置浮点数显示2位小数
pd.set_option('display.precision', 2)
print(wide_df)
保存到文件
这是将数据处理结果持久化的关键步骤。
保存为 CSV 文件
.to_csv() 是最常用的方法。
# 基本用法
df.to_csv('output.csv', index=False, encoding='utf-8-sig')
# 参数解释:
# - 'output.csv': 输出的文件名。
# - index=False: **非常重要**,不将 DataFrame 的行索引 (0, 1, 2...) 写入文件,如果不设置,索引会成为文件的第一列。
# - encoding='utf-8-sig': 使用 UTF-8 编码,并带有 BOM (签名),这能确保 Excel 等软件能正确识别中文,避免乱码。
# - sep=',': 指定分隔符,默认是逗号,也可以用 `sep='\t'` 保存为 TSV 文件。
保存为 Excel 文件
.to_excel() 功能强大,可以指定工作表、格式等。
# 需要安装 openpyxl 库: pip install openpyxl
df.to_excel('output.xlsx', sheet_name='员工信息', index=False)
# 参数解释:
# - 'output.xlsx': 输出的 Excel 文件名。
# - sheet_name='员工信息': 指定数据要保存到哪个工作表。
# - index=False: 同上,不写入行索引。
保存为其他格式
pandas 还支持多种其他格式。
| 格式 | 方法 | 常用场景 |
|---|---|---|
| JSON | .to_json('output.json') |
用于 Web API 交换数据。 |
| HTML | .to_html('output.html') |
生成一个独立的 HTML 报告页面。 |
| SQL | .to_sql('table_name', connection_object) |
将数据直接写入数据库。 |
| Pickle | .to_pickle('output.pkl') |
Python 对象的二进制格式,保存和加载速度极快,适合临时存储,但不跨语言。 |
输出到数据库
如果你的数据需要存入 MySQL, PostgreSQL, SQLite 等数据库,可以使用 to_sql。
# 需要安装 SQLAlchemy 库: pip install SQLAlchemy
from sqlalchemy import create_engine
# 创建一个数据库连接引擎 (以 SQLite 为例)
# 'sqlite:///database.db' 表示创建一个名为 database.db 的本地 SQLite 数据库文件
engine = create_engine('sqlite:///my_database.db')
# 将 DataFrame 写入数据库
df.to_sql('employees', con=engine, if_exists='replace', index=False)
# 参数解释:
# - 'employees': 数据库中的表名。
# - con=engine: 数据库连接引擎。
# - if_exists='replace': 如果表已存在,则替换它,可选值: 'fail' (报错), 'append' (追加数据)。
# - index=False: 不写入行索引。
输出到网页/应用程序
在构建 Web 应用时,你可能需要将 DataFrame 转换为 HTML 或 JSON。
转换为 HTML 字符串
html_string = df.to_html(classes='table table-striped', table_id='my-table')
# 参数:
# - classes: 添加 CSS 类,方便用 Bootstrap 等框架美化。
# - table_id: 为表格设置一个 ID,方便用 JavaScript 操作。
# 你可以将这个 html_string 写入一个 .html 文件,或在 Flask/Django 模板中使用。
with open('report.html', 'w', encoding='utf-8') as f:
f.write(html_string)
转换为 JSON 字符串
# orient='records' 将 DataFrame 转换为 JSON 数组,每个元素是一个对象(字典)
json_string = df.to_json(orient='records', force_ascii=False)
# 参数:
# - orient: 'records' 是最常用的格式,也支持 'split', 'index', 'values', 'table'。
# - force_ascii=False: 确保中文字符不被转义,直接显示。
print(json_string)
# 输出: [{"姓名":"张三","年龄":25,"城市":"北京"},{"姓名":"李四","年龄":30,"城市":"上海"}]
总结与最佳实践
| 场景 | 推荐方法 | 关键点 |
|---|---|---|
| 快速调试/查看数据 | print(df) 或在 Jupyter 中直接输入 df |
对于小数据集足够用。 |
| 在 Jupyter 中查看 | display(df) |
格式最美观,功能最全。 |
| 处理大数据/宽数据 | pd.set_option() + print(df) |
调整 max_rows, max_columns 等选项。 |
| 数据持久化/分享 | df.to_csv() / df.to_excel() |
记得设置 index=False 和正确的 encoding。 |
| Web 开发 | df.to_html() / df.to_json() |
根据前后端需求选择合适的格式。 |
| 数据存入数据库 | df.to_sql() |
需要配合 SQLAlchemy 使用。 |
掌握这些输出方法,你就能灵活地在不同场景下展示和使用你的 pandas 数据了。
