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

使用pd.read_csv读取mnist.csv时遭遇UnicodeDecodeError问题求助

解决MNIST CSV文件读取的编码错误问题

可行解决方法:

  • 尝试通用兜底编码
    使用latin-1编码读取,它能兼容所有字节,不会触发解码错误,适合不确定文件编码的场景:

    import pandas as pd
    data = pd.read_csv('mnist.csv', encoding='latin-1')
    
  • 检测文件真实编码
    借助chardet库识别文件的实际编码:

    1. 先安装库:
      pip install chardet
      
    2. 运行检测代码:
      import chardet
      
      with open('mnist.csv', 'rb') as f:
          detect_result = chardet.detect(f.read())
      
      print(detect_result['encoding'])
      
    3. 将检测得到的编码填入pd.read_csv的encoding参数即可。
  • 确认文件格式是否正确
    MNIST数据集常以二进制格式(如.idx3-ubyte)存在,若你的mnist.csv是被误命名的二进制文件,需用二进制读取方式:

    import numpy as np
    
    def load_mnist_binary(file_path):
        with open(file_path, 'rb') as f:
            # 读取MNIST二进制文件的头部信息
            magic_num = int.from_bytes(f.read(4), 'big')
            num_imgs = int.from_bytes(f.read(4), 'big')
            row_count = int.from_bytes(f.read(4), 'big')
            col_count = int.from_bytes(f.read(4), 'big')
            # 读取图像数据并重塑格式
            imgs = np.frombuffer(f.read(), dtype=np.uint8).reshape(num_imgs, row_count*col_count)
        return imgs
    
    data = load_mnist_binary('mnist.csv')
    
  • 修复截断的转义字符
    若问题出在unicode_escape的截断转义,可手动处理字节流:

    import pandas as pd
    from io import StringIO
    
    with open('mnist.csv', 'rb') as f:
        byte_content = f.read()
    # 替换无法解码的部分,避免报错
    str_content = byte_content.decode('unicode_escape', errors='replace')
    # 从处理后的字符串读取数据
    data = pd.read_csv(StringIO(str_content))
    

内容的提问来源于stack exchange,提问作者Aarush K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:55:02