数据清洗之字符编码问题

2020-07-01  本文已影响0人  小杨每天要早睡早起哦

Kaggle: Data Cleaning Challenge: Character Encodings

在使用Python 3中时,我们会遇到两种主要的文本数据类型。一个是字符串,默认是。另一个类型是字节,可以把一个字符串转换成指定的字节编码。

str.encode("utf-8", errors="replace")
str.decode("utf-8")

读取文件内容时的解码问题

有时在使用read_csv方法时,会出现如下的报错,说明无法使用utf-8解码

使用chardet模块

对于未知编码的bytes,要把它转换成str,需要先“猜测”编码。猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率“猜对”。

记得先导入chardet模块

import chardet

检测出的编码是Windows-1252,注意到还有个confidence字段,表示检测的概率是0.73(即73%)。

PS

也会出现检测匹配概率为100%,却依然无法解码的情况

使用ascii解码后出现报错

说明样本数量还不够,不足以代表整体的编码特征。我直接加到了十万,检测文件的前十万个字节

样本数量增大后,编码类型为windows-1252 解码成功

说句题外话,在《赤裸裸的统计学》一书中提到了样本容量的重要性,容量越大越好。从上面这个问题中足以见得。


from: 赤裸裸的统计学

保存utf-8编码文件

在Python中,utf-8是标准编码方式,因此默认保存utf-8编码文件

data.to_csv("xxxx.csv")
上一篇 下一篇

猜你喜欢

热点阅读