Python中导入数据错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb9 in position 0: invalid start

预在Python中导入CSV文件,数据文件已放在同一工程目录下。

import pandas as pd
data = pd.read_csv("./data.csv")

报错如下:

Traceback (most recent call last):

  File "<ipython-input-2-21c2a26ae0ac>", line 1, in <module>
    data = pd.read_csv('./data.csv')

  File "D:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 655, in parser_f
    return _read(filepath_or_buffer, kwds)

  File "D:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 405, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)

  File "D:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 764, in __init__
    self._make_engine(self.engine)

  File "D:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 985, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)

  File "D:\ProgramData\Anaconda3\lib\site-packages\pandas\io\parsers.py", line 1605, in __init__
    self._reader = parsers.TextReader(src, **kwds)

  File "pandas/_libs/parsers.pyx", line 562, in pandas._libs.parsers.TextReader.__cinit__ (pandas\_libs\parsers.c:6175)

  File "pandas/_libs/parsers.pyx", line 781, in pandas._libs.parsers.TextReader._get_header (pandas\_libs\parsers.c:9691)

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

解决方案如下:

 data = pd.read_csv("./data.csv", encoding = "unicode_escape")

这个问题虽说解决了,但是在绘制散点图时却出现如下错误:

from matplotlib import pyplot as plt
plt.scatter(data.广告投入,data.销售额)
Traceback (most recent call last):

  File "<ipython-input-3-740375a4723d>", line 2, in <module>
    plt.scatter(data.广告投入,data.销售额)

  File "D:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 3081, in __getattr__
    return object.__getattribute__(self, name)

AttributeError: 'DataFrame' object has no attribute '广告投入'

查看变量,发现属性值都成了乱码,如下图所示:

原来在用pd.read_csv读取数据时不能正确读取中文标题。

解决方案如下:

data = pd.read_csv("./data.csv", encoding = "gb2312")

将读取数据时的方法修改一下就可以解决问题了。绘制散点图结果如下:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值