python自學筆記9 Seaborn可視化

Seaborn:統計可視化利器

作為基于 Matplotlib 的高級繪圖庫,有一下功能:
在這里插入圖片描述

一元特征數據

直方圖

import matplotlib.pyplot as plt 
import pandas as pd  
import seaborn as sns # import os
# # 如果文件夾不存在,創建文件夾
# if not os.path.isdir("Figures"):
#     os.makedirs("Figures")# 導入鳶尾花數據
iris_sns = sns.load_dataset("iris") iris_sns# 繪制花萼長度樣本數據直方圖
fig, ax = plt.subplots(figsize = (8, 6))sns.histplot(data=iris_sns, x="sepal_length", binwidth=0.2, ax = ax)								# 縱軸三個選擇:頻率、概率、概率密度ax.axvline(x = iris_sns.sepal_length.mean(), color = 'r', ls = '--')								# 增加均值位置豎直參考線# 參考https://seaborn.pydata.org/tutorial/distributions.html

效果:
在這里插入圖片描述
在這里插入圖片描述
代碼演示如下圖所示:

# 繪制花萼長度樣本數據直方圖, 考慮鳶尾花分類
fig, ax = plt.subplots(figsize = (8,6))
sns.histplot(data = iris_sns, x="sepal_length",
hue = 'species', binwidth=0.2, ax = ax,
element="step", stat = 'density')
# 縱軸為概率密度

如果要分組的話使用如下代碼:

fig, ax = plt.subplots(figsize=(8, 6))
sns.histplot(data=iris_sns,          # 數據源(DataFrame)x="sepal_length",       # 指定x軸為花萼長度hue='species',          # 按鳶尾花種類分組著色binwidth=0.2,           # 直方圖條柱寬度為0.2ax=ax,                  # 指定繪圖坐標軸element="step",         # 直方圖樣式為階梯線stat='density'          # 縱軸顯示密度而非計數
)

核密度估計KDE

將每個點變成一個高斯核函數(就是高斯分布的那個函數形式),然后再疊加
在這里插入圖片描述

