【數據可視化-21】水質安全數據可視化:探索化學物質與水質安全的關聯

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN人工智能領域的優質創作者,提供AI相關的技術咨詢、項目開發和個性化解決方案等服務,如有需要請站內私信或者聯系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉絲群介紹:① 群內初中生、高中生、本科生、研究生、博士生遍布,可互相學習,交流困惑。② 熱榜top10的常客也在群里,也有數不清的萬粉大佬,可以交流寫作技巧,上榜經驗,漲粉秘籍。③ 群內也有職場精英,大廠大佬,可交流技術、面試、找工作的經驗。④ 進群免費贈送寫作秘籍一份,助你由寫作小白晉升為創作大佬。⑤ 進群贈送CSDN評論防封腳本,送真活躍粉絲,助你提升文章熱度。有興趣的加文末聯系方式,備注自己的CSDN昵稱,拉你進群,互相學習共同進步。

在這里插入圖片描述

【數據可視化-21】水質安全數據可視化:探索化學物質與水質安全的關聯

    • 一、項目背景與目標
    • 二、數據集介紹
    • 三、完整代碼實現
      • 1. 環境準備與數據加載
      • 2. 數據預處理
      • 3. 探索性分析(EDA)
        • 3.1 化學物質含量與水質安全性的關聯
        • 3.2 安全與不安全水樣的特性
        • 3.3 識別潛在的危險化學物質
      • 4. 分析結論與洞見
        • 關鍵發現
        • 業務建議
    • 五、優化方向與思考
      • 數據深化
      • 模型構建
    • 六、完整代碼

一、項目背景與目標

??水質安全是一個全球性問題,影響著數十億人的健康。通過分析水質數據中的化學物質含量,我們可以識別潛在的危險因素,為水質管理和政策制定提供科學依據。

二、數據集介紹

??本數據集包含7999條模擬水質記錄,涵蓋多種化學物質的濃度測量值,以及一個指示水樣是否安全的分類變量。化學物質包括鋁、氨、砷、鋇、鎘等,每種物質都有對應的安全閾值。

三、完整代碼實現

1. 環境準備與數據加載

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 配置可視化樣式
plt.style.use('ggplot')
%matplotlib inline# 加載數據
df = pd.read_csv('/path/to/water_quality.csv')

2. 數據預處理

# 查看數據基本信息
print(df.info())
print(df.describe())# 檢查缺失值
print(df.isnull().sum())# 數據重命名,方便后續處理
df = df.rename(columns={'aluminium': 'Al','ammonia': 'NH3','arsenic': 'As','barium': 'Ba','cadmium': 'Cd','chloramine': 'ClNH2','chromium': 'Cr','copper': 'Cu','flouride': 'F','bacteria': 'Bacteria','viruses': 'Viruses','lead': 'Pb','nitrates': 'NO3','nitrites': 'NO2','mercury': 'Hg','perchlorate': 'ClO4','radium': 'Ra','selenium': 'Se','silver': 'Ag','uranium': 'U'
})

3. 探索性分析(EDA)

3.1 化學物質含量與水質安全性的關聯
# 計算相關系數矩陣(皮爾遜相關系數)
corr_matrix = df.corr()# 繪制熱力圖
plt.figure(figsize=(15, 10))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('化學物質含量與水質安全性的相關性熱力圖')
plt.show()

# 繪制關鍵化學物質與安全性的散點圖
key_substances = ['Al', 'NH3', 'As', 'Ba', 'Cd', 'ClNH2', 'Cr', 'Cu', 'F', 'Bacteria', 'Viruses', 'Pb', 'NO3', 'NO2', 'Hg', 'ClO4', 'Ra', 'Se', 'Ag', 'U']for substance in key_substances:plt.figure(figsize=(10, 6))sns.scatterplot(x=substance, y='is_safe', data=df, hue='is_safe', palette='viridis')plt.title(f'{substance} 含量與水質安全性關系')plt.xlabel(f'{substance} 濃度')plt.ylabel('是否安全')plt.grid(True)plt.show()

3.2 安全與不安全水樣的特性
# 繪制關鍵化學物質在安全與不安全水樣中的分布
fig, axes = plt.subplots(4, 5, figsize=(30, 18))  # 創建一個5行4列的畫布
axes = axes.flatten()  # 將2D的axes數組轉換為1Dfor idx, substance in enumerate(key_substances):# 在指定的子圖上繪制散點圖sns.boxplot(x='is_safe', y=substance, data=df, ax=axes[idx])#sns.scatterplot(x=substance, y='is_safe', data=df, hue='is_safe', palette='viridis', ax=axes[idx])axes[idx].set_title(f'{substance} 在安全與不安全水樣中的分布')axes[idx].set_xlabel(f'{substance} 濃度')axes[idx].set_ylabel('是否安全')axes[idx].grid(True)plt.tight_layout()  # 自動調整子圖參數,防止重疊
plt.show()

