print() 和直接输出
这是最直接的方式,在 Jupyter Notebook 或 Python 脚本中查看 DataFrame 内容。

print() 函数
在普通的 Python 脚本中,使用 print(df) 会显示一个基于文本的表格。
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame
data = {'姓名': ['张三', '李四', '王五', '赵六'],
'年龄': [25, 30, 28, 35],
'城市': ['北京', '上海', '广州', '深圳'],
'薪资': [12000, 15000, np.nan, 18000]}
df = pd.DataFrame(data)
# 使用 print() 输出
print(df)
输出结果:
姓名 年龄 城市 薪资
0 张三 25 北京 12000.0
1 李四 30 上海 15000.0
2 王五 28 广州 NaN
3 赵六 35 深圳 18000.0
直接输出变量 (Jupyter Notebook / IPython)
在 Jupyter Notebook 等交互式环境中,直接输入变量名 df 并回车,会渲染成一个更美观的 HTML 表格。
# 在 Jupyter Notebook 中直接运行 df
输出结果 (HTML 表格):

| 姓名 | 年龄 | 城市 | 薪资 | |
|---|---|---|---|---|
| 0 | 张三 | 25 | 北京 | 0 |
| 1 | 李四 | 30 | 上海 | 0 |
| 2 | 王五 | 28 | 广州 | NaN |
| 3 | 赵六 | 35 | 深圳 | 0 |
控制显示选项:pd.set_option()
当 DataFrame 很大时,默认显示可能不够友好。pd.set_option() 可以让你自定义显示行为。
# 设置显示的最大行数和列数
pd.set_option('display.max_rows', 3) # 最多显示3行
pd.set_option('display.max_columns', 2) # 最多显示2列
# 创建一个更大的 DataFrame
large_df = pd.DataFrame(np.random.rand(100, 5), columns=['A', 'B', 'C', 'D', 'E'])
print(large_df)
输出结果 (中间部分被省略):
A B C D E
0 0.123456 0.789012 0.345678 0.901234 0.567890
1 0.234567 0.890123 0.456789 0.012345 0.678901
... ... ... ... ... ...
98 0.987654 0.654321 0.321098 0.765432 0.432109
99 0.876543 0.543210 0.210987 0.654321 0.321098
[100 rows x 5 columns]
常用 pd.set_option 选项:
| 选项 | 说明 |
|---|---|
display.max_rows |
最大显示行数 (默认 60) |
display.max_columns |
最大显示列数 (默认 0,表示不限制) |
display.precision |
浮点数显示的小数位数 (默认 6) |
display.width |
显示区域的总宽度 (字符数) |
display.expand_frame_repr |
是否在达到宽度限制时换行显示 (默认 True) |
display.show_dimensions |
在显示时是否显示维度信息 (如 [100 rows x 5 columns]) |
格式化输出:style 属性
Pandas 的 style 属性非常强大,它不改变 DataFrame 的数据,而是为显示结果添加 CSS 样式,使其更具可读性,这非常适合在 Jupyter Notebook 中进行数据探索和展示。
基本样式
# 高亮显示最大值 styled_df = df.style.highlight_max(axis=0) styled_df
数值格式化
# 将薪资格式化为货币形式
styled_df = df.style.format({'薪资': '¥{:,.2f}'})
styled_df
综合应用
# 综合应用:格式化 + 高亮最大值 + 标题
styled_df = (df.style
.format({'薪资': '¥{:,.2f}'})
.highlight_max(subset=['年龄', '薪资'], color='lightgreen')
.highlight_min(subset=['年龄', '薪资'], color='lightcoral')
.set_caption("员工信息表"))
styled_df
效果:
- "薪资"列会显示为
¥12,000.00这样的格式。 - "年龄"和"薪资"列的最大值会背景变为浅绿色,最小值变为浅红色。
- 表格上方会有一个标题 "员工信息表"。
保存到文件
在实际工作中,将处理后的 DataFrame 保存为文件是必不可少的一步。
保存为 CSV 文件
# 保存为 CSV,不包含索引
df.to_csv('employee_info.csv', index=False, encoding='utf-8-sig')
# index=False: 不将 DataFrame 的行索引写入文件
# encoding='utf-8-sig': 解决 Excel 打开 CSV 文件时的中文乱码问题
保存为 Excel 文件
# 保存为 Excel,不包含索引
df.to_excel('employee_info.xlsx', index=False)
# 可以指定 sheet_name
# df.to_excel('employee_info.xlsx', sheet_name='员工数据', index=False)
保存为 JSON 文件
# 保存为 JSON,orient='records' 使其成为一个 JSON 对象列表
df.to_json('employee_info.json', orient='records', force_ascii=False, indent=2)
# orient='records': [{"姓名": "张三", ...}, ...]
# force_ascii=False: 确保中文字符不被转义
# indent=2: 格式化输出,使 JSON 文件更易读
保存为 HTML 文件
# 保存为 HTML,包含样式和索引
df.to_html('employee_info.html', index=True)
# 如果想使用 style 生成的漂亮样式,可以先获取 HTML 字符串
styled_html = df.style.set_table_attributes("style='margin: auto'").to_html()
with open('styled_employee_info.html', 'w', encoding='utf-8') as f:
f.write(styled_html)
总结与建议
| 场景 | 推荐方法 | 说明 |
|---|---|---|
| 快速预览 (脚本) | print(df) |
简单直接,适合在控制台查看。 |
| 交互式探索 (Jupyter) | df |
渲染美观的 HTML 表格,是数据科学家的首选。 |
| 控制显示格式 | pd.set_option() |
用于处理大型 DataFrame,避免控制台输出过于冗长。 |
| 美化展示 (报告/演示) | df.style |
在 Jupyter 中创建交互式、格式化的数据报告,非常强大。 |
| 数据持久化/分享 | to_csv(), to_excel(), to_json() |
将 DataFrame 保存为标准数据格式,供其他程序或人使用。 |
掌握这些输出方法,能让你的数据分析工作流程更加顺畅和高效。