# 繪制花萼長度樣本數據,高斯核密度估計
fig, ax = plt.subplots(figsize = (8,6))sns.kdeplot(data=iris_sns, x="sepal_length", 	# 生成核密度曲線bw_adjust=0.3, fill = True)			# 調整曲率,填充區域
sns.rugplot(data=iris_sns, x="sepal_length")	# 生產毛毯圖(小刺)

效果:
在這里插入圖片描述

# 繪制花萼長度樣本數據,高斯核密度估計,考慮鳶尾花類別
fig, ax = plt.subplots(figsize = (8,6))sns.kdeplot(data=iris_sns, x="sepal_length", hue = 'species', # 各自的分布bw_adjust=0.5, fill = True)
sns.rugplot(data=iris_sns, x="sepal_length", hue = 'species')# fig.savefig('Figures\一元,kdeplot + rugplot + hue.svg', format='svg')

在這里插入圖片描述

# 繪制花萼長度樣本數據,高斯核密度估計,考慮鳶尾花類別,堆疊
fig, ax = plt.subplots(figsize = (8,6))sns.kdeplot(data=iris_sns, x="sepal_length", hue="species", multiple="stack", 		# 設置疊加屬性bw_adjust=0.5)

效果:
在這里插入圖片描述

# 繪制后驗概率 (成員值)fig, ax = plt.subplots(figsize = (8,6))
sns.kdeplot(data=iris_sns, x="sepal_length", hue="species", bw_adjust=0.5,multiple = 'fill')			# 設置疊加效果

效果:
在這里插入圖片描述

分散點圖/蜂群圖

在這里插入圖片描述
較小的數據使用:seaborn.stripplot() 蜂群圖
較大的數據使用:seaborn.swarmplot() 分散點圖

# 繪制鳶尾花花萼長度分散點圖
fig, ax = plt.subplots(figsize = (8,6))
sns.stripplot(data=iris_sns, x="sepal_length", y="species", hue="petal_length", palette="RdYlBu_r", ax = ax)

效果:
在這里插入圖片描述

# 繪制花萼長度樣本數據, 蜂群圖
fig, ax = plt.subplots(figsize = (8,4))
sns.swarmplot(data=iris_sns, x="sepal_length", ax = ax)
# 繪制花萼長度樣本數據, 蜂群圖, 考慮分類
fig, ax = plt.subplots(figsize = (8,4))
sns.swarmplot(data=iris_sns, x="sepal_length", y = 'species',
hue = 'species', ax = ax)

箱型圖

在這里插入圖片描述
包含元素:
在這里插入圖片描述

# 繪制鳶尾花花萼長度箱型圖
fig, ax = plt.subplots(figsize = (8,2))
sns.boxplot(data=iris_sns, x="sepal_length", ax = ax)

效果:
在這里插入圖片描述

# 繪制鳶尾花花萼長度箱型圖,考慮鳶尾花分類
fig, ax = plt.subplots(figsize = (8,3))
sns.boxplot(data=iris_sns, x="sepal_length", y = 'species', ax = ax)

效果:
在這里插入圖片描述

小提琴圖

可以看成用核密度曲線優化的箱線圖

# 繪制花萼長度樣本數據,小提琴圖
fig, ax = plt.subplots(figsize = (8,2))
sns.violinplot(data=iris_sns, x="sepal_length", ax = ax)

效果:
在這里插入圖片描述

# 繪制花萼長度樣本數據,小提琴圖,考慮分類
fig, ax = plt.subplots(figsize = (8,4))
sns.violinplot(data=iris_sns, x="sepal_length", y="species", ax = ax)

在這里插入圖片描述

sns.violinplot(data=iris_sns, x="sepal_length", y="species", inner = 'stick')

在這里插入圖片描述

# 蜂群圖 + 小提琴圖,考慮鳶尾花分類sns.catplot(data=iris_sns, x="sepal_length", y="species", kind="violin", color=".9", inner=None)sns.swarmplot(data=iris_sns, x="sepal_length", y="species", size=3)

在這里插入圖片描述

二元特征數據

散點圖

通過散點圖可以簡要查看兩個維度是否有何關系

# 鳶尾花散點圖 + 毛毯圖
fig, ax = plt.subplots(figsize = (4,4))sns.scatterplot(data=iris_sns, x="sepal_length", y="sepal_width")
sns.rugplot(data=iris_sns, x="sepal_length", y="sepal_width")

效果:
在這里插入圖片描述

fig, ax = plt.subplots(figsize = (4,4))sns.scatterplot(data=iris_sns, x="sepal_length", y="sepal_width", hue = 'species')
sns.rugplot(data=iris_sns, x="sepal_length", y="sepal_width", hue = 'species')fig.savefig('Figures\二元,scatterplot + rugplot + hue.svg', format='svg')

效果:
在這里插入圖片描述

二元直方熱圖

二維散點圖轉化為直方圖后效果并不清晰
在這里插入圖片描述
在這里插入圖片描述
因此采用二維熱力圖:
在這里插入圖片描述

# 鳶尾花二元頻率直方熱圖sns.displot(data=iris_sns, x="sepal_length", y="sepal_width", binwidth=(0.2, 0.2), cbar=True)

在這里插入圖片描述

聯合分布 KDE

使用高斯核函數可以估算聯合分布,這樣的聯合分布可以用等高線圖表示。
在這里插入圖片描述

# 聯合分布概率密度等高線
sns.displot(data=iris_sns, x="sepal_length", y="sepal_width", kind="kde")

效果:
在這里插入圖片描述

# 聯合分布概率密度等高線,考慮分布
sns.kdeplot(data=iris_sns, x="sepal_length", y="sepal_width", hue = 'species')

在這里插入圖片描述

聯合分布+邊緣分布

看圖即可懂:
在這里插入圖片描述

# 聯合分布、邊緣分布
sns.jointplot(data=iris_sns, x="sepal_length", y="sepal_width", kind = 'kde', fill = True)

這里僅放示范代碼,其他代碼查看附件。

線性回歸

# 可視化線性回歸關系
sns.lmplot(data=iris_sns, x="sepal_length", y="sepal_width")

效果:
在這里插入圖片描述

多元特征數據

可以用一元可視化方案展現多元特診
首先將寬格式轉化為長格式。
原來的寬格式:
在這里插入圖片描述

iris_melt = pd.melt(iris_sns, "species", var_name="measurement")
iris_melt

通過代碼結果可以查看長數據:
在這里插入圖片描述

聚類熱圖

# 聚類熱圖
sns.clustermap(iris_sns.iloc[:,:-1], cmap = 'RdYlBu_r', vmin = 0, vmax = 8)

在這里插入圖片描述

成對特征散點圖

sns.pairplot(iris_sns)

在這里插入圖片描述

# 繪制成對特征散點圖
sns.pairplot(iris_sns, hue = 'species')

效果:
在這里插入圖片描述

平行坐標圖


from pandas.plotting import parallel_coordinates
# 可視化函數來自pandas
parallel_coordinates(iris_sns, 'species', colormap=plt.get_cmap("Set2"))
plt.show()

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93408.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kafka 消費者組的概念是什么?它是如何實現消息的點對點和發布/訂閱模式?

Kafka 消費者組(Consumer Group)是 Kafka 架構中的核心概念,它是一組共同協作來消費一個或多個主題(Topic)數據的消費者應用的集合。 通過簡單地為多個消費者實例配置相同的 group.id,它們就組成了一個消費…

C#文件復制異常深度剖析:解決“未能找到文件“之謎

一個看似簡單的文件操作問題 在C#開發中,文件操作是基礎中的基礎,但有時最基礎的File.Copy()方法也會拋出令人困惑的異常。最近我遇到了這樣一個問題: File.Copy(sourceFile, targetFilePath);當targetFilePath設置為D:\25Q1\MR3.6.6.1_C1.2.…

OpenCV Python——圖像查找(特征匹配 + 單應性矩陣)

1 圖像查找(單應性矩陣)2 單應性矩陣 應用舉例3 單應性矩陣 代碼示例P87 111 圖像查找(單應性矩陣) 特征匹配作為輸入,獲得單應性矩陣 點X在img1和img2中的成像分別為x,x 圖中H即為單應性矩陣 2 單應性矩陣 應用…

Ubuntu 安裝帶證書的 etcd 集群

1.概念 etcd 是由GO語言編寫的分布式的、可靠的鍵值存儲系統,主要用于分布式系統中關鍵數據的存儲和服務發現。 2.核心概念 節點(Node) 每個運行 etcd 的實例被稱為一個節點。一個或多個節點可以組成一個集群。 集群(Cluster&…

360 集團20周年會:戰略升級ALL IN Agent,搶占智能體時代先機

發布 | 大力財經8月15日,360集團迎來二十周年,在北京奧林匹克體育中心舉辦的“360集團20周年榮耀慶典”上,創始人周鴻祎向現場數千名員工發表演講,回顧360集團二十年的發展歷程,并明確360集團下一階段的公司戰略&#…

命令模式C++

命令模式(Command Pattern)是一種行為型設計模式,它將請求封裝為一個對象,使你可以用不同的請求對客戶進行參數化,還能支持請求的排隊、記錄日志及撤銷操作。這種模式將發送者和接收者解耦,發送者無需知道接…

Web攻防-大模型應用LLM搭建接入第三方內容喂養AI插件安全WiKI庫技術賦能

知識點: 1、WEB攻防-LLM搭建-AI喂養&安全知識WIKI庫 演示案例:WEB攻防-LLM搭建-AI喂養&安全知識WIKI庫 使用參考 https://docs.web2gpt.ai/ https://mp.weixin.qq.com/s/qqTOW5Kg1v0uxdSpbfriaA 0、服務器環境:阿里云 Ubuntu22.04 …

圖片拼接-動手學計算機視覺8

前言圖片拼接(image stitching)就是將統一場景的不同拍攝出的圖片拼接到一起,如圖所示就是拼接全景圖,是圖片拼接的應用之一,手機拍照都有全景拍攝功能仔細觀察全景圖,尋找它們相似性,圖8-2的全…

Web第二次作業

作業一&#xff1a;學校官網1.1學校官網代碼如下&#xff1a;?<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…

【CV 目標檢測】②R-CNN模型

二、R-CNN網絡基礎 2.R-CNN模型 2014年提出R-CNN&#xff01;網絡&#xff0c;該網絡不再使用暴力窮舉的方法&#xff0c;而是使用候選區域方法&#xff08;region proposal method&#xff09;創建目標檢測的區域來完成目標檢測的任務&#xff0c;R-CNN是以深度神經網絡為基礎…

STM32L051C8與STM32L151C8的主要區別

STM32L051C8與STM32L151C8 有什么區別&#xff1f; LPTIM 有什么特點,為什么STM32L151C8沒有LPTIM,而STM32L051C8有1個? 1. STM32L051C8與STM32L151C8的主要區別 STM32L051C8STM32L151C8內核Cortex-M0Cortex-M3主頻32MHz32MHz閃存/ SRAM64KB/8KB64KB/16KB工作電壓1.65V-3.6V…

【軟考中級網絡工程師】知識點之網關協議深度剖析

目錄一、網關協議基礎探秘1.1 網關協議概念1.2 網關協議作用1.3 網關協議分類總覽二、內部網關協議&#xff08;IGP&#xff09;深度解析2.1 距離矢量協議2.2 鏈路狀態協議2.3 混合型協議三、外部網關協議&#xff08;EGP&#xff09;探秘3.1 BGP 協議詳解3.2 BGP 協議的關鍵特…

JavaScript 中 call、apply 和 bind 方法的區別與使用

一、核心作用與基礎概念這三個方法都用于顯式改變函數執行時的 this 指向&#xff0c;解決 JavaScript 中函數上下文動態綁定的問題。1.call()立即執行函數&#xff0c;第一個參數為 this 指向對象&#xff0c;后續參數為逗號分隔的參數列表語法&#xff1a;func.call(thisArg,…

【Android】適配器與外部事件的交互

三三要成為安卓糕手 引入&#xff1a;在上一篇文章中我們完成了新聞展示頁面多布局案例的展示&#xff0c;感悟頗多&#xff0c;本篇文章&#xff0c;繼續去開發一些新的功能 一&#xff1a;關閉廣告 所有的view都可以和我們的用戶做交互&#xff0c;循環視圖中也給我們提供了相…

MySQL的分析查詢語句(EXPLAIN):

目錄 基本語法&#xff1a; 各個字段的含義&#xff1a; id&#xff1a; select_type&#xff1a; table&#xff1a; partitions&#xff1a; type&#xff1a; possible_keys&#xff1a; key&#xff1a; key_len&#xff1a; ref&#xff1a; row&#xff1a; …

C++ #if

在 C 中&#xff0c;#if 是 預處理器指令&#xff08;Preprocessor Directive&#xff09;&#xff0c;用于 條件編譯&#xff0c;即在編譯階段根據條件決定是否包含某段代碼。它通常與 #define、#ifdef、#ifndef、#else 和 #endif 配合使用。基本語法#if 條件表達式// 如果條件…

方案 | 動車底部零部件檢測實時流水線檢測算法改進

項目背景隨著我國高速鐵路運營里程突破4.5萬公里&#xff0c;動車組日均開行超過8000列次&#xff0c;傳統人工巡檢方式已無法滿足密集運行下的安全檢測需求。車底關鍵部件如制動系統、懸掛裝置、牽引電機等長期承受高強度振動和沖擊&#xff0c;易產生疲勞裂紋、螺栓松動、部件…

企業收款統計:驅動業務決策的核心引擎設計開發——仙盟創夢IDE

代碼完整代碼<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>黑金風格職員統計</title><style>/* 頁面基礎樣式 - 黑金風格 */body {font-family: Segoe UI, Tahoma, Geneva, Verdana, …

CIAIE 2025上海汽車內外飾展觀察:從美學到功能的產業躍遷

在智能化、電動化浪潮推動下&#xff0c;汽車產業的市場格局、技術路線、供應鏈結構與用戶體驗正被系統性重塑。汽車感知空間核心的“內外飾件”&#xff0c;正從原本的結構性、功能性部件&#xff0c;逐步躍升為智能化、情感化和差異化體驗的重要承載載體&#xff0c;開啟了從…

Spring IOC容器在Web環境中的啟動奧秘:深入源碼解析

一、為何需要關注IOC容器啟動&#xff1f;在Java Web開發中&#xff0c;Spring MVC框架的基石正是IOC容器。但你是否思考過&#xff1a;獨立的IOC模塊如何與Tomcat等Servlet容器協同工作&#xff1f; 其啟動過程與Web容器的生命周期深度綁定&#xff0c;這是構建穩定Spring應用…