Pandas 查看数据概览

获取数据后,第一步通常是快速查看数据的整体情况。Pandas 提供了一系列简单但强大的函数,让你可以在几秒钟内了解数据的规模、类型、统计信息和潜在问题。

🔍 常用概览方法

head() / tail()

查看前 n 行或后 n 行,默认 5 行。快速确认数据格式和内容。

df.head(10)   # 前10行
df.tail(3)     # 后3行
.shape

返回 (行数, 列数) 的元组,了解数据集规模。

print(df.shape)
# 输出:(1000, 20)
.columns

查看所有列名,便于后续操作。

print(df.columns.tolist())
.dtypes

每列的数据类型,如 int64, float64, object 等。

print(df.dtypes)
info()

打印 DataFrame 的摘要:列名、非空计数、数据类型、内存使用。

df.info()
describe()

对数值列生成描述性统计:计数、均值、标准差、四分位数等。

df.describe()

🧪 综合示例

创建一个包含不同类型列的 DataFrame 并应用以上方法:

import pandas as pd
import numpy as np

# 生成示例数据
df = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六', '陈七'],
    '年龄': [28, 35, None, 42, 29],
    '工资': [8000, 12000, 9500, None, 11000],
    '入职日期': pd.date_range('2020-01-01', periods=5),
    '部门': ['技术', '销售', '技术', '管理', '销售']
})

print("====== 原始数据 ======")
print(df)

print("\n====== head() 前3行 ======")
print(df.head(3))

print("\n====== shape ======")
print(f"行数: {df.shape[0]}, 列数: {df.shape[1]}")

print("\n====== columns ======")
print(df.columns.tolist())

print("\n====== dtypes ======")
print(df.dtypes)

print("\n====== info() ======")
df.info()

print("\n====== describe() (数值列) ======")
print(df.describe())

print("\n====== describe(include='all') (包含非数值列) ======")
print(df.describe(include='all'))

📈 更多探索方法

df['列名'].value_counts()
df['列名'].unique()
df['列名'].nunique()
df['列名'].min() / .max()
df['列名'].mean() / .median()
df.corr() (相关系数矩阵)
# 查看部门的分布
print(df['部门'].value_counts())

# 查看工资列的统计
print(df['工资'].describe())

# 查看工资与年龄的相关系数
print(df[['年龄','工资']].corr())

⚠️ 注意事项

缺失值影响:describe() 默认忽略缺失值(NaN),计数列会显示非空数量。info() 会显示每列的非空计数,帮助你发现缺失数据。
数据类型:如果一列本应是数值型但显示为 object,可能包含非数字字符串,需要进一步清洗。
大内存消耗:对于非常大的 DataFrame,info() 显示的内存使用量可以帮助你判断是否需要优化数据类型(如将 float64 转为 float32)。
最佳实践:拿到数据后,建议先执行 df.info() 了解规模与缺失,df.head() 查看样例,df.describe() 获取数值分布。这些简单操作能帮你快速决定下一步清洗或分析的方向。