Python操作中出现中文乱码等问题

1.代码开始:

#-*-coding:utf-8 -*-
 
  • 1

2.读写csv或者excel文件

  • pandas读取CSV文件,中文出现乱码:

a. 设置encoding=’gbk’或者encoding=’utf-8’。

pd.read_csv('data.csv',encoding='gbk')
 
  • 1

b. 若设置encoding直接报错:用记事本打开csv文件,另存为设置编码为utf-8,然后重新读取文件设置encoding=’utf-8’

  • pandas导出CSV文件,中文出现乱码:
    在导出时记得也加上encoding参数,否则导出后用excel打开也是乱码,editplus打开正常,如:
df.to_csv("sel.csv",index=False,encoding="gbk")
 
  • 1
  • 若以上方法均不能解决:
df.to_csv("cnn_predict_result.csv",encoding="utf_8_sig")
 
  • 1
df2.to_csv('./10086_new.csv', encoding = 'utf_8_sig')
 
  • 1

在程序中能够正常输出中文,但是导出到文件后使用excel打开是出现中文乱码是因为excel能够正确识别用gb2312、gbk、gb18030或utf_8 with BOM 编码的中文,如果是utf_8 no BOM编码的中文文件,excel打开会乱码。

  • pandas的to_csv方法:
    如:
df_data.to_csv('/tmp/9.csv',columns=['open','high'],index=False,header=False,encoding = 'utf_8_sig')# 不要列头,不要索引,只要open,high两列
 
  • 1

pandas.DataFrame.to_csv

可以参考python csv 中文乱码解决方法

3.matplotlib显示中文问题

plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
 
  • 1
  • 2
  • 在Jupyter中可能依然无法解决,可尝试以下方法:

a. 先导入字体

myfont = mpl.font_manager.FontProperties(fname='/System/Library/Fonts/STHeiti Light.ttc')
 
  • 1

b. 在title/xlabel/ylabel 处加关键字参数fontproperties=myfont
在legend处加prop=myfont

from pylab import mpl  #import matplotlib as mpl 
myfont = mpl.font_manager.FontProperties(fname='./../../../../../../Library/Fonts/Microsoft/Kaiti.ttf')  
mpl.rcParams['axes.unicode_minus'] = False

index = df['unname']
values1 = df['count']
width= 0.5
plt.title(u'十三场景条状图',fontproperties=myfont)
plt.bar(index,values1,color='g',alpha=0.5)
plt.xticks(index+0.4,df[u'十三场景'],fontproperties=myfont)
plt.show()
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

ps:

ax.legend(lines, labs, loc='best',prop=myfont)   #定义图标,注意zhfont1是字体,prop是加字体的参数。loc是图标在图里的位置参数。

plt.xlabel(u'日期', fontproperties=myfont)   #x轴名称。与lengend参数不同,fontproperties是坐标轴名称和图表标题改变字体的参数。

plt.title(u'预览页到下单提交页用户累积数转化率', fontproperties=myfont)   #图表标题
 
  • 1
  • 2
  • 3
  • 4
  • 5
字体 windows名称
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
仿宋_GB2312 FangSong_GB2312
楷体_GB2312 KaiTi_GB2312

宋体:SimSuncss中中文字体(font-family)的英文名称

字体 Mac OS
华文细黑 STHeiti Light [STXihei]
华文黑体 STHeiti
华文楷体 STKaiti
华文宋体 STSong
华文仿宋 STFangsong

有用python处理csv文件出现乱码或者报错的情况可以尝试把csv文件保存为Excel文件来解决问题。

更多字体可以参考此处

可以参考matplotlib在Jupyter中文显示问题

参考

Mac电脑获取文件路径
Mac电脑字体安装

附,字体对应名称

全部评论

相关推荐

点赞 评论 收藏
分享
牛客339922477号:都不用reverse,直接-1。一行。啥送分题
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务