python读取csv出错怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python读取csv出错怎么解决相关的知识,希望对你有一定的参考价值。

Python用pandas的read_csv函数读取csv文件。相关推荐:《Python基础教程》首先,导入pandas包后,直接用read_csv函数读取报错OSError,如下

参考技术A Python用pandas的read_csv函数读取csv文件。
相关推荐:《Python基础教程》
首先,导入pandas包后,直接用read_csv函数读取报错OSError,如下:
解决方案是加上参数:engine='python'。
运行之后没有报错,正在我欣喜之余,输出一下data.head()想看看数据时候,看到了心痛的感觉,数据乱码了。
然后,一通百度,解决方案是加上参数:encoding=‘utf-8’。结果,这回数据成这样了:
感受到我心累的感觉了吧。
后来我发现,两个解决方案:
第一个:关掉Anaconda,重启Anaconda之后再使用pd.read_csv()加上参数:engine='python'之后就成功了。
第二个:将文件名改为英文名之后直接使用pd.read_csv()就成功了。

读取 CSV 文件时 Python Pandas 出错

【中文标题】读取 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 文件不适合,那么您可能会收到此错误。您应该尝试另一个数据集。

【讨论】:

以上是关于python读取csv出错怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

python读取csv文件时,数据内容含有中文,读取出错,怎么办

python读取csv文件时,数据内容含有中文,读取出错,怎么办

读取 CSV 文件时 Python Pandas 出错

读取 csv 文件并在 python 中返回数据帧时出错

由于额外的列值,尝试使用 pandas Python 读取 csv 时出错

python读取和生成excel文件