IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ParserError: Error tokenizing data. C error: Expected 8 fields in line 8 saw 10 完整解决方案 -> 正文阅读

[Python知识库]ParserError: Error tokenizing data. C error: Expected 8 fields in line 8 saw 10 完整解决方案

ParserError: Error tokenizing data. C error: Expected 8 fields in line 8, saw 10
作者注:建议你先耐心阅读完此内容,然后参考解法对应修改;如果您只想知道具体修改内容可对比1.2节和第3部分内容直接修改程序。

1、错误

1.1、 报错内容截图

报错内容截图

1.2 原代码 [ 1 ] ^{[1]} [1]

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
seeds = pd.read_csv('..\dataPractice/data/seeds_dataset.txt',sep="\t")
print('数据集形状为:', seeds.shape)
# 处理数据
seeds_data = seeds.iloc[:,:7].values
seeds_target = seeds.iloc[:,7].values
seeds_names = seeds.columns[:7]
stdScale = StandardScaler().fit(seeds_data)
seeds_dataScale = stdScale.transform(seeds_data)
# 构建并训练模型
kmeans = KMeans(n_clusters = 3, random_state=42).fit(seeds_data)
print('构建的K-Mneabs模型为:\n',kmeans)

2、分析

  • 发现错误的时候就蒙了,第一反应,立马百度,或许某位大佬的博客有!!!(事实并非如此)
    • 解法一 [ 2 ] ^{[2]} [2]seeds = pd.read_csv('..\dataPractice/data/seeds_dataset.txt',sep="\t",error_bad_lines=False)
      实话实说,这个方法用了之后,还是会报错,但是不影响程序运行,本人有强迫症,所以继续寻找更合适的解决办法。
    • 解法二 [ 3 ] ^{[3]} [3]:无意中看到engine='python',就想着既然报的是C error是不是可以把这行代码添加到程序里:seeds = pd.read_csv('..\dataPractice/data/seeds_dataset.txt',sep="\t",error_bad_lines=False,engine='python')`
      结果还是不行。
    • 重新思考问题,返回查看出现问题的代码,打开文件查看数据,经查是数据格式不规则(附下图),导致读取有错误。
      在这里插入图片描述
      可以看出第8行数据并未对齐
      秃然脑子里蹦出个想法,sep="\t"其实就是正则表达式的意思,在读取数据的时候以一个制表符为间隔读取数据(sep : 输出文件的字段分隔符,默认为 “,”),只是第8行数据多了一个制表符,所以将sep="\t"替换为sep="\t+",结果还会出现错误:
      在这里插入图片描述
      仍然是C错误,所以添加上述解法二的代码:
seeds = pd.read_csv('..\dataPractice/data/seeds_dataset.txt',sep="\t+",engine='python')

发现与书本数据相比少了一个样本,输出后查看是因为第一行数据被当作行标题了,于是继续修改代码:

seeds = pd.read_csv('seeds_dataset.txt',header = None,sep="\t+",engine='python')

至此为止,大功告成!!!

3、附正确程序:

修改部分

seeds = pd.read_csv('seeds_dataset.txt',header = None,sep="\t+",engine='python')

完整程序

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
seeds = pd.read_csv('seeds_dataset.txt',header = None,sep="\t+",engine='python')
print(seeds)
print('数据集形状为:', seeds.shape)
# 处理数据
seeds_data = seeds.iloc[:,:7].values
seeds_target = seeds.iloc[:,7].values
seeds_names = seeds.columns[:7]
stdScale = StandardScaler().fit(seeds_data)
seeds_dataScale = stdScale.transform(seeds_data)
# 构建并训练模型
kmeans = KMeans(n_clusters = 3, random_state=42).fit(seeds_data)
print('构建的K-Mneabs模型为:\n',kmeans)

[1]黄红梅, 张良均, 张凌, 施兴, 周东平. Python数据分析与应用[M].人民邮电出版社:, 201804.182-183.
[2] https://blog.csdn.net/shuiyixin/article/details/88930359
[3] https://blog.csdn.net/qq_43242266/article/details/103816278

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:06:36  更:2022-04-04 12:10:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:39:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码