读取 CSV 文件时 Python Pandas 出错

Posted

技术标签:

【中文标题】读取 CSV 文件时 Python Pandas 出错【英文标题】:Error in Python Pandas when Reading CSV File 【发布时间】:2020-01-29 08:33:28 【问题描述】:

我正在尝试读取一个 CSV 文件,但它抛出了一个错误。我无法理解我的语法有什么问题,或者我需要向我的 read_csv 添加更多属性。

我尝试了解决方案

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0x96 字节 21:无效的起始字节 也是。但它不起作用

import pandas as pd


#Assign file_path variable
file_path = 'rawdump_24th_Sep.csv'

#assign dataframe
df1 = pd.read_csv(file_path,index_col=0)

df.head()

[错误]

UnicodeDecodeError Traceback(最近调用 最后)pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_tokens()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_with_dtype()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._string_convert()

pandas/_libs/parsers.pyx in pandas._libs.parsers._string_box_utf8()

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0x96 字节 21: 无效的起始字节

在处理上述异常的过程中,又发生了一个异常:

UnicodeDecodeError Traceback(最近调用 最后)在 6 7 #分配数据帧 ----> 8 df1 = pd.read_csv(file_path,index_col=0) 9 10 df.head()

~\Anaconda3\lib\site-packages\pandas\io\parsers.py 在 parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols,挤压,前缀,mangle_dupe_cols,dtype,引擎,转换器, true_values、false_values、skipinitialspace、skirows、skipfooter、 nrows,na_values,keep_default_na,na_filter,详细, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser,dayfirst,迭代器,块大小,压缩,数千, 十进制,换行符,quotechar,quoting,doublequote,escapechar, 注释、编码、方言、tupleize_cols、error_bad_lines、 warn_bad_lines,delim_whitespace,low_memory,memory_map, 浮点精度) 第700章 701 --> 702 返回_read(filepath_or_buffer, kwds) 703 704 parser_f.名称=名称

~\Anaconda3\lib\site-packages\pandas\io\parsers.py 在 _read(filepath_or_buffer, kwds) 433 434 尝试: --> 435 数据 = parser.read(nrows) 最后436: 第437章

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows) 1137 def 读取(self, nrows=None): 1138 nrows = _validate_integer('nrows', nrows) -> 1139 ret = self._engine.read(nrows) 1140 1141 # 可能改变列/col_dict

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows) 1993 def read(self, nrows=None): 1994 尝试: -> 1995 data = self._reader.read(nrows) 1996 除了 StopIteration: 1997 if self._first_chunk:

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._read_low_memory()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._read_rows()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_column_data()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_tokens()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_with_dtype()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._string_convert()

pandas/_libs/parsers.pyx in pandas._libs.parsers._string_box_utf8()

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0x96 字节 21: 无效的起始字节`

更新

import pandas as pd


#Assign file_path variable
file_path = 'rawdump_24th_Sep.csv'

#assign dataframe
df1 = pd.read_csv(file_path,index_col=0)

df1.head()

UnicodeDecodeError Traceback(最近调用 最后)pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_tokens()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_with_dtype()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._string_convert()

pandas/_libs/parsers.pyx in pandas._libs.parsers._string_box_utf8()

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0x96 字节 21: 无效的起始字节

在处理上述异常的过程中,又发生了一个异常:

UnicodeDecodeError Traceback(最近调用 最后)在 6 7 #分配数据帧 ----> 8 df1 = pd.read_csv(file_path,index_col=0) 9 10 df1.head()

~\Anaconda3\lib\site-packages\pandas\io\parsers.py 在 parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols,挤压,前缀,mangle_dupe_cols,dtype,引擎,转换器, true_values、false_values、skipinitialspace、skirows、skipfooter、 nrows,na_values,keep_default_na,na_filter,详细, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser,dayfirst,迭代器,块大小,压缩,数千, 十进制,换行符,quotechar,quoting,doublequote,escapechar, 注释、编码、方言、tupleize_cols、error_bad_lines、 warn_bad_lines,delim_whitespace,low_memory,memory_map, 浮点精度) 第700章 701 --> 702 返回_read(filepath_or_buffer, kwds) 703 704 parser_f.名称=名称

~\Anaconda3\lib\site-packages\pandas\io\parsers.py 在 _read(filepath_or_buffer, kwds) 433 434 尝试: --> 435 数据 = parser.read(nrows) 最后436: 第437章

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows) 1137 def 读取(self, nrows=None): 1138 nrows = _validate_integer('nrows', nrows) -> 1139 ret = self._engine.read(nrows) 1140 1141 # 可能改变列/col_dict

~\Anaconda3\lib\site-packages\pandas\io\parsers.py in read(self, nrows) 1993 def read(self, nrows=None): 1994 尝试: -> 1995 data = self._reader.read(nrows) 1996 除了 StopIteration: 1997 if self._first_chunk:

pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.read()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._read_low_memory()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._read_rows()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_column_data()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_tokens()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._convert_with_dtype()

pandas/_libs/parsers.pyx 在 pandas._libs.parsers.TextReader._string_convert()

pandas/_libs/parsers.pyx in pandas._libs.parsers._string_box_utf8()

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0x96 字节 21: 无效的起始字节

【问题讨论】:

***.com/questions/18171739/… 谢谢迈克尔 它工作。现在可以通过将 encoding = "ISO-8859-1" 添加到 read_csv 来使用它 【参考方案1】:

'rawdump_24th_Sep.csv' 应该在保存 .py 文件的同一文件夹中

import pandas as pd
df1 = pd.read_csv('rawdump_24th_Sep.csv')
df1

【讨论】:

将 df 更改为 df1。该文件与提到的位置位于同一文件夹中。通过将 df 更改为 df1 更新了我上面的问题 尝试了同样的错误 'utf-8' 编解码器无法解码位置 21 中的字节 0x96:无效起始字节【参考方案2】:

如果您的 csv 文件不适合,那么您可能会收到此错误。您应该尝试另一个数据集。

【讨论】:

以上是关于读取 CSV 文件时 Python Pandas 出错的主要内容,如果未能解决你的问题,请参考以下文章

python pandas没有从csv文件中读取第一列

Python Pandas:标记数据时出错。 C 错误:读取 1GB CSV 文件时字符串中的 EOF 开始

Python使用pandas & pymysql读取MySQL数据到csv文件中

Python使用pandas & pymysql读取MySQL数据到csv文件中

python读取csv出错怎么解决

读取大型 csv 文件、python、pandas 的随机行