【python大作业/爬虫实战】——基于Python的水质数据采集+可视化(附完整代码)

一、项目背景

随着环境保护意识的增强,水质监测成为了环境保护工作中的重要一环。通过对不同海区的水质数据进行采集和分析,可以帮助我们更好地了解水环境的现状,为环境保护决策提供科学依据。本文将介绍如何使用Python进行水质数据的采集、存储和可视化分析。

> 本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

二、项目前期准备

(一)环境准备

库名作用描述
requests用于发送 HTTP 请求,从目标网站获取水质数据。
csvPython 内置库,用于将采集到的数据存储到 CSV 文件中,便于后续分析和处理。
pandas用于数据处理和分析,支持数据清洗、转换和统计分析。
matplotlib用于绘制各种静态图表(如折线图、柱状图、散点图等),支持数据可视化。
seaborn基于 Matplotlib 的高级可视化库,提供更美观、更易用的统计图表

你可以通过以下命令安装这些库:

pip install requests,pandas,matplotlib,seaborn

(二)采集字段

字段名描述
海区监测点所在的海区
省份监测点所在的省份
地市监测点所在的地市
点位编码监测点的唯一编码
实测经度监测点的经度
实测纬度监测点的纬度
监测时间数据采集的时间
PH(无量纲)水体的pH值
溶解氧(mg/L)水体中溶解氧的含量
化学需氧量(mg/L)水体中化学需氧量的含量
无机氮(mg/L)水体中无机氮的含量
活性硝酸盐(mg/L)水体中活性硝酸盐的含量
石油类(mg/L)水体中石油类物质的含量
水质类别水质的分类等级

(三)网页结构分析

1. 目标地址:水质数据网址

2.数据返回为json格式,这样可以更好的进行数据的提取

三、爬虫步骤

1. 导入必要的库

首先,我们需要导入requests库用于发送HTTP请求,csv库用于将数据存储到CSV文件中。

import requests
import csv

2. 定义数据采集函数

我们定义一个get_seadata函数,用于从指定的URL获取水质数据,并将其存储到CSV文件中。

def get_seadata():
    headers = {}
    url = ""
    response = requests.get(url, headers=headers)

    json_data = response.json()
    for data in json_data:
        dic = {
            '海区': ,
            '省份': ,
            '地市':,
            '点位编码': ,
            '实测经度': ,
            '实测纬度':,
            '监测时间': ,
            'PH(无量纲)': ,
            '溶解氧(mg/L)': ,
            '化学需氧量(mg/L)': ,
            '无机氮(mg/L)': ,
            '活性硝酸盐(mg/L)':],
            '石油类(mg/L)': ,
            '水质类别': ,
        }
        print(dic)

3. 数据保存

打开一个CSV文件,并调用get_seadata函数进行数据采集和数据保存。

f = open('sea.csv', mode='w', encoding='utf-8', newline='')
    csv_write = csv.DictWriter(f, [
        '海区',
        '省份',
        '地市',
        '点位编码',
        '实测经度',
        '实测纬度',
        '监测时间',
        'PH(无量纲)',
        '溶解氧(mg/L)',
        '化学需氧量(mg/L)',
        '无机氮(mg/L)',
        '活性硝酸盐(mg/L)',
        '石油类(mg/L)',
        '水质类别',
    ])
    csv_write.writeheader()

    # 采集数据
    get_seadata()

    print('采集结束')
    f.close()

4. 结果展示

四、完整代码

(一)数据采集(爬虫)部分代码

<如果您对源码感兴趣(不白嫖)迪迦,可以在评论区留言(主页 \/)伪善,我会根据需求提供指导和帮助>

(二)可视化代码

1.不同海区的溶解氧含量情况

2.不同海区的 PH(无量纲) 值分布

3.水质类别可视化

4.水质指标相关性热力图

5.水质指标的多变量分析

6.完整可视化代码

1  不同海区的 PH(无量纲) 值分布
plt.figure(figsize=(10, 6))
sns.boxplot(data=df, x='海区', y='PH(无量纲)', palette='viridis')
plt.title('不同海区的 PH(无量纲) 值分布', fontsize=14)
plt.xlabel('海区', fontsize=12)
plt.ylabel('PH(无量纲)', fontsize=12)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()

2  不同海区的溶解氧含量情况
plt.figure(figsize=(12, 6))
sns.barplot(x='海区', y='溶解氧(mg/L)', data=df, ci=None, palette='viridis')  
plt.title('不同海区的溶解氧含量', fontsize=16, fontweight='bold')
plt.xlabel('', fontsize=14)
plt.ylabel('', fontsize=14)
for p in plt.gca().patches:
    plt.gca().text(p.get_x() + p.get_width() / 2, p.get_height() + 0.1, 
                   f'{p.get_height():.2f}', ha='center', fontsize=10)
plt.show()

3  水质类别可视化

category_counts = df['水质类别'].value_counts()
plt.figure(figsize=(10, 6))
category_counts[::-1].plot(kind='barh', color='skyblue')
plt.title('水质类别数量排行榜')
plt.xlabel('水质类别')
plt.ylabel('数量')
plt.show()

plt.figure(figsize=(8, 8))
category_counts.plot(kind='pie', autopct='%1.1f%%', startangle=140)
plt.title('水质类别占比分布')
plt.show()

4  水质指标相关性热力图
corr_matrix = df[['PH(无量纲)', '溶解氧(mg/L)', '化学需氧量(mg/L)', '无机氮(mg/L)', '活性硝酸盐(mg/L)', '石油类(mg/L)']].corr()
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('水质指标相关性热力图')
plt.show()

5  水质指标的多变量分析
sns.pairplot(df[['PH(无量纲)', '溶解氧(mg/L)', '化学需氧量(mg/L)', '无机氮(mg/L)', '活性硝酸盐(mg/L)', '石油类(mg/L)']])
plt.show()
### starRC、LEF 和 DEF 文件的 EDA 工具使用教程 #### 关于 starRC 的使用说明 starRC 是由 Synopsys 开发的一款用于寄生参数提取 (PEX) 的工具,在 detail routing 完成之后被调用,以提供精确的电阻电容延迟分析数据[^2]。该工具能够处理复杂的多层互连结构并支持多种工艺节点。 对于 starRC 的具体操作指南,通常可以从官方文档获取最权威的信息。访问 Synopsys 官方网站的技术资源页面,可以找到最新的产品手册以及应用笔记等资料。此外,还可以通过在线帮助系统获得交互式的指导和支持服务。 #### LEF 和 DEF 文件格式解析及其在 Cadence 中的应用 LEF(Library Exchange Format)和 DEF(Design Exchange Format)是两种广泛应用于集成电路布局布线阶段的标准文件格式之一[^3]。前者主要用于描述标准单元库中的元件几何形状;后者则记录了整个芯片版图的设计信息,包括但不限于各个模块的位置关系、网络连接情况等重要细节。 当涉及到这些文件类型的编辑或读取时,Cadence 提供了一系列强大的平台级解决方案,比如 Virtuoso Layout Editor 就可以直接打开并修改 LEF/DEF 格式的项目工程。为了更好地理解和运用这两种文件格式,建议参阅 Cadence 发布的相关培训材料或是参加其举办的专项课程学习活动。 ```bash # 示例命令:查看 LEF 或 DEF 文件内容 cat my_design.lef cat my_design.def ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值