杰瑞科技汇

python datafram 输出

print() 和直接输出

这是最直接的方式,在 Jupyter Notebook 或 Python 脚本中查看 DataFrame 内容。

python datafram 输出-图1
(图片来源网络,侵删)

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 表格):

python datafram 输出-图2
(图片来源网络,侵删)
姓名 年龄 城市 薪资
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 保存为标准数据格式,供其他程序或人使用。

掌握这些输出方法,能让你的数据分析工作流程更加顺畅和高效。

分享:
扫描分享到社交APP
上一篇
下一篇