【matplotlib 實戰】--散點圖

来源:https://www.cnblogs.com/wang_yb/archive/2023/10/18/17771471.html
-Advertisement-
Play Games

散點圖,又名點圖、散佈圖、X-Y圖,是將所有的數據以點的形式展現在平面直角坐標繫上的統計圖表。 散點圖常被用於分析變數之間的相關性。如果兩個變數的散點看上去都在一條直線附近波動,則稱變數之間是線性相關的;如果所有點看上去都在某條曲線(非直線)附近波動,則稱此相關為非線形相關的;如果所有點在圖中沒有顯 ...


散點圖,又名點圖、散佈圖、X-Y圖,是將所有的數據以點的形式展現在平面直角坐標繫上的統計圖表。

散點圖常被用於分析變數之間的相關性。
如果兩個變數的散點看上去都在一條直線附近波動,則稱變數之間是線性相關的;
如果所有點看上去都在某條曲線(非直線)附近波動,則稱此相關為非線形相關的;
如果所有點在圖中沒有顯示任何關係,則稱變數間是不相關的。

散點圖一般需要兩個不同變數,一個沿x軸繪製,另一個沿y軸繪製。
眾多的散點疊加後,有助於展示數據集的“整體景觀”,從而幫助我們分析兩個變數之間的相關性,或找出趨勢和規律。

1. 主要元素

散點圖的主要元素包括:

  1. 橫軸:表示自變數。
  2. 縱軸:表示因變數。
  3. 數據點:每個數據點代表一個觀測值,它在坐標軸上的位置表示兩個變數的對應取值。
  4. 趨勢線:趨勢線是通過數據點擬合出的一條線,用於顯示變數之間的趨勢或關聯性。

圖片來自 antv 官網

2. 適用的場景

散點圖適用的分析場景包括:

  • 變數關係探索:幫助我們觀察和理解兩個變數之間的關係。通過觀察數據點的分佈情況和趨勢線的形狀,可以判斷變數之間是否存線上性關係、非線性關係或無關係。
  • 趨勢分析:用於分析趨勢和預測。通過觀察趨勢線的方向和斜率進行預測。
  • 群體分析:散點圖可以幫助我們觀察和識別數據點的聚類情況。
  • 異常值檢測:散點圖可以用於檢測異常值或離群點。

3. 不適用的場景

散點圖不適用的分析場景包括:

  1. 時間序列分析:散點圖主要用於展示兩個變數之間的關係,對於時間序列數據,通常使用折線圖或其他適合展示時間變化的圖表類型。
  2. 多變數分析:散點圖只能展示兩個變數之間的關係,對於多個變數之間的關係分析,需要使用其他圖表類型,如散點矩陣、平行坐標圖等。
  3. 分佈分析:散點圖主要關註變數之間的關係,而不是變數本身的分佈情況。如果需要分析變數的分佈特征,可以使用直方圖、箱線圖等圖表類型。

4. 分析實戰

散點圖適合尋找兩個變數之間的關係,本次分析 **空氣污染 **方面的數據情況。

4.1. 數據來源

數據來源國家統計局公開的數據。
用到的兩個統計數據分別是:

  1. 工業污染治理中,每年治理廢氣的投資額
  2. 廢氣中二氧化硫的每年排放量情況

整理好的數據可從下麵的地址下載:
https://databook.top/nation/A0C
A0C05.csv(廢氣中主要污染物排放) 和 A0C0I.csv(工業污染治理投資) 兩個文件。

fp = "d:/share/data/A0C05.csv"

df1 = pd.read_csv(fp)
df1

image.png

fp = "d:/share/data/A0C0I.csv"

df2 = pd.read_csv(fp)
df2

image.png

4.2. 數據清理

2022年數據是空的,所以從兩個文件中分別提取 2012~2021年期間,彙總所有廢氣排放量(萬噸)和**治理廢氣項目完成投資(萬元) **兩類數據繪製圖形。

