1. 程式人生 > >Python操作中出現中文亂碼等問題

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電腦字型安裝

附,字型對應名稱

1.程式碼開始: