
本文详解 pandas 读取 csv 文件时的典型错误(如重复加载、类型警告和路径误用),提供简洁可靠的代码范式,并说明 low_memory=false 和 dtype 参数的实用场景。
本文详解 pandas 读取 csv 文件时的典型错误(如重复加载、类型警告和路径误用),提供简洁可靠的代码范式,并说明 low_memory=false 和 dtype 参数的实用场景。
在 Python 数据分析中,pandas.read_csv() 是最常用的文件读取函数,但初学者常因细节疏忽导致报错或数据异常。你提供的代码中存在一个关键逻辑错误:
data = pd.read_csv('D:/Projects/FLGRU_Model/FLDataset/01-12/DrDoS_LDAP.csv')
df = pd.read_csv(data) # ❌ 错误:data 是 DataFrame,不是文件路径!
pd.read_csv() 的参数必须是字符串形式的文件路径(或类似文件对象),而第一行已将 CSV 内容加载为 DataFrame 类型的 data;第二行却试图将该 DataFrame 当作路径传入,这会直接引发 TypeError(尽管你看到的是 DtypeWarning 和后续 traceback,实际可能因环境差异掩盖了根本错误)。
✅ 正确做法是:只调用一次 read_csv,直接赋值给目标变量(如 df):
import pandas as pd # ✅ 正确:单次读取,路径为字符串 df = pd.read_csv(r'D:ProjectsFLGRU_ModelFLDataset-12DrDoS_LDAP.csv') # 注意:Windows 路径建议使用原始字符串 r'' 或双反斜杠 \ 避免转义问题 print(df.head()) print(df.describe())
关于你遇到的 DtypeWarning: Columns (85) have mixed types 警告,它并非致命错误,但暗示第 85 列存在多种数据类型(例如同时含数字、空值、字符串),pandas 默认以 object 类型推断,影响性能与分析准确性。可按需优化:
-
方案一(推荐):显式指定列类型,提升鲁棒性:
df = pd.read_csv(r'D:...DrDoS_LDAP.csv', dtype={'column_85': 'string'}) # 或 'Int64'(支持 NaN 的整型) -
方案二(快速调试):关闭低内存模式(仅限小到中等数据集):
df = pd.read_csv(r'D:...DrDoS_LDAP.csv', low_memory=False)
⚠️ 注意:low_memory=False 会一次性读取全部数据再统一推断类型,内存开销更大,不适用于超大文件。
此外,请确认:
- 文件路径真实存在且有读取权限;
- CSV 编码格式(如含中文建议加 encoding='utf-8' 或 'gbk');
- 移除冗余导入(如 sklearn 和 load_iris 在本任务中无关,可删除以保持代码简洁)。
总结:一次读取、路径准确、类型可控——这是高效、稳定加载 CSV 的三大基石。











