You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何pd.read_csv()无法导入CSV文件,np.genfromtxt()却可以?

为什么pd.read_csv解码报错但np.genfromtxt能正常读取?

两者核心差异集中在编码处理、解析逻辑和容错机制上,具体如下:

  • 编码处理逻辑本质不同
    pd.read_csv()默认会将文件内容解码为字符串对象,它会自动采用系统默认编码(Windows多为cp1252,Linux/macOS多为utf-8)尝试解码。如果你的Loan-data.csv采用了非默认编码(比如latin1、gbk),文件中存在对应编码外的字符时,就会直接抛出UnicodeDecodeError。
    而np.genfromtxt()默认以字节流形式读取数据,不会主动解码为字符串——它更偏向数值数据读取,文本内容会被当作字节串保留,或者在未指定dtype时自动推断类型,因此不会触发解码错误。

  • 文本解析的容错性不同
    pandas对CSV的解析更注重文本数据的规范性,默认没有开启编码容错,遇到无法解码的字符直接终止并报错。numpy的genfromtxt则设计了更高的容错机制,遇到不符合预期的字符时,会尝试跳过、用默认值(如nan)填充,而非直接中断程序。

  • 额外参数的隐性影响
    你使用np.genfromtxt时指定了delimiter=';',而pd.read_csv()默认分隔符是逗号(,)——不过你提到其他CSV能正常读取,说明分隔符不是本次解码错误的核心原因,但如果你的目标文件确实用分号分隔,后续测试pd.read_csv时建议加上delimiter=';'参数,避免解析格式问题干扰编码排查。

验证与解决建议

你可以尝试给pd.read_csv()指定编码参数来匹配文件实际编码,比如:

pd.read_csv('Loan-data.csv', delimiter=';', encoding='latin1')

或者用chardet库检测文件的真实编码,再对应设置encoding参数,就能解决解码报错问题。

内容的提问来源于stack exchange,提问作者G-Kolly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:50:19