【Python爬虫(26)】Python爬虫进阶:数据清洗与预处理的魔法秘籍
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。
目录
- 一、数据清洗的重要性
- 二、数据清洗的常见任务
- 2.1 去除噪声数据
- 2.2 处理缺失值
- 2.3 纠正错误数据
- 三、使用 Python 库进行数据清洗与预处理
- 3.1 认识 pandas 库
- 3.2 数据导入与查看
- 3.3 利用 pandas 处理缺失值
- 3.4 利用 pandas 处理重复数据
- 3.5 利用 pandas 处理异常值
- 四、数据标准化与归一化方法
- 4.1 标准化与归一化的概念
- 4.2 标准化方法
- 4.3 归一化方法
- 4.4 标准化与归一化的应用场景
- 五、总结与展望
一、数据清洗的重要性
在使用 Python 爬虫获取数据后,数据清洗是至关重要的环节。从网页中爬取的数据往往包含大量噪声数据、缺失值和错误数据 ,这些 “脏数据” 会严重影响后续数据分析和模型训练的准确性与可靠性。例如,在进行市场趋势分析时,如果数据中存在大量重复的销售记录(噪声数据),可能会导致对市场需求的误判;若销售数据中存在缺失值,基于这些数据建立的销售预测模型可能会产生较大偏差。因此,数据清洗就像是数据处理流程中的 “质检员”,为后续更高级的数据处理和分析奠定坚实基础。
二、数据清洗的常见任务
2.1 去除噪声数据
噪声数据是指那些不符合数据模式或期望的数据点,它们会干扰数据分析的准确性 。在爬虫获取的数据中,常见的噪声数据类型包括乱码、特殊符号、重复数据等。比如在爬取网页新闻内容时,可能会混入一些 HTML 标签、JavaScript 代码片段等乱码和特殊符号,这些对于新闻内容分析毫无价值 。
使用正则表达式可以有效去除这些噪声。比如利用re模块来匹配并去除 HTML 标签:
import rehtml_text = "<p>这是一段新闻内容,<span style='color:red'>包含HTML标签</span></p>"
clean_text = re.sub(r'<.*?>', '', html_text)
print(clean_text)
上述代码中,re.sub(r’<.*?>', ‘’, html_text)表示使用空字符串替换掉所有的 HTML 标签,从而得到干净的文本内容。对于重复数据,可以使用pandas库的drop_duplicates方法去除。例如:
import pandas as pddata = {'col1': [1, 2, 2, 3], 'col2': ['a', 'b', 'b', 'c']}
df = pd.DataFrame(data)
unique_df = df.drop_duplicates()
print(unique_df)
通过drop_duplicates方法,DataFrame中的重复行被成功去除。
2.2 处理缺失值
缺失值是指数据集中某个或某些属性的值是缺失的情况。在现实世界的数据中,缺失值非常常见,比如在爬取电商商品信息时,部分商品的描述、价格等信息可能缺失。
常见的缺失值处理方法有以下几种:
- 删除:当数据集中缺失值较少时,可以直接删除含有缺失值的行或列。在pandas中,使用dropna方法实现。例如:
import pandas as pddata = {'col1': [1, None, 3], 'col2': ['a', 'b', 'c']}
df = pd.DataFrame(data)
filtered_df = df.dropna()
print(filtered_df)
- 填充:
-
- 均值填充:适用于数值型数据且数据整体极值差异不大时。例如对成年男性身高的缺失值进行填充。在pandas中,使用fillna方法结合mean函数实现。如:
import pandas as pddata = {'col1': [1, None, 3]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].fillna(df['col1'].mean())
print(df)
-
- 中位数填充:当数据整体极值差异较大时使用,比如对人均收入进行填充(数据中含有高收入人群,如马总)。代码如下:
import pandas as pddata = {'col1': [1, None, 1000]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].fillna(df['col1'].median())
print(df)
-
- 众数填充:用于字符类型或没有大小关系的数值类型数据。例如对城市信息的缺失进行填充。代码如下:
import pandas as pddata = {'col1': ['北京', '上海', None]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].fillna(df['col1'].mode()[0])
print(df)
- 插值法:对于数值型数据,当数据列的含义较为复杂,需要更精确的填充方法时可以使用。pandas中的interpolate方法本质是使用各种数学(统计学)中的插值方法进行填充,包含最近邻插值法、阶梯插值、线性插值、B 样条曲线插值等多种方法。例如:
import pandas as pddata = {'col1': [1, None, 3]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].interpolate()
print(df)
2.3 纠正错误数据
错误数据是指数据中存在不符合逻辑或与实际情况不符的数据。例如在爬取学生成绩数据时,可能出现成绩大于 100 分(假设满分 100 分)的情况,或者数据类型错误,如将成绩存储为字符串类型。
以识别和纠正成绩数据中的错误为例,假设存在一个包含学生成绩的DataFrame:
import pandas as pddata = {'姓名': ['张三', '李四', '王五'], '成绩': ['85', 120, 90]}
df = pd.DataFrame(data)# 检查数据类型并转换为数值类型
df['成绩'] = pd.to_numeric(df['成绩'], errors='coerce')# 纠正错误数据(成绩大于100分的设为100分)
df['成绩'] = df['成绩'].apply(lambda x: 100 if x > 100 else x)print(df)
在上述代码中,首先使用pd.to_numeric将成绩列转换为数值类型,errors='coerce’表示将无法转换的值设为NaN。然后通过apply方法结合匿名函数,将大于 100 分的成绩纠正为 100 分。
三、使用 Python 库进行数据清洗与预处理
在 Python 的数据清洗和预处理工作中,pandas库是一个强大且常用的工具,它提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。
3.1 认识 pandas 库
pandas是基于NumPy构建的,利用了NumPy数组计算的优势,在数据处理和分析方面表现出色。它主要有两个核心数据结构:Series(一维带标签数组)和DataFrame(二维表格型数据结构 ),这使得处理和分析各种类型的数据变得更加便捷。例如,DataFrame可以看作是由多个Series组成的表格,每列都是一个Series,且所有列共享同一索引。pandas库提供了丰富的函数和方法,涵盖数据读取、写入、清洗、处理、分析等各个环节,如读取常见的 CSV、Excel 等文件格式,处理缺失值、重复值和异常值等,还能进行数据的合并、分组、透视等操作。
3.2 数据导入与查看
使用pandas读取 CSV 文件非常简单,只需使用read_csv函数:
import pandas as pd# 读取CSV文件
data = pd.read_csv('data.csv')
读取 Excel 文件则使用read_excel函数:
# 读取Excel文件
data = pd.read_excel('data.xlsx')
读取数据后,可以使用shape属性查看数据的形状(行数和列数),使用dtypes属性查看每列的数据类型:
# 查看数据形状
print(data.shape) # 查看列数据类型
print(data.dtypes)
3.3 利用 pandas 处理缺失值
pandas提供了多种处理缺失值的方法。例如,dropna方法用于删除含有缺失值的行或列,fillna方法用于填充缺失值。假设我们有一个包含缺失值的DataFrame:
import pandas as pd
import numpy as npdata = {'col1': [1, np.nan, 3], 'col2': ['a', 'b', np.nan]}
df = pd.DataFrame(data)# 删除含有缺失值的行
filtered_df = df.dropna()
print(filtered_df) # 使用指定值填充缺失值
df.fillna(0, inplace=True)
print(df)
在上述代码中,首先创建了一个含有缺失值的DataFrame,然后使用dropna方法删除含有缺失值的行,接着使用fillna方法将缺失值填充为 0 ,inplace=True表示在原数据上进行修改。
3.4 利用 pandas 处理重复数据
使用pandas的drop_duplicates方法可以识别和删除重复数据。例如:
import pandas as pddata = {'col1': [1, 2, 2, 3], 'col2': ['a', 'b', 'b', 'c']}
df = pd.DataFrame(data)# 删除重复行
unique_df = df.drop_duplicates()
print(unique_df)
运行上述代码,drop_duplicates方法会自动检测并删除DataFrame中的重复行,只保留唯一的行数据。
3.5 利用 pandas 处理异常值
可以使用统计方法(如 Z-Score)或可视化工具(如箱线图)检测异常值。Z-Score 是一种常用的检测异常值的统计方法,它通过计算数据点与均值的距离(以标准差为单位)来判断数据点是否为异常值。一般来说,Z-Score 绝对值大于 3 的数据点可以被视为异常值。使用pandas结合numpy实现 Z-Score 检测异常值的代码如下:
import pandas as pd
import numpy as npdata = {'col1': [1, 2, 3, 100, 5]}
df = pd.DataFrame(data)# 计算Z-Score
df['z_score'] = np.abs((df['col1'] - df['col1'].mean()) / df['col1'].std())# 筛选出异常值
outliers = df[df['z_score'] > 3]
print(outliers)
使用箱线图可视化数据,直观地展示数据分布和异常值,需要借助matplotlib库,代码如下:
import pandas as pd
import matplotlib.pyplot as pltdata = {'col1': [1, 2, 3, 100, 5]}
df = pd.DataFrame(data)# 绘制箱线图
df['col1'].plot(kind='box')
plt.show()
在上述代码中,df[‘col1’].plot(kind=‘box’)用于绘制col1列数据的箱线图,通过箱线图可以直观地看到数据中的异常值(通常用离群点表示)。在检测到异常值后,可以根据具体情况进行处理,如删除异常值、对异常值进行修正或转换等。例如,如果确定某个异常值是由于数据录入错误导致的,可以将其修正为正确的值;如果异常值是真实存在的数据,但对分析结果有较大影响,可以考虑删除该数据点 。使用pandas删除异常值的代码如下:
import pandas as pd
import numpy as npdata = {'col1': [1, 2, 3, 100, 5]}
df = pd.DataFrame(data)# 计算Z-Score
df['z_score'] = np.abs((df['col1'] - df['col1'].mean()) / df['col1'].std())# 删除异常值
filtered_df = df[df['z_score'] <= 3]
print(filtered_df)
上述代码通过 Z-Score 方法检测出异常值,并使用布尔索引删除了异常值,得到了一个不包含异常值的DataFrame。
四、数据标准化与归一化方法
4.1 标准化与归一化的概念
在数据处理过程中,标准化和归一化是两种重要的数据变换方法,它们主要用于消除数据特征之间的量纲影响,使不同特征处于同一尺度,便于后续的数据分析和模型训练。
- 标准化(Standardization),也称为 Z-Score 标准化,是将数据按比例缩放,使之符合标准正态分布,即均值为 0,标准差为 1 。其核心思想是通过对数据进行平移和缩放,将数据转换为均值为 0、标准差为 1 的分布。标准化的作用在于,它能够保持数据的分布形状不变,只是对数据进行了位置和尺度的调整,使得不同特征之间具有可比性。例如,在分析学生的各科成绩时,不同科目的满分和平均分可能不同,通过标准化可以将各科成绩统一到一个标准尺度上,便于比较学生在不同科目上的相对表现。
- 归一化(Normalization)通常是将数据缩放到 [0,1] 或者 [-1,1] 的范围内 。它的目的是将数据映射到一个特定的区间,消除数据的尺度差异,使数据更加集中在一个较小的范围内。在图像数据处理中,像素值通常在 0 - 255 之间,通过归一化可以将其缩放到 [0,1] 区间,方便后续的计算和处理。
标准化和归一化的主要区别在于:标准化是基于数据的均值和标准差进行变换,而归一化是基于数据的最大值和最小值进行变换;标准化更注重数据的分布特征,而归一化更注重数据的尺度范围。
4.2 标准化方法
常见的标准化方法是 Z-Score 标准化,其计算公式为:
其中,是标准化后的数据,
是原始数据,
是数据的均值,
是数据的标准差。
计算步骤如下:
-
计算数据的均值:
-
计算数据的标准差:
-
根据公式计算标准化后的数据
。
使用 Python 的numpy库实现 Z-Score 标准化的代码如下:
import numpy as np# 原始数据
data = np.array([1, 2, 3, 4, 5])# 计算均值和标准差
mean = np.mean(data)
std = np.std(data)# 进行Z-Score标准化
standardized_data = (data - mean) / stdprint(standardized_data)
4.3 归一化方法
常见的归一化方法是 Min-Max 归一化,也称为离差标准化,它使结果值映射到 [0,1] 之间,转换函数如下:
其中,是归一化后的数据,
是原始数据,(min(X))和(max(X))分别是数据集中的最小值和最大值。
计算步骤如下:
- 找出数据集中的最小值(min(X))和最大值(max(X))。
- 对每个数据点
,根据公式计算归一化后的数据
。
使用 Python 的numpy库实现 Min-Max 归一化的代码如下:
import numpy as np# 原始数据
data = np.array([1, 2, 3, 4, 5])# 计算最小值和最大值
min_val = np.min(data)
max_val = np.max(data)# 进行Min-Max归一化
normalized_data = (data - min_val) / (max_val - min_val)print(normalized_data)
4.4 标准化与归一化的应用场景
在不同的机器学习算法和数据分析场景中,选择合适的标准化和归一化方法非常重要:
- 在基于距离度量的算法中:如 KNN、K-Means 聚类算法,标准化和归一化可以避免某一个取值范围特别大的特征对距离计算造成影响,提高模型的精度。在 KNN 算法中,如果一个特征的值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖。此时,使用标准化或归一化方法可以使各个特征在距离计算中发挥相对均衡的作用。
- 在梯度下降优化算法中:归一化可以加快模型的收敛速度。例如在逻辑回归和神经网络的训练中,归一化后的数据可以使目标函数的等高线变得更圆,梯度下降的方向更接近最小值的方向,从而更快地收敛。
- 当数据分布接近正态分布时:标准化可能是一个更好的选择,因为许多机器学习算法(如线性回归、逻辑回归、支持向量机等)在设计时都假设输入数据是正态分布的,标准化能够保持数据的分布形状,更符合这些算法的假设,从而提高模型的性能。
- 如果数据存在异常值,或者最大最小值非常不稳定:归一化可能更为合适。因为归一化主要受到最大值和最小值的影响,对异常值相对鲁棒,而标准化涉及均值和标准差,对异常值比较敏感,异常值的存在可能会影响处理后数据的分布。在处理房价数据时,如果存在个别价格极高的豪宅(异常值),使用归一化可以减少这些异常值对数据整体尺度的影响,使数据更稳定。
五、总结与展望
数据清洗与预处理是数据处理流程中不可或缺的环节,其重要性不言而喻。通过去除噪声数据、处理缺失值和纠正错误数据等常见任务,能够显著提高数据的质量和可用性,为后续的数据分析、机器学习和深度学习等任务提供坚实的数据基础。在实际应用中,Python 的pandas库为数据清洗与预处理提供了强大而便捷的工具,使我们能够高效地处理各种类型的数据。同时,数据标准化与归一化方法则针对数值型数据,消除了量纲影响,提升了数据的可比性和模型的性能。
展望未来,随着大数据和人工智能技术的迅猛发展,数据清洗与预处理技术也将迎来新的机遇和挑战。一方面,数据规模和复杂性的不断增加,将对数据清洗与预处理的效率和准确性提出更高要求,促使我们开发更加自动化、智能化的算法和工具,以适应大数据时代的需求。例如,利用深度学习算法自动识别和处理缺失值、异常值等问题,实现数据清洗的自动化和智能化。另一方面,随着人工智能技术在各个领域的广泛应用,对高质量数据的需求也将日益增长,这将进一步凸显数据清洗与预处理的重要性。在医疗领域,精准的疾病诊断和治疗需要高质量的医疗数据,数据清洗与预处理能够确保医疗数据的准确性和可靠性,为人工智能辅助医疗决策提供有力支持。此外,数据安全和隐私保护也将成为数据清洗与预处理过程中需要重点关注的问题,如何在保证数据质量的同时,保护数据的安全和隐私,将是未来研究的重要方向之一。
相关文章:
【Python爬虫(26)】Python爬虫进阶:数据清洗与预处理的魔法秘籍
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
NPM如何更换淘宝镜像——Node.js国内镜像配置教程
在国内使用 npm 安装 Node.js 包时,由于网络环境的原因,下载速度可能非常慢。为了解决这个问题,很多开发者会选择使用淘宝镜像(现在由 npmmirror.com 维护)。本文将带你一步一步完成更换 npm 源为淘宝镜像的配置&#…...
汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常
故障现象 一辆2010款路虎揽胜车,搭载5.0 L发动机,累计行驶里程约为16万km。车主反映,接通空调开关后,有时出风忽大忽小,有时不出风,有时要等2 min左右才出风;有时两三天出现一次,…...
pytorch3d安装记录
官方安装教程: https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md 通过pip 或conda 可以很容易安装上预编译好的包, 安装过程不会报错, 但是使用的时候就会报各种错误 ,原因是预编译好的包跟自己的环境不一定…...
服务器通过 ollama 运行deepseek r1
1、服务器环境简介 56核 CPU64G 内存无显卡已安装 Ollama 2、下载模型与配置 正常可以通过 ollama pull 或 ollama run 命令直接下载,但通常会遇到连接超时、找不到网址等总理。因此,可以使用国内的模型站进行下载,在这里使用魔塔查找模型…...
ollama stream“:True django如何返回数据
在使用 Django 框架开发 Web 应用时,如果你想要通过 Ollama 流式返回数据,你可以通过 Django 的 HttpResponse 或者 StreamingHttpResponse 来实现。Ollama 主要用于处理文本生成任务,如聊天机器人、自动完成等,通常这些任务会产生…...
RabbitMQ 消息队列
1. 消息队列是什么? 当用户注册成功后,就发送邮件。当邮件发送成功了,接口才会提示注册成功信息。但由于发送邮件,依赖于其他厂商的服务,有可能他们的接口会非常耗时。那么用户就一直要等着邮件发送成功了,…...
idea从远程gitee拉取项目
文章目录 从gitee上面拿到项目地址填写远程地址,并且设置项目保存位置拉取成功 从gitee上面拿到项目地址 填写远程地址,并且设置项目保存位置 拉取成功...
PHP集成软件用哪个比较好?
在Windows环境下,使用PHP时,通常需要一个集成开发环境(IDE)或者集成软件来简化开发和调试过程。以下是几款常用且推荐的PHP集成软件,每款都有其特点,可以根据需求进行选择: 1. XAMPP 特点&…...
Es的text和keyword类型以及如何修改类型
昨天同事触发定时任务发现es相关服务报了一个序列化问题, 今天早上捕获异常将异常堆栈全部打出来看,才发现是聚合的字段不是keyword类型的问题。 到kibbna命令行执行也是一样的错误 使用 /_mapping查看索引的字段类型,才发现userUniqueid是te…...
【找工作】C++和算法复习(自用)
文章目录 C头文件自定义排序函数stl 算法数据结构树状数组 数学 自用随便记录 C 排序 stl 头文件 全能头文件: #include<bits/stdc.h>自定义排序函数 bool compare(const int &odd1,const int &odd2) {return odd1>odd2; }stl 枚举map map&…...
Python VsCode DeepSeek接入
Python VsCode DeepSeek接入 创建API key 首先进入DeepSeek官网,https://www.deepseek.com/ 点击左侧“API Keys”,创建API key,输出名称为“AI” 点击“创建",将API key保存,复制在其它地方。 在VsCode中下载…...
开放表格式和对象存储架构指南
比较 Apache Iceberg、Delta Lake 和 Apache Hudi,并了解如何为您的数据湖仓一体选择合适的开放表格式。开放表格式和对象存储正在重新定义组织构建其数据系统的方式,为可扩展、高效且面向未来的数据湖仓一体奠定了基础。通过利用对象存储的独特优势&…...
Netty入门详解
引言 Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能网络服务器和客户端。它提供了一组丰富的 API,使得开发人员能够轻松地处理各种网络协议,如 TCP、UDP 等,并且支持多种编解码方式&a…...
我国首条大型无人机城际低空物流航线成功首航
首航震撼开场:羊肉 “飞” 越 540 公里 在夜色的笼罩下,榆阳马合通用机场的跑道上,一架大型固定翼无人机蓄势待发,机身被灯光照亮,宛如一只即将展翅翱翔的钢铁巨鸟。它的货舱里,满满装载着新鲜的榆林羊肉&a…...
【数据挖掘】--算法
【数据挖掘】--算法 目录:1. 缺失值和数值属性处理1缺失值处理: 2. 用于文档分类的朴素贝叶斯3. 分治法:建立决策树4. 覆盖算法建立规则5. 挖掘关联规则6. 线性模型有效寻找最近邻暴力搜索(Brute-Force Search)kd树&am…...
C++初阶——简单实现vector
目录 1、前言 2、Vector.h 3、Test.cpp 1、前言 简单实现std::vector类模板。 相较于前面的string,vector要注意: 深拷贝,因为vector的元素可能是类类型,类类型元素可以通过赋值重载,自己实现深拷贝。 迭代器失效…...
三、Three.js模型对象、材质
一、三维向量Vector3与模型位置 点模型Points、线模型Line、网格网格模型Mesh等模型对象的父类都是Object3D,如果想对这些模型进行旋转、缩放、平移等操作,如何实现,可以查询Threejs文档Object3D对相关属性和方法的介绍 1、三维向量Vector3 …...
C# 背景 透明 抗锯齿 (效果完美)
主要是通过 P/Invoke 技术调用 Windows API 函数 gdi32.dll/user32.dll,同时定义了一些结构体来配合这些 API 函数的使用,常用于处理图形绘制、窗口显示等操作。 运行查看效果 局部放大,抗锯齿效果很不错,尾巴毛毛清晰可见。 using System; u…...
Ubuntu 22.04 一键部署MinerU1.1.0
MinerU MinerU是一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。 MinerU诞生于书生-浦语的预训练过程中,我们将会集中精力解决科技文献中的符号转化问题,希望在大模型时代为科技发…...
10、k8s对外服务之ingress
service和ingress的作用 service的作用 NodePort:会在每个节点开放一个端口,端口号30000-32767。 也是只能用于内网访问,四层转发。实现负载均衡。不能基于域名进行访问。 clusterip:service的默认类型,只能在集群…...
mysql面试题
一、基础概念 什么是主键(Primary Key)? 答案: 唯一标识表中每行数据的字段或字段组合,不允许 NULL 值,确保数据唯一性。 外键(Foreign Key)的作用是什么? 答案…...
什么是关系型数据库?什么是非关系型数据库?
关系型数据库:关系型数据库是基于关系模型的数据库,它将数据组织成二维表格的形式,每个表格称为一个表(Table),表中的每一行称为一条记录(Record)或元组(Tuple࿰…...
科技云报到:科技普惠潮流渐起,“开源”将带我们走向何方?
科技云报到原创。 开源决定软件未来,已成为全球技术和产业创新的主导模式之一。“开源”思想的诞生,可以说是计算机发展史中极具理想主义和浪漫主义色彩的一页,是科技自由与技术极客思想的延伸。 数字化浪潮奔涌,从软件开发的底…...
校园网架构设计与部署实战
一、学习目标 掌握校园网分层架构设计原则 理解多业务VLAN规划方法 学会部署认证计费系统 实现基础网络安全防护 二、典型校园网场景 需求分析:某中学需建设新型校园网络 覆盖教学楼/宿舍/图书馆三区域 区分教师/学生/访客网络权限 满足2000终端并发接入 …...
【含开题报告+文档+PPT+源码】基于Springboot的乡村老龄居民信息管理系统
开题报告 本文介绍了一个基于Spring Boot框架的乡村老龄居民信息管理系统。该系统旨在通过信息化手段,提高乡村老龄居民的生活质量,并为相关部门提供便捷的数据管理和服务支持。系统主要实现了用户注册登录、个人信息查看、健康数据录入、健康建议查询、…...
前端插件使用xlsx-populate,花样配置excel内容,根据坐添加标替换excel内容,修改颜色,合并单元格...。
需求要求:业务人员有个非常复杂得excel表格,各种表头等,但是模板是固定得。当然也可以实现在excel上搞出各种表格,但是不如直接用已有模板替换其中要动态得内容方便,这里我们用到CSDN得 xlsx-populate 插件。 实列中我…...
Mac m1 连接公司内网
1、创建VPN 1、在系统偏好设置 2、选择网络 3、进行添加 2、添加设置 1、选择VPN 2、类型选择L2TP/IPSec 3、填写服务器IP和账号 4、点击认证设置-填写密码 。然后应用 3、进行特殊配置 网上说苹果系统的问题。 1、创建命令 sudo vim /etc/ppp/options 2、添加内容-主要别…...
Jenkins 部署在 Mac 并在局域网内通过 ip 访问
Jenkins 部署在 Mac 并在局域网内通过 ip 访问 一、修改配置文件 打开文件 ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist 打开文件 /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist 两个文件目录不同,内容一样 <?xml version"1.0" e…...
臻识相机,华夏相机,芊熠车牌识别相机加密解密
臻识,华夏,芊熠这三种车牌识别相机解密我都试过了,可以正常解密成功,其它品牌我暂时没有测试。超级简单,免费的,白嫖无敌! 流程: ①:先导出配置文件,例如我以…...
【Python 专题】数据结构 树
LeetCode 题目104. 二叉树的最大深度(gif 图解)方法一:后序遍历(DFS)方法二:层序遍历(BFS)872. 叶子相似的树(DFS 遍历)1448. 统计二叉树中好节点的数目(DFS 遍历)437. 路径总和 III(前缀和 + DFS 回溯)1372. 二叉树中的最长交错路径(DFS)236. 二叉树的最近公共…...
【飞行器原理学习】——1. 机翼及机翼参数
飞行器原理学习——1.机翼 一、 概述 飞机的各种机翼是飞机的控制面 通过铰链、钢索、液压等方式连接在机身上 操纵面运动时,会改变机翼的弧度和形状,使流经的空气发生偏转,从而影响空气动力的大小。使飞机围绕着3轴运动 二、机翼的操纵面…...
css之display:grid布局改块级元素布局
1.问题: div是块级元素,一个div元素占一行,但是,今天测试样式时,总是会有两个div并占一行,很困惑,结果发现是app这个样式 在main.css里 #app样式布局在main.ts里被应用 2.原因以及样式分析 im…...
如何组织和管理JavaScript文件:最佳实践与策略
在现代Web开发中,JavaScript已经成为不可或缺的一部分。随着项目规模的扩大,JavaScript代码的复杂性也随之增加。如何有效地组织和管理这些文件,不仅影响开发效率,还直接关系到项目的可维护性和可扩展性。本文将深入探讨如何组织和…...
Vue 中组件通信的方式有哪些,如何实现父子组件和非父子组件之间的通信?
一、父子组件通信(垂直通信) 1. Props 传值(父 → 子) 实现方案: <!-- Parent.vue --> <template><Child :user"userData" /> </template><script setup> import { ref } …...
伯克利 CS61A 课堂笔记 11 —— Mutability
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Objects 02 Example: Strings Ⅰ Representing Strings: the ASCII Standard Ⅱ Representing Strings: the Unicode Standard 03 Mutatio…...
MacOS安装Emacs
个人博客地址:MacOS安装Emacs | 一张假钞的真实世界 在MacOS X上可以使用Homebrew 安装Emacs: $ brew install emacs --with-cocoa 或者用MacPorts: $ sudo port install emacs-app OSX Emacs 网站提供了通用的二进制包。 前两种方法安装…...
基于海思soc的智能产品开发(图像处理的几种需求)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于一个嵌入式设备来说,如果上面有一个camera,那么就可以有很多的用途。简单的用途就是拍照,比拍照更多一点的…...
百度智能云AI收入增3倍,2025开源引流打赢生态战
免费、开源。在DeepSeek重塑产业价值观念后,百度、OpenAI等AI时代的“领航员”纷纷采取行动。 随着开源以雷霆万钧之势袭来,百度下定决心求变。而其底气,就藏在这份财报中。根据财报,2024年,百度集团总收入为1331亿元…...
[数据结构]顺序表详解
目录 一.线性表 二.顺序表 2.1概念及结构 1. 静态顺序表:使用定长数组存储元素。 2. 动态顺序表:使用动态开辟的数组存储。 2.1按需申请 2.2 接口实现:增删查改 SeqList.h: SeqList.c: test.c 一.线性表 线性表 ( line…...
力扣hot100 ——搜索二维矩阵 || m+n复杂度优化解法
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 解题思路: 借助行和列有序特性,不断按行或者列缩小范围;途中数字表示每…...
VirtualBox 中使用 桥接网卡 并设置 MAC 地址
在 VirtualBox 中使用 桥接网卡 并设置 MAC 地址,可以按照以下步骤操作: 步骤 1:设置桥接网卡 打开 VirtualBox,选择你的虚拟机,点击 “设置” (Settings)。进入 “网络” (Network) 选项卡。在 “适配器 1” (Adapt…...
ETL工具: Kettle入门(示例从oracle到oracle的数据导入)
kettle介绍 ETL工具,用于对数据的抽取(Extract), 转换(Transform),加载 (Load) Kettle 是一种ETL工具, 现称为 Pentaho Data Integration (PDI) 特点:纯JAVA语言编写 官方学习文档 网站: https://docs.hitachivantara.com/r/en-us/pentaho-data-int…...
未来AI方向落地场景:小语言模型,super_private_agent
未来AI方向落地场景:小语言模型,super_private_agent 目录 未来AI方向落地场景:小语言模型,super_private_agent小语言模型super - private - agent(注重隐私的智能代理)碳基生命和硅基生命交互界面面向agent的专用交互协议和数据接口从web平台经济到网络平台举例说明社交…...
Oracle RAC数据库单节点轮流重启
0、sqlplus / as sysdba 备份参数文件 create pfile/home/oracle/pfile.ora from spfile; 备份控制文件 Alter database backup controlfile to trace; 1、关闭两节点的监听; 2、操作系统层面kill掉所有LOCALNO的所有进程,即:连接会话。 p…...
渲染101对Blender的支持与硬件配置详解
一、Blender版本与渲染器支持 渲染101全面支持 Blender全版本(包括Blender 4.0及早期版本),并适配其内置的 Eevee、Cycles、Workbench 三大渲染器 。此外,平台还兼容 Aces、Realflow、Anima 等40插件,覆盖建模、动画…...
安卓burp抓包,bypass ssl pinning
好久好久没有发东西了。主要是懒。。。 这几天在搞apk渗透,遇到了burp无法抓包问题,觉得可以写下来。 问题描述 1. 一台安卓手机,装了面具,可以拿到root 2. 电脑上有burp,设置代理 3.手机和电脑连同一个网段&…...
植物大战僵尸杂交版v3.2.1最新版本(附下载链接)
B站游戏作者潜艇伟伟迷于12月21日更新了植物大战僵尸杂交版3.2.1版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/e5…...
【SQL】多表查询案例
📢本章节主要学习使用SQL多表查询的案例,多表查询基础概念 请点击此处。 🎄数据准备 首先我们创建一个新的表也就是薪资等级表,其余两个表(员工表和薪资表)在多表查询章节中已经创建。然后我么根据这三个表完成下面的12个需求。 create tab…...
使用Python结合`stable-baselines3`库(包含PPO和TD3算法)以及`gym`库来实现分层强化学习的示例代码
以下是一个使用Python结合stable-baselines3库(包含PPO和TD3算法)以及gym库来实现分层强化学习的示例代码。该代码将环境中的动作元组分别提供给高层处理器PPO和低层处理器TD3进行训练,并实现单独训练和共同训练的功能。 代码实现 import g…...