UnicodeDecodeError:“utf-8”编解码器无法解码位置 1 中的字节 0x8b:在 pandas 中读取 csv 文件时起始字节无效

2024-04-08

我知道类似的问题已经被问过,我已经看过所有这些问题并尝试过,但没有什么帮助。我正在使用 OSX 10.11 El Capitan,python3.6.,虚拟环境,也尝试过没有它。我使用的是jupyter笔记本和spyder3。

我是 Python 新手,但了解基本的 ML,并按照帖子学习如何解决 Kaggle 挑战:博客链接 https://www.dataquest.io/blog/kaggle-tutorial/, 链接到数据集 https://www.kaggle.com/c/expedia-hotel-recommendations/data

.我被困在前几行代码中 `

import pandas as pd

destinations = pd.read_csv("destinations.csv")
test = pd.read_csv("test.csv")
train = pd.read_csv("train.csv")

它给了我错误

UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-19-a928a98eb1ff> in <module>()
      1 import pandas as pd
----> 2 df = pd.read_csv('destinations.csv', compression='infer',date_parser=True, usecols=([0,1,3]))
      3 df.head()

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision)
    653                     skip_blank_lines=skip_blank_lines)
    654 
--> 655         return _read(filepath_or_buffer, kwds)
    656 
    657     parser_f.__name__ = name

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
    403 
    404     # Create the parser.
--> 405     parser = TextFileReader(filepath_or_buffer, **kwds)
    406 
    407     if chunksize or iterator:

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
    762             self.options['has_index_names'] = kwds['has_index_names']
    763 
--> 764         self._make_engine(self.engine)
    765 
    766     def close(self):

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
    983     def _make_engine(self, engine='c'):
    984         if engine == 'c':
--> 985             self._engine = CParserWrapper(self.f, **self.options)
    986         else:
    987             if engine == 'python':

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
   1603         kwds['allow_leading_cols'] = self.index_col is not False
   1604 
-> 1605         self._reader = parsers.TextReader(src, **kwds)
   1606 
   1607         # XXX

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__ (pandas/_libs/parsers.c:6175)()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._get_header (pandas/_libs/parsers.c:9691)()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

stackoverflow 上的一些答案表明这是因为它被 gzip 压缩,但 Chrome 下载了 .csv 文件,而 .csv.gz 无处可见,并返回文件未找到错误。

然后我读到某个地方可以使用encoding='latin1',但这样做后我收到解析器错误:

---------------------------------------------------------------------------
ParserError                               Traceback (most recent call last)
<ipython-input-21-f9c451f864a2> in <module>()
      1 import pandas as pd
      2 
----> 3 destinations = pd.read_csv("destinations.csv",encoding='latin1')
      4 test = pd.read_csv("test.csv")
      5 train = pd.read_csv("train.csv")

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision)
    653                     skip_blank_lines=skip_blank_lines)
    654 
--> 655         return _read(filepath_or_buffer, kwds)
    656 
    657     parser_f.__name__ = name

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
    409 
    410     try:
--> 411         data = parser.read(nrows)
    412     finally:
    413         parser.close()

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in read(self, nrows)
   1003                 raise ValueError('skipfooter not supported for iteration')
   1004 
-> 1005         ret = self._engine.read(nrows)
   1006 
   1007         if self.options.get('as_recarray'):

/usr/local/lib/python3.6/site-packages/pandas/io/parsers.py in read(self, nrows)
   1746     def read(self, nrows=None):
   1747         try:
-> 1748             data = self._reader.read(nrows)
   1749         except StopIteration:
   1750             if self._first_chunk:

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read (pandas/_libs/parsers.c:10862)()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory (pandas/_libs/parsers.c:11138)()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._read_rows (pandas/_libs/parsers.c:11884)()

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows (pandas/_libs/parsers.c:11755)()

pandas/_libs/parsers.pyx in pandas._libs.parsers.raise_parser_error (pandas/_libs/parsers.c:28765)()

ParserError: Error tokenizing data. C error: Expected 2 fields in line 11, saw 3

我花了几个小时来调试这个,尝试在 Atom 上打开 csv 文件(没有其他应用程序可以打开它),在线网络应用程序(有些崩溃了)但没有帮助。我尝试使用其他人的内核已经解决了问题,但没有帮助。


它仍然很可能是 gzip 压缩的数据。 gzip 的神奇数字是0x1f 0x8b,这与UnicodeDecodeError你得到。

您可以尝试即时解压缩数据:

with open('destinations.csv', 'rb') as fd:
    gzip_fd = gzip.GzipFile(fileobj=fd)
    destinations = pd.read_csv(gzip_fd)

或者使用 pandas 的内置 gzip 支持:

destinations = pd.read_csv('destinations.csv', compression='gzip')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnicodeDecodeError:“utf-8”编解码器无法解码位置 1 中的字节 0x8b:在 pandas 中读取 csv 文件时起始字节无效 的相关文章

  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • ipython/ pylab/ matplotlib安装和初始化错误

    我在 OS X El Captain 上安装了 matplotlib anaconda ipython 然而 即使在尝试以所有可能的方式设置环境变量之后 我仍无法启动 ipython shell pylab 版本 这是错误 ImportEr
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • Tensorflow 2.1/Keras - 尝试冻结图形时出现“output_node 不在图形中”错误

    我正在尝试保存使用 Keras 创建的模型并保存为 h5 文件 但每次尝试运行 freeze session 函数时都会收到此错误消息 输出节点 身份不在图中 这是我的代码 我使用的是 Tensorflow 2 1 0 def freeze
  • 如何在Android应用程序中截取状态栏内容的屏幕截图?

    我有一个要求 我必须在android中截取当前窗口的屏幕截图 这是我使用的代码 View rootView getWindow getDecorView findViewById android R id content View scre
  • SQL Server 依赖项

    有没有一种简单的方法可以在 SQL Server 2005 中追踪表 存储过程 函数依赖关系 我继承了一个巨大的应用程序 其中包含大量表以及更多的长且相互关联的存储过程和函数 到底有没有办法构建依赖树 理想情况下 我正在寻找两个方向 对于表
  • 如何使用 requirejs 获得真正的错误?

    我是 requireJS 的新手 我试图找出为什么我不能得到正常的错误 我在加载 requirejs 文件之后 加载任何模块之前使用它 requirejs onError function err console log err requi
  • 转储 API 21 的 AppCompat

    因此 我正在创建一个 Lollipop 5 0 API 21 及更高版本的应用程序 对支持旧设备的兴趣为零 在使用 UI 元素和布局 侧边栏又名导航栏 墨水等 等 Material Design 时 我是否仍然需要 appcompat 库
  • 如何在较小的屏幕上禁用 Bootstrap 的“affix”?

    我在网站中使用 Affix 组件作为导航栏 并希望在较小的屏幕上禁用它 我正在使用 jquery 方法与数据 并且不知道当我的屏幕分辨率小于 767px 时如何关闭它 我尝试过在调整大小和滚动时捕获窗口宽度 然后返回 false 或删除附加
  • 如何/应该使用 Mockito 对 EventBus 事件进行单元测试?

    我在 Android 应用程序中使用 Otto 的 EventBus In my LoginNetworkOperation类中 我捕获了不同类型的网络连接错误 并为每个错误发布了不同的总线事件 并且我的LoginPresenter当这些事
  • Google Apps 脚本/表返回错误请求 400

    我有一个在 Google Sheet 上运行的相当简单的脚本 该脚本接受 Webhook POST 并将 Webhook 的内容写入电子表格中的新行 该脚本按预期运行 并在收到数据时写入新行 但是 由于某种原因 我发送 webhook 的应
  • 如何从firebase实时数据库中删除?

    I am using Firebase realtime database in Android app and have data like this 如何删除 Apple 记录 如图所示 根据文档 要删除您调用的项目移除值 关于参考 但
  • 运行打包代码时出现 KeyError: 0L

    我有一个名为rra py具有以下骨架结构 usn usnl from bs4 import BeautifulSoup import re import asys import glob import os import sys impor
  • 如何检索数据库(如雪花或任何此类数据库)中的所有目录名称、模式名称和表名称?

    我需要删除一些列并将雪花表中的数据大写 为此 我需要循环遍历所有目录 数据库 其各自的模式 然后是表 我需要在 python 中列出目录模式 然后列出表 然后我将执行 SQL 查询来执行操作 如何继续 1 列出所有目录名称 2 列出所有模式
  • Python:测试空集交集而不创建新集

    我经常发现自己想要测试两个集合的交集而不使用交集的结果 set1 set 1 2 set2 set 2 3 if set1 set2 print Non empty intersection else print Empty interse
  • URL 中的 CSS 选择器

    当你有这样的网址时www example com signup 浏览器所做的只是将其视图集中在具有 id 的 HTML 元素上signup 是对的吗 如果元素以这种方式聚焦 是否可以更改其 CSS 样式 E g 假设我有一个 div 元素
  • 基于 IP 和引荐来源网址的 PHP 重定向

    我正在尝试根据用户的 IP 和空白引荐来源网址将我的网络中的用户重定向到我们网站上的特定登录页面 该代码可以工作 但最终会陷入重定向循环 如何打破重定向循环以正确重定向用户 谢谢 visitor SERVER HTTP REFERER cl
  • Matplotlib 依赖滑块

    我想通过选择三角形的权重来选择三角形的一个点 这应该通过控制 2 个滑块来完成 matplotlib widgets Slider 这两个滑块表示定义点的三个权重中的两个 第三个权重很容易计算为1 0 slider1 slider2 现在很
  • wcf 配置文件与代码配置的优缺点

    我有一个自托管 C WCF 服务 它为各种目的创建 20 多个端点 每个都在代码本身中配置 并在服务的 app config 中使用一些基本配置项 例如端口和地址 该服务对于经过测试的客户来说效果很好 但尚未经过广泛测试 我对标准 wcf
  • 休眠:刷新、驱逐、复制和刷新

    我希望我知道这个列表中的每个项目到底是什么 它是如何工作的 后果是什么以及什么时候是正确的使用时间 Refresh Evict 复制 Flush 我什至想知道每个人的作用 但我不太确定 所以我请求你的帮助 因为我真的很想了解它 我知道这是一
  • 使用 Javascript SDK 创建 Parse.File

    我遵循了法律条文 Javscript SDK 以及许多变体 但到目前为止我还无法将图像保存到 Parse File 我开始认为这是他们在放弃平台之前从未完成的代码 这是我的错误 无法构造 文件 需要 2 个参数 但仅存在 0 个 这是我的代
  • Rails/PostgreSQL - 查询更新所有日期添加 1 天

    我想执行 update all 查询来更新日期时间列 在所有行上将该列的当前值添加 1 天 我可以使用 each 和 update 来实现这一点 但在单个查询中执行会更有效 使用 Rails 和 PostgreSQL 可以实现这一点吗 UP
  • UnicodeDecodeError:“utf-8”编解码器无法解码位置 1 中的字节 0x8b:在 pandas 中读取 csv 文件时起始字节无效

    我知道类似的问题已经被问过 我已经看过所有这些问题并尝试过 但没有什么帮助 我正在使用 OSX 10 11 El Capitan python3 6 虚拟环境 也尝试过没有它 我使用的是jupyter笔记本和spyder3 我是 Pytho