Pandas读取CSV含特殊字符编码异常问题及词云处理需求
解决Pandas读取CSV后的特殊字符转义问题
这问题我碰到过好几次,根源就是Pandas读取CSV时没匹配到正确的编码——虽然df.head()能正常显示,但底层存储的是转义后的字节序列,直接取单元格内容就会出现\xc3\xa1这类乱码。Excel和LibreOffice能正常打开,说明文件本身编码是标准的,咱们一步步解决:
1. 读取时直接指定正确编码
最省心的方法是在pd.read_csv里明确编码参数,优先试utf-8,不行再试latin-1(也就是ISO-8859-1):
# 优先尝试UTF-8编码 df = pd.read_csv('../data.csv', encoding='utf-8') # 如果UTF-8报错,切换到Latin-1 df = pd.read_csv('../data.csv', encoding='latin-1')
读取后再用df.iloc[0].descripcion检查,应该就能看到正常的á、ñ这类特殊字符了。
2. 修复已读取的DataFrame编码
要是已经读取了DataFrame不想重新加载,可以手动对目标列进行转码处理:
# 将转义字符串先编码为字节,再用UTF-8解码成正常字符 df['descripcion'] = df['descripcion'].apply(lambda x: x.encode('latin-1').decode('utf-8'))
这个操作能把\xc3\xa1这类转义序列还原成对应的Unicode字符。
3. 优化词云处理代码(确保编码正常)
编码问题解决后,你的词云代码也可以优化得更简洁高效,同时保证特殊字符正常显示:
from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt stopwords = set(STOPWORDS) comment_words = "" # 遍历所有描述行,统一转小写并拼接 for desc in df['descripcion']: tokens = desc.lower().split() comment_words += " ".join(tokens) + " " # 生成词云 wordcloud = WordCloud( width=1600, height=1600, background_color='white', stopwords=stopwords, min_font_size=10 ).generate(comment_words) # 绘图展示 plt.figure(figsize=(8, 8), facecolor=None) plt.imshow(wordcloud) plt.axis("off") plt.tight_layout(pad=0) plt.show()
内容的提问来源于stack exchange,提问作者Ricardo Colombo
相关产品推荐
相关产品推荐

