Python匯入csv檔案生成統計圖片
阿新 • • 發佈:2018-11-17
從來沒有用過Python,以下是複製網上的程式碼,這個在linux環境下面可能會報錯
#coding=UTF-8 #匯入需要的模組 import numpy as np import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt import matplotlib.mlab as mlab import matplotlib.ticker as ticker #讀取CSV資料為numpy record array記錄 r = mlab.csv2rec('./test.csv') r.sort() #形成Y軸座標陣列 N = len(r) ind = np.arange(N) # the evenly spaced plot indices #ind1這裡是為了把圖撐大一點 ind1 = np.arange(N+3) #將X軸格式化為日期形式,X軸預設為0.5步進, #這裡將整數X軸座標格式化為日期,.5的不對應日期, #因為擴充套件了3格座標,所以N+的座標點也不顯示日期 def format_date(x, pos=None): if not x%1 and x<N: thisind = np.clip(int(x), 0, N-1) return r.create_date[thisind].strftime('%Y-%m-%d') else: return '' #繪圖 fig = plt.figure() ax = fig.add_subplot(111) #下行為了將圖擴大一點,用白色線隱藏顯示 ax.plot(ind1,ind1,'-',color='white') #正常要顯示的bug總數折線 ax.plot(ind, r['90thpct'], 'o-',label='90th-pct') #正常要顯示的bug已解決總數折線 ax.plot(ind, r['95thpct'], 'o-',label='95th-pct') #正常要顯示的bug已關閉總數折線 ax.plot(ind, r['99thpct'], 'o-',label='99th-pct') #圖示的標題 ax.set_title(u"TEST Trend Chart") #線型示意說明 ax.legend(loc='upper left') #在折線圖上標記資料,-+0.1是為了錯開一點顯示資料 datadotxy=tuple(zip(ind-0.1,r['90thpct']+0.1)) for dotxy in datadotxy: ax.annotate(str(int(dotxy[1]-0.1)),xy=dotxy) #將X軸格式化為日期形式 ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date)) fig.autofmt_xdate() #顯示圖片 plt.show() #將圖片儲存到指定目錄 plt.savefig("./test.png")
1.可能錯誤
no module named numpy
- 在官網上下載該包:
- 國外的包(經常被牆): http://sourceforge.net/projects/numpy/files/
- csdn下載:http://download.csdn.net/download/hezhenfei8/10047115
解壓 tar -zxvf numpy-1.11.2.tar.gz
cd 進入解壓後的路徑
輸入命令:python setup.py install
安裝完成
2.接下來有可能錯誤(缺少依賴)
Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-dev
解決辦法
yum install python-dev
- 可能錯誤一
ImportError: No module named matplotlib.pyplot
python沒有安裝模組
只需要安裝相應的模組即可
yum -y install python-matplotlib
- 可能錯誤二
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.6/site-packages/matplotlib/pyplot.py", line 78, in <module> new_figure_manager, draw_if_interactive, show = pylab_setup() File "/usr/lib64/python2.6/site-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup globals(),locals(),[backend_name]) File "/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtkagg.py", line 10, in <module> from matplotlib.backends.backend_gtk import gtk, FigureManagerGTK, FigureCanvasGTK,\ File "/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtk.py", line 11, in <module> raise ImportError("Gtk* backend requires pygtk to be installed.") ImportError: Gtk* backend requires pygtk to be installed.
只需要安裝相應的依賴即可:
yum install -tk 將兩個以-tk結尾的軟體裝上
yum install gtk2- 將幾個已gtk2開頭的軟體全裝上
3. 接下來可能出現錯誤
之後報錯:
RuntimeError: could not open display
網上有說是因為沒有linux介面導致的問題,在有介面上就可以了,參考
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=30199261&id=5204890
解決辦法:
最後找到了Linux沒有GUI的情況下使用matplotlib繪圖,嘗試了下果然可以。
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
#而且必須新增在import matplotlib.pyplot之前,否則無效
#最後在plt.draw後面加上
plt.savefig("/home/yourname/picFaster.jpg")
#就可以把繪製的圖存為jpg,down到本地檢視就行了
最後就可以成功的將csv檔案的資料變成想要的統計資料的圖片了
支援我的努力