小末末末
本文所演示的的可視化方法
- 散點圖 (Scatterplot)
- 直方圖 (Histogram)
- 小提琴圖 (Violinplot)
- 特徵兩兩對比圖(Pairplot)
- 安德魯斯曲線 (Andrews curves)
- 核密度圖 (Kernel density estimation plot)
- 平行座標圖 (Parallel coordinates)
- Radviz (力矩圖?)
- 熱力圖 (Heatmap)
- 氣泡圖 (Bubbleplot)
這裡主要使用Python一個流行的作圖工具: Seaborn library,同時Pandas和bubbly輔助。為什麼Seaborn比較好?
因為很多時候數據分析,建模前,都要清洗數據,清洗後數據的結果總要有個格式,我知道的最容易使用,最方便輸入模型, 最好畫圖的格式叫做"Tidy Data" (Wickham H. Tidy data[J]. Journal of Statistical Software, 2014, 59(10): 1-23.) 其實很簡單,Tidy Data格式就是:
- 每條觀察(記錄)自己佔一行
- 觀察(記錄)的每個特徵自己佔一列
舉個例子,我們即將作圖的數據集IRIS就是Tidy Data(IRIS(IRIS數據集)_百度百科):
Iris數據集是常用的分類實驗數據集,由Fisher, 1936收集整理。Iris也稱鳶尾花卉數據集,是一類多重變量分析的數據集。數據集包含150個數據集,分為3類,每類50個數據,每個數據包含4個屬性。可通過花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性預測鳶尾花卉屬於(Setosa,Versicolour,Virginica)三個種類中的哪一類。
該數據集包含了5個屬性:
Sepal.Length(花萼長度),單位是cm;
Sepal.Width(花萼寬度),單位是cm;
Petal.Length(花瓣長度),單位是cm;
Petal.Width(花瓣寬度),單位是cm;
種類:Iris Setosa(山鳶尾)、Iris Versicolour(雜色鳶尾),以及Iris Virginica(維吉尼亞鳶尾)。
IRIS數據可以看到,每條觀察(ID=0,1,2...)自己佔一行,每個特徵(四個部位長/寬度,種類)自己佔一列。Seaborn就是為Tidy Data設計的,所以方便使用。
所以這個數據集有6列,6個特徵,很多時候做可視化就是為了更好的瞭解數據,比如這裡就是想看每個種類的花有什麼特點,怎麼樣根據其他特徵把花分為三類。我個人的喜好是首先一張圖儘量多的包含數據點,展示數據信息,從中發現規律。我們可以利用以下代碼完全展示全部維度和數據這裡用的bubbly:
三維圖,全局觀察Python做出來,其實是一張可以拖動角度,放大縮小的圖,拖一拖看各角度視圖會發現三類還是分的挺明顯的。Github上這個bubbly還是很厲害的,方便。
接下來開始做一些基礎的可視化,沒有用任何修飾,代碼只有最關鍵的畫圖部分,可視化作為比賽的一個基礎和開端,個人理解做出的圖能看就行,美不美無所謂,不美也不扣分。因為
散點圖,可以得到相關性等信息,比如基本上SepalLengthCm越大,SepalWidthCm越大
散點圖使用Jointplot, 看兩個變量的分佈,KDE圖,同時展示對應的數據點
就像上一篇說的,比賽中的每個環節都至關重要,很有必要看下這些分佈直方圖,kde圖,根據這些來處理異常值等,這裡請教,為什麼畫了直方圖還要畫KDE??我理解說的都是差不多的東西。
關於KDE:"由於核密度估計方法不利用有關數據分佈的先驗知識,對數據分佈不附加任何假定,是一種從數據樣本本身出發研究數據分佈特徵的方法,因而,在統計學理論和應用領域均受到高度的重視。"
無論如何,我們先畫直方圖,再畫KDE
直方圖KDE 圖這裡通過KDE可以說,由於Setosa的KDE與其他兩種沒有交集,直接可以用Petailength線性區分Setosa與其他兩個物種。
Pairplot箱線圖,顯示一組數據分散情況的統計圖。形狀如箱子。主要用於反映原始數據分佈的特徵,關鍵的5個黑線是最大值、最小值、中位數和兩個四分位數。在判斷異常值,處理異常值時候有用。
BoxPlot小提琴圖
Violinplot這個Andrews curves很有趣,它是把所有特徵組合起來,計算個值,展示該值,可以用來確認這三個物種到底好不好區分,維基百科的說法是“If there is structure in the data, it may be visible in the Andrews' curves of the data.”(Andrews plot - Wikipedia)
Andrews' curves radvizRadviz可視化原理是將一系列多維空間的點通過非線性方法映射到二維空間的可視化技術,是基於圓形平行座標系的設計思想而提出的多維可視化方法。圓形的m條半徑表示m維空間,使用座標系中的一點代表多為信息對象,其實現原理參照物理學中物體受力平衡定理。 多維空間的點映射到二維可視空間的位置由彈簧引力分析模型確定。 (Radviz可視化原理 - CSDN博客) ,能展示一些數據的可區分規律。
數值是皮爾森相關係數,淺顏色表示相關性高,比如Petal.Length(花瓣長度)與 Petal.Width(花瓣寬度)相關性0.96,也就是花瓣長的花,花瓣寬度也大,也就是個大花。
不過,現在做可視化基本上不用python了,具體為什麼可以去看我的寫的文章,我拿python做了爬蟲,BI做了可視化,效果和速度都很好。
- finereport
可視化的一大應用就是數據報表,而FineReport可以自由編寫整合所需要的報表字段進行報表輸出,支持定時刷新和監控郵件提醒,是大部分互聯網公司會用到的日常報表平臺。
尤其是公司體系內經營報表,我們用的是商業報表工具,就是finereport。推薦他是因為有兩個高效率的點:①可以完成從數據庫取數(有整合數據功能)—設計報表模板—數據展示的過程。②類似excel做報表,一張模板配合參數查詢可以代替幾十張報表。
- FineBI
簡潔明瞭的數據分析工具,也是我個人最喜歡的可視化工具,優點是零代碼可視化、可視化圖表豐富,只需要拖拖拽拽就可以完成十分炫酷的可視化效果,擁有數據整合、可視化數據處理、探索性分析、數據挖掘、可視化分析報告等功能,更重要的是個人版免費。
主要優點是可以實現自助式分析,而且學習成本極低,幾乎不需要太深奧的編程基礎,比起很多國外的工具都比較易用上手,非常適合經常業務人員和運營人員。在綜合性方面,FineBI的表現比較突出,不需要編程而且簡單易做,能夠實現平臺展示,比較適合企業用戶和個人用戶,在數據可視化方面是一個不錯的選擇;
這些是我見過比較常用的,對數據探索有幫助的可視化方法。
IT技術管理那些事兒
這個非常簡單,PyQt就可以輕鬆實現,一個基於Qt的接口包,可以直接拖拽控件設計UI界面,下面我簡單介紹一下這個包的安裝和使用,感興趣的朋友可以自己嘗試一下:
1.首先,安裝PyQt模塊,這個直接在cmd窗口輸入命令“pip install pyqt5”就行,如下,整個模塊比較大,下載過程需要等待一會兒,保持聯網:
2.安裝完成後,我們就可以直接打開Qt自帶的Qt Designer設計師設計界面了,這裡默認會安裝到site-packages->PyQt5->Qt->bin目錄,打開後的界面如下,可以直接新建對話框等窗口,所有的控件都可以直接拖拽,編輯屬性,非常方便:
3.這裡我簡單的設計了一個登錄窗口,2個輸入框和2個按鈕,如下,這裡可以直接使用QSS對界面進行美化(設置styleSheet屬性即可),類似網頁的CSS,如果你有一定的前端基礎,那麼美化起來會非常容易:
設計完成後,還只是一個ui文件,不是現成的Python代碼,還需要藉助pyuic5工具(也在bin目錄下)才能將ui文件轉化為Python代碼,切換到ui文件所在目錄,輸入命令“pyuic5 -o login.py login.ui”即可(這裡替換成你的ui文件),轉化成功後的Python代碼如下(部分截圖):
還需要在最下面添加一個main函數,創建上面Ui_Form類對象顯示窗口即可,如下:
最後點擊運行程序,效果如下,和剛才設計的界面效果一模一樣:
至此,我們就完成了利用Python的PyQt模塊直接拖拽控件來設計UI界面。總的來說,整個過程非常簡單,只要你有一定的Python基礎,熟悉一下操作過程,很快就能掌握的,當然,還有許多其他UI開發模塊,像tkinter,wxPython,Eric6等,也都非常不錯,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。
小小猿愛嘻嘻
這個本來不屬於數碼系列的問答,但是我做過一些python的可視化界面,在此和大家分享下。
眾所周知,python作為一門膠水語言,目前依託人工智能的平臺,得到了非常快的發展。所謂人生苦短,我用python也不是沒有道理。python有強大之處,自然也有短板,那麼python的可視化到底怎麼樣呢?這篇簡單的文章給您一個簡單的解答。
python可視化界面的幾個工具:
1、tkinter
2、pyQt5等
簡單介紹下各自的特點:
https://blog.csdn.net/qq_41185868/article/details/79923181先來說tkinter,這個是我接觸的第一個用戶圖形界面,也是python自帶的庫,不用pip安裝就可以使用
說下具體的用途:下載酷狗音樂的音樂、MV的用戶界面
具體的界面如下:
是一個很簡單的用戶界面,可以根據關鍵詞下載酷狗音樂的歌曲,無版權的除外。tkinter做GUI界面的時候,適合比較小的項目,因為代碼需要一點一點敲,而且佈局需要規劃調整,如果想要美觀簡約,修改的工作量大。而且後面如果有部分項目需要改動,代碼的改動量也非常大,因此來講並不是一件很優雅的事情。
即,做小項目可以拿來練練。
pyqt5,這個庫的功能十分強大,需要自行安裝,創建的界面很優美,不過我不常用。
原因:
1、安裝和配置很麻煩,需要和pycharm配置才能自定義添加控件,有點和Vb很類似。不過前期安裝配置工作完成,對後面的工作會有很大幫助,需要有耐心的朋友去試試。非專業的我,湊湊熱鬧就行。
2、因為懶的緣故,沒仔細去研究。
在網上找過一篇文章,做出來的效果是這樣的。很不錯,值得去研究。
總結建議:大項目建議不用python來GUI,小項目可以試一試,比如tkinter and pyQt5。能實現具體的功能不要求美觀,可以用tkinter,想要美觀度可以用pyQt5。
我辭木子為劉
首先,如果沒有安裝python和PyQt軟件的請先直接搜索下載並安裝。python是一個開源軟件,因此都是可以在網上免費下載的,最新版本即可。下載完成後,我們先打開PyQt designer。
2
打開後,首先是一個默認的新建窗口界面,在這裡我們就選擇默認的窗口即可。
3
現在是一個完全空白的窗口。第一步我們要先把所有的設計元素都拖進這個窗口。我們先拖入一個“Label”,就是一個不可編輯的標籤。
隨後我們再拖入一個可以編輯的“Line Edit”
最後我們拖入最後一個元素:“PushButton”按鈕,也就是平時我們所點的確定。
目前我們已經把所有所需要的元素都拖入了新建的窗口。對於每一個元素,我們都可以雙擊進行屬性值的修改,此時我們僅需要雙擊改個名字即可
此時我們已經完成了一半,接下來需要對動作信號進行操作。我們需要先切入編輯信號的模式
此時把鼠標移動到任意元素,都會發現其變成紅色,代表其被選中。
當我們選中pushbutton後,繼續拖動鼠標指向上面的line edit,會發現由pushbutton出現一個箭頭指向了line edit,代表pushbutton的動作會對line edit進行操作。
隨即會彈出一個配置連接窗口。左邊的是pushbutton的操作,我們選擇clicked(),即點擊pushbutton。
右邊是對line edit的操作,我們選擇clear(),即清楚line edit中的內容。
最後我們點擊確定。
保存完成後,我們在PyQt中的操作就已經完成了。保存的文件名我們命名為test,PyQt生成的設計文件後綴是.ui。
小紅的甜心
Python下做可視化界面有好幾個流行的GUI庫。
Tkinter是Python歷史最悠久的GUI庫,已然成為標準的GUI庫,python安裝好就自帶Tkinter庫,著名的IDLE就是使用Tkinter實現的,學習起來比較簡單。
PyQt 功能非常強大,可以開發出漂亮美觀的界面,跨平臺支持的很好,python上的pyQt工具集包含了440個類及6000多個函數。Qt是目前最流行GUI開發工具之一,非常推薦使用。
wxPython是對跨平臺GUI工具集wxWidgets(C++編寫)的包裝,作為一個擴展模塊實現。
PySide另一個跨平臺的GUI工具集,最初由BoostC++庫實現,後來遷移到Shiboken。
在python下推薦使用Tkinter和PyQt來開發GUI界面。如果界面簡單,可用Tkinter快速開,學習成本不高,幾天就可構建出簡單的界面;如果追求人機交互界面的美觀,使用pyQt進行開發,學習需要一些時間成本,但其強大的功能幾乎能滿足任何GUI界面需求。