3.3 識別潛在的危險化學物質
# 繪制箱線圖識別各化學物質中的異常值
fig, axes = plt.subplots(4, 5, figsize=(30, 18))  # 創建一個5行4列的畫布
axes = axes.flatten()  # 將2D的axes數組轉換為1D# 繪制箱線圖識別各化學物質中的異常值
for idx, substance in enumerate(key_substances):# plt.figure(figsize=(10, 6))sns.boxplot(x=df[substance],ax=axes[idx])axes[idx].set_title(f'{substance} 含量的異常值分析')axes[idx].set_xlabel(f'{substance} 濃度')axes[idx].set_ylabel('是否安全')axes[idx].grid(True)plt.tight_layout()  # 自動調整子圖參數,防止重疊
plt.show()

4. 分析結論與洞見

關鍵發現
  1. 砷 (As)鉛 (Pb)鎘 (Cd) 與水質安全性呈現顯著負相關,濃度越高,水質越可能不安全。
  2. 細菌 (Bacteria)病毒 (Viruses) 的存在顯著降低了水質安全性。
  3. 硝酸鹽 (NO3)亞硝酸鹽 (NO2) 的濃度升高與水質不安全存在關聯。
業務建議
  1. 加強砷、鉛和鎘的監測:重點關注這些化學物質的排放源和處理過程。
  2. 改善微生物污染控制:加強對水體中細菌和病毒的處理,確保微生物指標達標。
  3. 綜合水質管理:結合多種化學和生物指標,制定全面的水質安全標準。

五、優化方向與思考

數據深化

  1. 整合時空數據:結合水質數據的時空信息,分析污染源的擴散路徑。
  2. 引入外部數據:如氣象數據、工業活動數據等,探索更廣泛的水質影響因素。

模型構建

  1. 構建預測模型:使用機器學習算法預測水質安全趨勢。
  2. 開發預警系統:實時監控關鍵指標,及時發出水質安全預警。

??通過數據可視化,我們能夠清晰地看到化學物質含量與水質安全性的關系,為水質管理和政策制定提供有力支持。希望本文能為相關領域的研究和實踐提供有價值的參考。

六、完整代碼

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns# 配置可視化樣式
plt.style.use('ggplot')
%matplotlib inline# 加載數據
df = pd.read_csv('/path/to/water_quality.csv')# 查看數據基本信息
print(df.info())
print(df.describe())# 檢查缺失值
print(df.isnull().sum())# 數據重命名,方便后續處理
df = df.rename(columns={'aluminium': 'Al','ammonia': 'NH3','arsenic': 'As','barium': 'Ba','cadmium': 'Cd','chloramine': 'ClNH2','chromium': 'Cr','copper': 'Cu','flouride': 'F','bacteria': 'Bacteria','viruses': 'Viruses','lead': 'Pb','nitrates': 'NO3','nitrites': 'NO2','mercury': 'Hg','perchlorate': 'ClO4','radium': 'Ra','selenium': 'Se','silver': 'Ag','uranium': 'U'
})# 計算相關系數矩陣(皮爾遜相關系數)
corr_matrix = df.corr()# 繪制熱力圖
plt.figure(figsize=(15, 10))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('化學物質含量與水質安全性的相關性熱力圖')
plt.show()# 繪制關鍵化學物質與安全性的散點圖
key_substances = ['Al', 'NH3', 'As', 'Ba', 'Cd', 'ClNH2', 'Cr', 'Cu', 'F', 'Bacteria', 'Viruses', 'Pb', 'NO3', 'NO2', 'Hg', 'ClO4', 'Ra', 'Se', 'Ag', 'U']for substance in key_substances:plt.figure(figsize=(10, 6))sns.scatterplot(x=substance, y='is_safe', data=df, hue='is_safe', palette='viridis')plt.title(f'{substance} 含量與水質安全性關系')plt.xlabel(f'{substance} 濃度')plt.ylabel('是否安全')plt.grid(True)plt.show()# 繪制關鍵化學物質在安全與不安全水樣中的分布
fig, axes = plt.subplots(4, 5, figsize=(30, 18))  # 創建一個5行4列的畫布
axes = axes.flatten()  # 將2D的axes數組轉換為1Dfor idx, substance in enumerate(key_substances):# 在指定的子圖上繪制散點圖sns.boxplot(x='is_safe', y=substance, data=df, ax=axes[idx])#sns.scatterplot(x=substance, y='is_safe', data=df, hue='is_safe', palette='viridis', ax=axes[idx])axes[idx].set_title(f'{substance} 在安全與不安全水樣中的分布')axes[idx].set_xlabel(f'{substance} 濃度')axes[idx].set_ylabel('是否安全')axes[idx].grid(True)plt.tight_layout()  # 自動調整子圖參數,防止重疊
plt.show()# 繪制箱線圖識別各化學物質中的異常值
fig, axes = plt.subplots(4, 5, figsize=(30, 18))  # 創建一個5行4列的畫布
axes = axes.flatten()  # 將2D的axes數組轉換為1D# 繪制箱線圖識別各化學物質中的異常值
for idx, substance in enumerate(key_substances):# plt.figure(figsize=(10, 6))sns.boxplot(x=df[substance],ax=axes[idx])axes[idx].set_title(f'{substance} 含量的異常值分析')axes[idx].set_xlabel(f'{substance} 濃度')axes[idx].set_ylabel('是否安全')axes[idx].grid(True)plt.tight_layout()  # 自動調整子圖參數,防止重疊
plt.show()

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

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