#所有廢氣的排放量
data_x = df1[(df1["sj"] >= 2012) &
            (df1["sj"] <= 2021)]
data_x = data_x.loc[:, ["sj", "value"]]
data_x = data_x.groupby("sj").sum("value")

#治理廢氣項目投資 A0C0I03是治理廢氣投資的編號
data_y = df2[(df2["sj"] >= 2012) &
            (df2["sj"] <= 2021) &
            (df2["zb"] == "A0C0I03")]
data_y = data_y.sort_index(ascending=False)

4.3. 分析結果可視化

with plt.style.context("seaborn-v0_8"):
    fig = plt.figure()
    ax = fig.add_axes([0.1, 0.1, 0.6, 0.6])

    ax.scatter(data_x["value"], data_y["value"]/10000)
    ax.set_xlabel("廢氣排放量(萬噸)")
    ax.set_ylabel("治理廢氣項目完成投資(億元)")

image.png

從分析結果圖中來看,排放的廢氣量越大的時候,治理的投資費用也越高。

但是右下角紅色框內有一個異常值,那個是2012年的數據。
估計那時候還不太重視環保,所以即使那時候廢氣排放量大,用於治理廢氣的投資費用也不高。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安裝 miniconda 1、下載安裝包 Miniconda3-py37_22.11.1-1-Linux-x86_64.sh,或者自行選擇版本 2、把安裝包上傳到伺服器上,這裡放在 /home/software 3、安裝 bash Miniconda3-py37_22.11.1-1-Linux-x8 ...
  • 1.使用 for key in dict 遍歷字典 可以使用 for key in dict 遍歷字典中所有的鍵 x = {'a': 'A', 'b': 'B'} for key in x: print(key) # 輸出結果 a b 2.使用 for key in dict.keys () 遍歷字 ...
  • 在 Python 編程中,異常是一種常見的情況,可能會導致程式中斷或產生錯誤。然而,並非所有的異常都需要立即處理,有時候我們希望忽略某些異常並繼續執行程式。本文將介紹如何在 Python 中忽略異常,並提供一些示例和註意事項。 try-except 塊: 在 Python 中,我們可以使用 try- ...
  • 前言 ElasticSearch Java API是ES官方在8.x版本推出的新java api,也可以適用於7.17.x版本的es。 本文主要參考了相關博文,自己手動編寫了下相關操作代碼,包括更新mappings等操作的java代碼。 代碼示例已上傳github。 版本 elasticsearch ...
  • GCC編譯 預處理->編譯->彙編->鏈接 預處理:頭⽂件包含、巨集替換、條件編譯、刪除註釋... 編譯:主要進⾏詞法、語法、語義分析等,檢查⽆誤後將預處理好的⽂件編譯成彙編⽂件... 彙編:將彙編⽂件轉換成 ⼆進位⽬標⽂件... 鏈接:將項⽬中的各個⼆進位⽂件+所需的庫+啟動代碼鏈接成可執⾏⽂件.. ...
  • IOI2018 werewolf 狼人 題解 題目描述 省流: \(n\) 個點,\(m\) 條邊,\(q\) 次詢問,對於每一次詢問,給定一個起點 \(S\) 和終點 \(T\) ,能否找到一條路徑,前半程不能走 \(0\thicksim L-1\) 這些點,後半程不能走 \(R+1\thicks ...
  • 基於java線上家政預約服務系統設計與實現,可適用於java家政服務系統,java預約家政系統,java線上家政系統,線上服務系統,社會家政系統,家政管理系統,家政服務平臺,家政更加服務平臺系統,家政管理系統等等; ...
  • 在本文中,我們將全面深入地探討Go語言的反射機制。從反射的基礎概念、為什麼需要反射,到如何在Go中實現反射,以及在高級編程場景如泛型編程和插件架構中的應用,本文為您提供一站式的學習指南。 關註【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...