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 数据加载与初步探索流程
下图展示了从原始文件到初步探索的完整数据加载链路,帮助理解每一步的产出物:
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())
通过以上步骤,您已经完成了数据加载与初步探索,为后续的特征缺失巡检奠定了数据基础。接下来将进入缺失值检测与可视化环节。