相關文章

DC-2尋找Flag1、2、3、4、5,wpscan爆破、git提權

一、信息收集 1、主機探測 arp-scan -l 探測同網段2、端口掃描 nmap -sS -sV 192.168.66.136 80/tcp open http Apache httpd 2.4.10 ((Debian)) 7744/tcp open ssh OpenSSH 6.7p1 Debian 5deb8u7 (protocol 2.0)這里是掃描出來兩個端口,80和ssh&…

SQLMesh 表格對比指南:深入理解 table_diff 工具的實際應用

在數據集成和轉換過程中,確保數據模型的一致性和準確性至關重要。SQLMesh 提供了一個強大的 table_diff 工具,可以幫助用戶比較 SQLMesh 模型或數據庫表/視圖的架構和數據。本文將通過具體示例詳細說明如何使用 table_diff 工具進行跨環境比較和直接比較…

重構智能場景:艾博連攜手智譜,共拓智能座艙AI應用新范式

2025年4月24日,智能座艙領域創新企業艾博連科技與國產大模型獨角獸智譜,在上海國際車展艾博連會客廳簽署合作協議。雙方宣布將深度整合智譜在AI大模型領域的技術積淀與艾博連在汽車智能座艙場景的落地經驗,共同推進下一代"有溫度、懂需求…

vscode flutter 插件, vscode運行安卓項目,.gradle 路徑配置

Flutter Flutter Widget Snippets Awesome Flutter Snippets i dart-import Dart Data Class Generator Json to Dart Model Dart Getters And Setter GetX Snippets GetX Generator GetX Generator for Flutter flutter-img-syncvscode運行安卓項目,.gradle 路徑配…

Parasoft C++Test軟件單元測試_對函數打樁的詳細介紹

系列文章目錄 Parasoft C++Test軟件靜態分析:操作指南(編碼規范、質量度量)、常見問題及處理 Parasoft C++Test軟件單元測試:操作指南、實例講解、常見問題及處理 Parasoft C++Test軟件集成測試:操作指南、實例講解、常見問題及處理 進階擴展:自動生成靜態分析文檔、自動…

c# TI BQFS文件格式詳解及C#轉換

FlashStream文件格式詳解及C#轉換 一、FlashStream文件格式詳細解讀 文件概述 FlashStream文件是TI用于配置電池電量計的文本文件格式,主要特點: ? 純文本格式,使用ASCII字符? 每行一條指令 ? 分號(;)開頭的行為注釋 ? 主要包含三種指令類型:寫命令、比較命令和延時…

k8s中pod報錯 FailedCreatePodSandBox

問題現象: 創建容器時出現一下情況 而且刪掉控制器的時候pod還會卡住 解決: 將calico的pod重新刪掉。其中有1個控制器pod以及3個node pod 刪掉后,大概10來秒就重新創建完成了。 然后現在在使用kubectl apply -f 文件.yaml 就可以正常創…

分布式事務 兩階段提交協議(2PC的原理、挑戰)

引言:分布式事務的挑戰 在分布式系統中,數據和服務往往分布在多個節點上。例如,一個電商下單操作可能涉及訂單服務、庫存服務和支付服務,這三個服務需要協同完成一個事務:要么全部成功,要么全部失敗。這種…

