python實(shí)現(xiàn)數(shù)據(jù)可視化超詳細(xì)講解
可視化介紹
可視化是數(shù)據(jù)分析中 很重要 的一個(gè)環(huán)節(jié)
- 一圖勝千言
- 發(fā)現(xiàn)隱藏的關(guān)系、趨勢(shì)、影響
- 可視化本身也是一種探索數(shù)據(jù),分析數(shù)據(jù)的方式
- 可視化中的圖表可從維度主要分為一維圖表和二維圖表和多維圖表及互相對(duì)比圖表
- 主要用的庫(kù)為:seaborn和matplotlib
- 在cmd中安裝pip install seaborn和pip install matplotlib
阿里云的鏡像源:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
- 在jupyter中導(dǎo)入
- import seaborn as sns
- import matplotlib.pyplot as plt
- 大部分我們使用的功能都在pyplot的子模板下
一維圖表
一維圖表
- 直方圖 Histogram
- 表示數(shù)據(jù)分布
- 有助于展示數(shù)據(jù)頻率分布
- 橫軸:數(shù)據(jù)范圍
- 縱軸:個(gè)數(shù)
- 即一個(gè)數(shù)值變量.
- 表示數(shù)據(jù)分布
- sns.histplot(變量名)
- 密度圖 KernelDensity
- 表示數(shù)據(jù)分布
- 用平滑的曲線,更易看出分布形狀
- 表示數(shù)據(jù)分布
- sns.kdeplot(變量名)
- 箱型圖 BoxPlot
- 其中上界為最大值或者上界等于第三四分位數(shù)加上1.5×四分位距,跟上界進(jìn)行比較,誰(shuí)小取誰(shuí),作為上界
- 其中下界為最小值或者下界等于第一四分位數(shù)減去1.5×四分位距,跟下界進(jìn)行比較,誰(shuí)大取誰(shuí),作為下界
這樣做的好處是可以幫助我們發(fā)現(xiàn)數(shù)據(jù)當(dāng)中的異常值
- sns.boxplot(變量名)
- 小提琴圖 ViolinPlot
- 結(jié)合了密度圖、直方圖、箱形圖
- 橫軸:數(shù)據(jù)分布
- 縱軸:概率密度
- sns.violinplot(變量名)
補(bǔ)充的話
上述這些一維圖表中參數(shù)可以傳入DataFrame
(DataFrame名,x=" “,y=” ")
若要更改一維圖表中的標(biāo)題標(biāo)簽
plt.title(" ")
更改 x軸標(biāo)簽
plt.xlabel(" ")
更改 y軸標(biāo)簽
plt.ylabel(" ")
因?yàn)閙atplotlib庫(kù)中默認(rèn)的字體,它不支持中文,所以要自己手動(dòng)更換支持中文的字體
查看支持中文的字體,如下:
import matplotlib.pyplot as plt import seaborn as sns from matplotlib.font_manager import FontManager font_manager = FontManager() print(set(f.name for f in font_manager.ttflist))
更換字體,如下:
matplotlib.rc("font",family='Heiti TC')
二維圖表
- 折線圖 LinePlot
- 用于展示連續(xù)間隔或時(shí)間跨度上數(shù)值的變化,從而看出趨勢(shì)變化
- 兩個(gè) 數(shù)值變量
- 加一個(gè)顏色,即可多表示一個(gè)分類(lèi)變量
- sns.lineplot(data=DataFrame名,x=" “,y=” ")
- 餅圖 PiePlot
- 展示各個(gè)分類(lèi)對(duì)應(yīng)數(shù)值之間的比例
- 一個(gè)分類(lèi)變量,一個(gè)數(shù)值變量
- plt.pie(DataFrame名[“數(shù)值變量列]”,labels=DataFrame名[“分類(lèi)變量列”])
- autopct="%.1f%%" 該參數(shù)可以顯示百分比,%可以告訴系統(tǒng),這是用來(lái)展示格式字符串,%%告訴系統(tǒng),這是百分比結(jié)尾
- 散點(diǎn)圖 ScatterPlot
- 展示兩個(gè)數(shù)值變量關(guān)系
- 可以看出兩個(gè)變量之間的相關(guān)性
- x軸:一個(gè)變量的值
- y軸:一個(gè)變量的值
- 展示兩個(gè)數(shù)值變量關(guān)系
- sns.scatterplot(DataFrame名,x=" “,y=” ")
- 或者 sns.scatterplot(x=DataFrame[" “],y=DataFrame[” "])
- 條形圖 BarPlot
- 橫軸:分類(lèi)類(lèi)別
- 縱軸:數(shù)值
- 一個(gè)分類(lèi)變量加一個(gè)數(shù)值變量
- sns.barplot(data=DataFrame名,x=" “,y=” ")
- estimator 該參數(shù)可以指定縱軸的高度對(duì)應(yīng)所屬分類(lèi)下的所有值的樣式,不寫(xiě)該參數(shù),則默認(rèn)縱軸高度對(duì)應(yīng)所屬分類(lèi)下的所有值的平均值
但在條形圖基礎(chǔ)上,若縱軸想記錄個(gè)數(shù),則用
- 計(jì)數(shù)圖 countplot
- sns.countplot(data=DataFrame名, x=" ") Y軸自動(dòng)聚合成x里面的個(gè)數(shù)
補(bǔ)充的話
上述圖表的顏色有點(diǎn)不合時(shí)宜,更新顏色
color="顏色 " 或者 sns. set_palette(" 色盤(pán)")
常用的顏色有:
這里推薦這個(gè)網(wǎng)站:中國(guó)色,里面有非常多美麗的顏色,調(diào)色師、設(shè)計(jì)師必備哦
常用的色板有:
多維圖表
更多維
用面積大小和顏色來(lái)區(qū)分新的變量
氣泡圖
引入新的數(shù)值變量,用面積大小來(lái)區(qū)分
- plt.scatterplot(DataFrame,x=" “,y=” “,size=” ")
- 熱力圖 Heatmap
- 兩個(gè)分類(lèi)變量加一個(gè)數(shù)值變量
- x軸和y軸分別表示不同的分類(lèi)變量,顏色代表數(shù)值變量
- plt.heatmap(annot=True)
- annot 該參數(shù)表示具體數(shù)值展示出來(lái)
- 復(fù)式條形圖
- 在條形圖的基礎(chǔ)上引入多個(gè)條柱,則表示多個(gè)分類(lèi)變量
- sns.barplot(data=DataFrame名,x=" “,y=” ",hue="分類(lèi)變量 " )
補(bǔ)充的話
在基礎(chǔ)圖表的基礎(chǔ)上加一種顏色加一下面積大小,即可表示更多的變量
plt.scatterplot(DataFrame,x=" “,y=” “,hue=” “,size=” ")
更改圖例位置:
plt.legend(bbox_to_anchor=( 數(shù)字1 ,數(shù)字2))
- 數(shù)字1中有零/一可能性,數(shù)字2中有零/一可能性
- 數(shù)字一的零表示圖例在圖表的左邊,一表示在圖表的右邊。
- 數(shù)字二的零表示圖例在圖表的下面,一表示在圖表的上面。
互相對(duì)比
將這些圖表互相對(duì)比,挖掘出更多信息
在同一個(gè)單元格里輸入 多個(gè)相同的圖表的公式
最后plt.show() 出來(lái)
此時(shí)多個(gè)相同圖表就在一個(gè)圖上了。
- binwidth 該參數(shù)可以改變圖表的長(zhǎng)度
- label 該參數(shù)為圖例標(biāo)簽
例如以直方圖為例
那么最后呈現(xiàn)的結(jié)果若沒(méi)有展現(xiàn)出圖例標(biāo)簽,則再加一個(gè)plt.legend()
密度圖也是同樣的道理,但不需要binwidth參數(shù),因?yàn)樗且粭l平滑的曲線。
箱形圖
- 沒(méi)有label和binwidth參數(shù),只有y軸/x軸參數(shù)
小提琴圖也是同樣的道理
但會(huì)顯得很擁擠,更好選擇是將分類(lèi)變量作為x軸的變量,即x=" "
若想將不同的類(lèi)型的圖 并排放在一起
fig,axes=plt.subplots(行,列,figsize=(高,寬))
- fig 代表大圖
- axis代表小圖
這里是繪制空白圖
在想要的圖形種類(lèi)中,加入ax參數(shù)=axes[n]
- n表示第n個(gè)子圖,n從0開(kāi)始
配對(duì)圖 pairplot
- 能將DataFrame中的數(shù)值變量兩兩關(guān)系分布出來(lái)
- 將各變量的分布用直方圖繪制出來(lái)
- 將不同變量兩兩之間的關(guān)系繪制成散點(diǎn)圖
- sns.pairplot(,hue=" 分類(lèi)變量")
- 可以探討不同分類(lèi)變量之間的數(shù)值關(guān)系
以上就是python實(shí)現(xiàn)數(shù)據(jù)可視化超詳細(xì)講解的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)據(jù)可視化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 中的list和array的不同之處及轉(zhuǎn)換問(wèn)題
python中的list是python的內(nèi)置數(shù)據(jù)類(lèi)型,list中的數(shù)據(jù)類(lèi)不必相同的,而array的中的類(lèi)型必須全部相同。這篇文章給大家介紹了python 中的list和array的不同之處及轉(zhuǎn)換問(wèn)題,需要的朋友參考下吧2018-03-03Pycharm 解決自動(dòng)格式化沖突的設(shè)置操作
這篇文章主要介紹了Pycharm 解決自動(dòng)格式化沖突的設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Python 使用tempfile包輕松無(wú)痕的運(yùn)行代碼
大家好,我們知道軟件運(yùn)行過(guò)程中一般會(huì)在指定位置生成臨時(shí)文件,這些資源不要輕易刪除,可能是過(guò)程文件,定時(shí)清理是必要的,今天給大家分享一款工具:tempfile,喜歡本文點(diǎn)贊支持,歡迎收藏學(xué)習(xí)2021-11-11Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮
這篇文章主要為大家詳細(xì)介紹了Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Python棧的實(shí)現(xiàn)方法示例【列表、單鏈表】
這篇文章主要介紹了Python棧的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python基于列表、單鏈表定義棧的相關(guān)操作技巧,需要的朋友可以參考下2020-02-02pytorch?tensor按廣播賦值scatter_函數(shù)的用法
這篇文章主要介紹了pytorch?tensor按廣播賦值scatter_函數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Python實(shí)現(xiàn)向好友發(fā)送微信消息
利用python可以實(shí)現(xiàn)微信消息發(fā)送功能,怎么實(shí)現(xiàn)呢?你肯定會(huì)想著很復(fù)雜,但是python的好處就是很多人已經(jīng)把接口打包做好了,只需要調(diào)用即可,今天通過(guò)本文給大家分享使用?Python?實(shí)現(xiàn)微信消息發(fā)送的思路代碼,一起看看吧2022-06-06Python+Appium實(shí)現(xiàn)自動(dòng)搶微信紅包
不知從何時(shí)開(kāi)始微信紅包橫空出世,對(duì)于網(wǎng)速和手速慢的人只能在一旁觀望,做為python的學(xué)習(xí)者就是要運(yùn)用編程解決生活和工作上的事情。于是我用python解決我們的手速問(wèn)題python實(shí)現(xiàn)自動(dòng)搶微信紅包,至于網(wǎng)速慢得那就只能自己花錢(qián)提升了。2021-05-05