3、数据加载与初步探索:使用Pandas读取CSV/Excel数据、查看数据形状与列名、数据类型概览

在构建LightGBM特征缺失巡检流程之前,第一步是将原始数据加载到内存中,并进行快速的初步探索。本节将演示如何使用Pandas库读取常见的CSV和Excel格式文件,并掌握数据形状、列名及数据类型等核心元信息的查看方法。

3.1 使用Pandas读取数据文件

Pandas是Python中最常用的数据处理库,其read_csv()和read_excel()函数能够高效地将文件读入DataFrame对象。以下为两种典型场景的代码示例:

import pandas as pd

# 读取CSV文件(默认编码为utf-8)
df_csv = pd.read_csv('customer_data.csv', encoding='utf-8')

# 读取Excel文件(可指定工作表名称)
df_excel = pd.read_excel('sales_report.xlsx', sheet_name='Sheet1')
实用提示:当CSV文件包含中文时,建议显式指定 encoding='utf-8' 或 encoding='gbk',避免乱码。Excel文件读取时,可通过 sheet_name=None 读取所有工作表,返回一个字典。

3.2 查看数据形状与列名

加载数据后,第一时间应了解数据的整体规模与结构。Pandas提供了简洁的属性来获取这些信息:

属性/方法 功能说明 返回示例
df.shape 返回(行数, 列数)元组 (10000, 25)
df.columns 返回所有列名的Index对象 Index(['id', 'age', 'income', ...])
df.head(n) 查看前n行数据(默认5行) DataFrame前5行
df.info() 打印列名、非空计数、数据类型摘要 控制台输出表格
# 查看数据形状
print("数据形状(行, 列):", df_csv.shape)

# 查看所有列名
print("列名列表:", df_csv.columns.tolist())

# 查看前3行数据
print(df_csv.head(3))

3.3 数据类型概览与内存占用

数据类型决定了后续特征工程与模型训练的效率。使用df.dtypes可以查看每列的数据类型,而df.info()则提供了更全面的概览,包括每列的非空计数和整体内存占用。

# 查看每列数据类型
print(df_csv.dtypes)

# 详细概览(包含内存使用)
df_csv.info()
关键观察:在LightGBM特征缺失巡检中,object类型通常代表文本或类别特征,float64和int64为数值特征。若发现数值列被误读为object,需检查数据中是否混入了空字符串或特殊符号。

3.4 数据加载与初步探索流程

下图展示了从原始文件到初步探索的完整数据加载链路,帮助理解每一步的产出物:

数据加载与初步探索流程 原始数据文件 CSV / Excel Pandas读取 read_csv / read_excel DataFrame 内存表格对象 形状与列名 .shape / .columns 数据类型概览 .dtypes / .info() 样本预览 .head() / .tail() 💡 产出物: 行数列数、列名清单、每列数据类型、非空计数、内存占用、前几行样本数据

3.5 常见数据类型与处理建议

在初步探索中,识别每列的数据类型是后续缺失值检测的基础。下表列出了Pandas中常见的数据类型及其在特征缺失巡检中的典型含义:

Pandas类型 Python等效类型 常见场景 缺失巡检关注点
int64 整数 年龄、数量、ID 缺失值通常为0或NaN
float64 浮点数 收入、价格、比率 缺失值表现为NaN
object 字符串 姓名、城市、类别 缺失值可能为空字符串''或'None'
datetime64 日期时间 注册日期、交易时间 缺失值表现为NaT
bool 布尔值 是否活跃、是否违约 缺失值较少见,需注意None
注意:当使用 df.info() 发现某列非空计数远小于总行数时,该列即为潜在缺失特征,需要在后续章节中进行详细巡检。此外,object 类型列中若混入数字,应检查是否因数据格式问题导致类型推断错误。

3.6 快速实践:加载并探索示例数据

以下是一个完整的加载与初步探索代码片段,可直接在Jupyter Notebook或Python脚本中运行:

import pandas as pd

# 1. 加载数据
df = pd.read_csv('feature_data.csv')

# 2. 查看形状
print(f"数据集包含 {df.shape[0]} 行, {df.shape[1]} 列")

# 3. 查看列名
print("列名:", df.columns.tolist())

# 4. 数据类型概览
print("\n数据类型:")
print(df.dtypes)

# 5. 详细统计信息(含非空计数)
print("\n数据信息:")
df.info()

# 6. 预览前5行
print("\n前5行数据:")
print(df.head())

通过以上步骤,您已经完成了数据加载与初步探索,为后续的特征缺失巡检奠定了数据基础。接下来将进入缺失值检测与可视化环节。