Jenkins Pipeline 構建 CI/CD 流程

文章目錄 jenkins 安裝jenkins 配置jenkins 快速上手在 jenkins 中創建一個新的 Pipeline 作業配置Pipeline運行 Pipeline 作業 Pipeline概述Declarative PipelineScripted Pipeline jenkins 安裝 安裝環境: Linux CentOS 10:Linux CentOS9安裝配置Jav…

【CF】Day43——Codeforces Round 906 (Div. 2) E1

E1. Doremys Drying Plan (Easy Version) 題目: 思路: very好題,加深對掃描線的應用,值得深思 由于k 2,那我們就可以使用簡單一點的方法來寫 題目可以轉化為:給定n個線段,現在讓你刪去2條線段…

電子設備的“記憶大腦”:NAND、NOR、EEPROM誰在掌控你的數據?

大家好,我是硅言。存儲芯片是電子設備的“記憶大腦”,未進入存儲行業工作之前,一聽到NAND、NOR、EEPROM這些專業名詞就頭大。本文用通俗的語言,帶大家了解這三種常見存儲芯片的核心區別和應用場景。 一、存儲芯片的“門派”&#…

可視化程序設計|| 實驗三:C#面向對象編程(二)

一、實驗目的 1.加深理解面向對象編程的概念,如類、對象、實例化等。 2.熟練掌握類的封裝、繼承和多態機制。 3.掌握編程常用的幾種排序算法。 4.理解異常的產生過程和異常處理的概念,掌握C#異常處理的方法。 5.能夠將面向對象思想應用與編程實踐&a…

STM32MPU開發之旅:從零開始構建嵌入式Linux鏡像

前言 在工業4.0與邊緣計算深度融合的今天,STM32MP257F作為意法半導體第二代工業級64位微處理器的旗艦產品,憑借異構計算架構、1.35 TOPS邊緣AI算力和軍工級安全特性,已成為工業自動化、機器視覺和新能源控制等領域的標桿方案。 性能躍遷的異…

大模型應用開發(PAFR)

Prompt問答 特征:利用大模型推理能力完成應用的核心功能 應用場景: 文本摘要分析 輿情分析 坐席檢查 AI對話 AgentFunction Calling 特征:將應用端業務能力與AI大模型推理能力結合,簡化復雜業務功能開發 應用場景: 旅行指南 數據…

SpringClound 微服務分布式Nacos學習筆記

一、基本概述 在實際項目中,選擇哪種架構需要根據具體的需求、團隊能力和技術棧等因素綜合考慮。 單體架構(Monolithic Architecture) 單體架構是一種傳統的軟件架構風格,將整個應用程序構建為一個單一的、不可分割的單元。在這…

WebRTC服務器Coturn服務器用戶管理和安全性

1、概述 Coturn服務器對用戶管理和安全方面也做了很多的措施,以下會介紹到用戶方面的設置 1.1、相關術語 1.1.1 realm 在 coturn 服務器中,域(realm)是一種邏輯上的分組概念,用于對不同的用戶群體、應用或者服務進行區…

基于opencv和PaddleOCR識別身份證信息

1、安裝組件 pip install --upgrade paddlepaddle paddleocr 2、完整code import cv2 import numpy as np from paddleocr import PaddleOCR# 初始化 PaddleOCR use_angle_clsTrue, lang"ch", det_db_thresh0.1, det_db_box_thresh0.5)def preprocess_image(image…

【6】GD32 高級通信外設 CAN、USBD

高級通信外設:CAN、USBD CAN CAN簡介、主要功能與相關API回環模式收發發送特定ID的數據幀實驗CAN數據幀的接收實驗使用過濾器接收特定的數據幀 USBD USB通信簡介USBD設備固件庫架構、分層文件與庫函數說明USBD模擬鍵盤應用USBD虛擬串口應用USBD模擬U盤應用

【LLM+Code】Windsurf Agent 模式PromptTools詳細解讀

一、前言 https://windsurf.com/ https://windsurf.com/blog/why-we-built-windsurf https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools/tree/main/Windsurf 二、System Prompt 相比于cursor和claude code, windsurf的system prompt非常長&am…

安全性測試常規測試點全解析:從基礎到高級的實戰指南

引言 安全性測試是保障軟件系統免受惡意攻擊的核心環節,其目標是識別系統在設計、開發、部署過程中存在的安全漏洞。本文將圍繞12大常規安全測試點展開,結合具體測試方法、示例代碼及防范建議,幫助讀者構建完整的安全測試體系。 一、認證與授權測試 1. 認證機制測試 測試…