【数据可视化-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.mzph.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. 认证机制测试 测试…