python實現(xiàn)數(shù)據(jù)可視化超詳細講解
可視化介紹
可視化是數(shù)據(jù)分析中 很重要 的一個環(huán)節(jié)
- 一圖勝千言
- 發(fā)現(xiàn)隱藏的關(guān)系、趨勢、影響
- 可視化本身也是一種探索數(shù)據(jù),分析數(shù)據(jù)的方式
- 可視化中的圖表可從維度主要分為一維圖表和二維圖表和多維圖表及互相對比圖表
- 主要用的庫為: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ù)范圍
- 縱軸:個數(shù)
- 即一個數(shù)值變量.
- 表示數(shù)據(jù)分布
- sns.histplot(變量名)
- 密度圖 KernelDensity
- 表示數(shù)據(jù)分布
- 用平滑的曲線,更易看出分布形狀
- 表示數(shù)據(jù)分布
- sns.kdeplot(變量名)
- 箱型圖 BoxPlot
- 其中上界為最大值或者上界等于第三四分位數(shù)加上1.5×四分位距,跟上界進行比較,誰小取誰,作為上界
- 其中下界為最小值或者下界等于第一四分位數(shù)減去1.5×四分位距,跟下界進行比較,誰大取誰,作為下界
這樣做的好處是可以幫助我們發(fā)現(xiàn)數(shù)據(jù)當(dāng)中的異常值
- sns.boxplot(變量名)
- 小提琴圖 ViolinPlot
- 結(jié)合了密度圖、直方圖、箱形圖
- 橫軸:數(shù)據(jù)分布
- 縱軸:概率密度
- sns.violinplot(變量名)
補充的話
上述這些一維圖表中參數(shù)可以傳入DataFrame
(DataFrame名,x=" “,y=” ")
若要更改一維圖表中的標(biāo)題標(biāo)簽
plt.title(" ")
更改 x軸標(biāo)簽
plt.xlabel(" ")
更改 y軸標(biāo)簽
plt.ylabel(" ")
因為matplotlib庫中默認的字體,它不支持中文,所以要自己手動更換支持中文的字體
查看支持中文的字體,如下:
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ù)值變量
- 加一個顏色,即可多表示一個分類變量
- sns.lineplot(data=DataFrame名,x=" “,y=” ")
- 餅圖 PiePlot
- 展示各個分類對應(yīng)數(shù)值之間的比例
- 一個分類變量,一個數(shù)值變量
- plt.pie(DataFrame名[“數(shù)值變量列]”,labels=DataFrame名[“分類變量列”])
- autopct="%.1f%%" 該參數(shù)可以顯示百分比,%可以告訴系統(tǒng),這是用來展示格式字符串,%%告訴系統(tǒng),這是百分比結(jié)尾
- 散點圖 ScatterPlot
- 展示兩個數(shù)值變量關(guān)系
- 可以看出兩個變量之間的相關(guān)性
- x軸:一個變量的值
- y軸:一個變量的值
- 展示兩個數(shù)值變量關(guān)系
- sns.scatterplot(DataFrame名,x=" “,y=” ")
- 或者 sns.scatterplot(x=DataFrame[" “],y=DataFrame[” "])
- 條形圖 BarPlot
- 橫軸:分類類別
- 縱軸:數(shù)值
- 一個分類變量加一個數(shù)值變量
- sns.barplot(data=DataFrame名,x=" “,y=” ")
- estimator 該參數(shù)可以指定縱軸的高度對應(yīng)所屬分類下的所有值的樣式,不寫該參數(shù),則默認縱軸高度對應(yīng)所屬分類下的所有值的平均值
但在條形圖基礎(chǔ)上,若縱軸想記錄個數(shù),則用
- 計數(shù)圖 countplot
- sns.countplot(data=DataFrame名, x=" ") Y軸自動聚合成x里面的個數(shù)
補充的話
上述圖表的顏色有點不合時宜,更新顏色
color="顏色 " 或者 sns. set_palette(" 色盤")
常用的顏色有:
這里推薦這個網(wǎng)站:中國色,里面有非常多美麗的顏色,調(diào)色師、設(shè)計師必備哦
常用的色板有:
多維圖表
更多維
用面積大小和顏色來區(qū)分新的變量
氣泡圖
引入新的數(shù)值變量,用面積大小來區(qū)分
- plt.scatterplot(DataFrame,x=" “,y=” “,size=” ")
- 熱力圖 Heatmap
- 兩個分類變量加一個數(shù)值變量
- x軸和y軸分別表示不同的分類變量,顏色代表數(shù)值變量
- plt.heatmap(annot=True)
- annot 該參數(shù)表示具體數(shù)值展示出來
- 復(fù)式條形圖
- 在條形圖的基礎(chǔ)上引入多個條柱,則表示多個分類變量
- sns.barplot(data=DataFrame名,x=" “,y=” ",hue="分類變量 " )
補充的話
在基礎(chǔ)圖表的基礎(chǔ)上加一種顏色加一下面積大小,即可表示更多的變量
plt.scatterplot(DataFrame,x=" “,y=” “,hue=” “,size=” ")
更改圖例位置:
plt.legend(bbox_to_anchor=( 數(shù)字1 ,數(shù)字2))
- 數(shù)字1中有零/一可能性,數(shù)字2中有零/一可能性
- 數(shù)字一的零表示圖例在圖表的左邊,一表示在圖表的右邊。
- 數(shù)字二的零表示圖例在圖表的下面,一表示在圖表的上面。
互相對比
將這些圖表互相對比,挖掘出更多信息
在同一個單元格里輸入 多個相同的圖表的公式
最后plt.show() 出來
此時多個相同圖表就在一個圖上了。
- binwidth 該參數(shù)可以改變圖表的長度
- label 該參數(shù)為圖例標(biāo)簽
例如以直方圖為例
那么最后呈現(xiàn)的結(jié)果若沒有展現(xiàn)出圖例標(biāo)簽,則再加一個plt.legend()
密度圖也是同樣的道理,但不需要binwidth參數(shù),因為它是一條平滑的曲線。
箱形圖
- 沒有label和binwidth參數(shù),只有y軸/x軸參數(shù)
小提琴圖也是同樣的道理
但會顯得很擁擠,更好選擇是將分類變量作為x軸的變量,即x=" "
若想將不同的類型的圖 并排放在一起
fig,axes=plt.subplots(行,列,figsize=(高,寬))
- fig 代表大圖
- axis代表小圖
這里是繪制空白圖
在想要的圖形種類中,加入ax參數(shù)=axes[n]
- n表示第n個子圖,n從0開始
配對圖 pairplot
- 能將DataFrame中的數(shù)值變量兩兩關(guān)系分布出來
- 將各變量的分布用直方圖繪制出來
- 將不同變量兩兩之間的關(guān)系繪制成散點圖
- sns.pairplot(,hue=" 分類變量")
- 可以探討不同分類變量之間的數(shù)值關(guān)系
以上就是python實現(xiàn)數(shù)據(jù)可視化超詳細講解的詳細內(nèi)容,更多關(guān)于python數(shù)據(jù)可視化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python 中的list和array的不同之處及轉(zhuǎn)換問題
python中的list是python的內(nèi)置數(shù)據(jù)類型,list中的數(shù)據(jù)類不必相同的,而array的中的類型必須全部相同。這篇文章給大家介紹了python 中的list和array的不同之處及轉(zhuǎn)換問題,需要的朋友參考下吧2018-03-03pytorch?tensor按廣播賦值scatter_函數(shù)的用法
這篇文章主要介紹了pytorch?tensor按廣播賦值scatter_函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06