Python+AI提示词出租车出行轨迹预测:梯度提升GBR、KNN、LR回归、随机森林融合及贝叶斯概率异常检测研究

原文链接:tecdat.cn/?p=41693

在当今数字化浪潮席卷全球的时代,城市交通领域的海量数据如同蕴藏着无限价值的宝藏等待挖掘。作为数据科学家,我们肩负着从复杂数据中提取关键信息、构建有效模型以助力决策的使命点击文末“阅读原文”获取完整代码、数据、文档)。

我们团队承接并完成了一项极具挑战性的咨询项目 —— 针对出租车出行数据的深度分析与预测研究。该项目旨在通过对出租车运营数据的全方位剖析,为城市交通资源优化配置与科学规划提供坚实的数据支撑。

项目伊始,我们面对的是出租车出行的原始数据,这些数据包含行程标识、叫车方式、时间信息、GPS 坐标等多维度特征,然而数据缺失与异常问题也随之而来。为此,我们运用 Python 为核心工具,开展数据预处理工作,筛选有效数据子集。紧接着,借助数据可视化手段,从时间、叫车类型等维度深入探索数据规律,发现出行活动在工作日与周末、不同叫车方式间的显著差异。针对数据中的异常值,我们创新性地引入基于贝叶斯概率的异常检测模型,成功识别出约 10% 存在无效 GPS 坐标的路线。最后,我们构建了包括随机森林回归器(RFR)、梯度提升回归器(GBR)、线性回归(LR)、k 近邻回归(KNR)、决策树回归(DTR)等多种机器学习模型,对出租车行程进行预测,对比各模型性能,为后续优化与实际应用奠定基础。

专题项目文件已分享在交流社群,阅读原文进群和 500 + 行业人士共同交流和成长。我们期待探索数据背后的无限可能,为城市交通的智能化发展贡献力量。

文章流程图

 

出租车出行数据分析与预测研究

在城市交通日益复杂的当下,出租车作为重要的出行方式,其运营数据蕴含着巨大价值。通过对出租车出行数据的深入分析与精准预测,不仅能够优化出租车资源配置,还能为城市交通规划提供有力支撑。本次研究围绕出租车出行数据展开,旨在探索数据背后的规律,并构建有效的预测模型。

数据探索与预处理

研究首先面临的是出租车出行数据。每一条数据样本对应一次完整的行程,包含9个特征。TRIP_ID 是每次行程的唯一标识;CALL_TYPE 标识叫车方式,分为从调度中心派单(A)、在特定站点向司机叫车(B)和其他方式(C) ;ORIGIN_CALL 在 CALL_TYPE 为 A 时标识行程客户的电话号码,否则为 NULL ;ORIGIN_STAND 在 CALL_TYPE 为 B 时标识出租车起始站点,否则为 NULL ;TAXI_ID 标识执行行程的出租车司机;TIMESTAMP 以Unix时间戳记录行程开始时间;DAYTYPE 标识行程开始日期类型,分为节假日或特殊日(B)、特殊日前一天(C)和普通日(A) ;MISSING_DATA 表示GPS数据流是否完整;POLYLINE 记录行程的GPS坐标序列。行程总时长通过 (POLYLINE中的点数 - 1) x 15 秒计算,部分行程存在数据缺失,这为研究带来挑战。
为了更好地分析数据,我们使用Python进行数据处理。

接着读取数据并进行初步处理:

ini
代码解读
复制代码
source = pd.read_csv("tr.cv", sep=",", low_memory=False)
no_poly_source = source.loc[:, source.columns!= 'POLYLINE']
miss_false_no_poly_source = no_poly_source[no_poly_source.MISSING_DATA == False]

通过这几步,我们筛选出了GPS数据完整且不含 POLYLINE 列的数据子集,为后续分析做准备。

数据可视化分析

数据可视化能够帮助我们直观地发现数据中的规律和特征。我们对数据从多个维度进行了可视化探索。
在时间维度上,通过提取数据中的年、月、日、时等信息,绘制了各类图表。例如,绘制年份分布饼图,观察每年出行数据的占比:

还绘制了出行数量随日期的变化折线图,清晰呈现出不同日期出行量的波动趋势:

此外,还分析了每月、每月中的每一天、每周的每一天的出行数量分布情况,绘制了相应的柱状图。
每月出行数量柱状图:

每月中每天出行数量柱状图:

每周中每天出行数量柱状图:

在叫车类型维度,绘制了叫车类型占比的饼图和矩形树图,直观展示不同叫车方式的比例:

同时,分析了每周不同日期各类叫车方式的出行数量差异,绘制柱状图进行对比:

通过这些可视化图表,我们发现出行数量在不同时间和叫车方式上存在明显差异。例如,周末和工作日的出行高峰时间不同,某些叫车方式在特定时间段更为常见。

热图


点击标题查阅往期内容

图片

杭州出租车行驶轨迹数据空间时间可视化分析

左右滑动查看更多

01

图片

02

图片

03

图片

04

出租车出行数据分析与异常检测

AI提示词:请编写代码,使用pandas读取压缩格式的CSV文件,文件路径为’…/sv.zip’,分隔符为逗号,设置低内存模式为False。

ini
代码解读
复制代码
taxi = pd.read_csv('..
)
出行时间分析

接下来,我们从出行时间的角度对数据进行分析。通过绘制热力图,我们可以直观地看到不同时间段的出行情况。
AI提示词:请使用Python和seaborn库,绘制一个热力图,展示出租车在不同小时和工作日的出行次数分布。需要对数据进行透视表处理,将结果列名设置为中文星期几,使用’coolwarm’颜色映射。

从这个热力图中,我们可以明显看出工作日和周末的出行情况有很大差异。工作日的出行活动主要集中在8点到18点之间,周一的首个小时出现出行高峰。而周五和周六的晚上出行活动也非常活跃,尤其是周六。这表明出行活动主要有两个来源:工作和休闲。工作出行集中在工作日的工作时间,而休闲出行则在周五晚上和周六晚上较为频繁。
我们还可以进一步按照叫车类型对数据进行分组,分析不同叫车类型在不同时间段的出行情况。
AI提示词:请编写一个函数,用于绘制不同叫车类型下,出租车在不同小时和工作日的出行次数热力图。需要对数据进行透视表处理,将结果列名设置为中文星期几,使用’coolwarm’颜色映射。然后使用seaborn的FacetGrid函数按照叫车类型进行分组绘制。

从这个分析中我们发现,不同叫车类型的出行时间分布有明显差异。“其他”叫车类型主要集中在周五和周六晚上,可能是因为出租车司机在这些时间段前往休闲区域接客。而从调度中心派单的出行,在早上首个小时和其他时间段有较大反差,周五和周六晚上有一个小高峰。在站点叫车的出行情况则相对平稳,有特定的活动水平和时间。这说明叫车类型与出行活动有很大的相关性。
我们继续探究一年中不同周、不同工作日的出行次数分布情况。
AI提示词:编写代码处理数据,去除重叠日期数据,提取周数信息,通过透视表计算不同周、不同工作日的出行次数,设置中文星期几为索引,反转星期顺序后绘制热力图。

ini
代码解读
复制代码
# 去除最后一天(6月30日,2014年),因其存在数据重叠问题
taxi = taxi[(taxi.YEAR != 2014) | (taxi.MONTH != 6) | (taxi.DAY != 30)]
taxi["WEEK_NUMBER"] = taxi.TIMESTAMP.apply(lambda x: datetime.fromtimestamp(x).isocalendar()[1])
data = taxi.pivot_table(

从这张图中,我们能发现一些特殊日期出行次数的变化,像1月1日、12月25日等节假日,以及某些特定时间段,出行次数明显不同,背后可能有着各种社会活动或特殊事件的影响 。

行程距离与时长分析

行程的距离和时长也是重要的分析维度。
AI提示词:编写代码,先筛选去除距离和时长的极端值数据,分别通过透视表计算不同小时和工作日的平均行程距离与平均行程时长,然后绘制两张热力图展示结果。

ini
代码解读
复制代码
sns.set(rc={"figure.figsize": (16, 6)})
# 去除行程距离的极端值
taxi = taxi[(taxi.TRIP_DISTANCE < taxi.TRIP_DISTANCE.quantile(0.99))]
distance = taxi.pivot_table(
index="HOUR", columns="WEEKDAY", values=["TRIP_DISTANCE"], aggfunc=np.mean
)

虽然距离和时长高度相关,但它们的均值表现却有所不同。在距离方面,工作日深夜有大量较长距离的行程,周一尤为明显,推测可能是前往机场赶早班机的行程。在时长方面,夜间和周末行程时间低于平均水平,而傍晚尤其是周五,行程时间较长,很可能是交通拥堵导致。
进一步按照叫车类型分组,分析不同叫车类型下行程距离和时长在不同时间段的分布。
AI提示词:编写绘制热力图的通用函数,对数据进行处理和类型转换,使用FacetGrid按叫车类型分组,分别绘制不同叫车类型下行程距离和时长在不同小时和工作日的热力图。

ini
代码解读
复制代码
def draw_heatmap(*args, **kwargs):
data = kwargs.pop("data")
d = data.pivot_table(
index=args[0], columns=args[1], values=args[

ini
代码解读
复制代码
# 绘制行程时长热力图
g = sns.FacetGrid(data, co

同时,我们也分析了一年中不同周、不同工作日的平均行程距离和时长情况。
AI提示词:编写代码处理数据,去除重叠日期数据,提取周数信息,分别通过透视表计算不同周、不同工作日的平均行程距离和平均行程时长,设置中文星期几为索引,反转星期顺序后绘制热力图。

ini
代码解读
复制代码
# 去除最后一天(6月30日,2014年),因其存在数据重叠问题
taxi = taxi[(taxi.YEAR != 2014) | (taxi.MONTH != 6) | (taxi.DAY != 30)]
taxi["WEEK_NUMBER"] = taxi.TIMESTAMP.apply(lambda x: datetime.fromtimestamp(x).isocalendar()[1])
# 计算平均行程距离
data = taxi.pivot_table(

ini
代码解读
复制代码
# 计算平均行程时长
data = taxi.pivot_table(
index="WEEKDAY", columns="WEEK_NUMBER", values="TRIP_TIME", aggfunc=np.mean
)

异常数据检测

在查看出租车行驶路线时,我们发现部分路线存在巨大的不连续性,这可能是异常值或数据采集问题导致的。为了检测这些异常数据,我们先从速度和距离的角度进行分析。
AI提示词:请编写代码,使用sklearn库中的DistanceMetric计算经纬度之间的距离,定义函数计算两点之间的速度,并绘制速度的经验分布函数图。

从速度的经验分布函数图中可以看出,异常点的速度与行程中的其他速度明显不同。接下来,我们绘制点间速度随距离变化的热力图,进一步分析异常数据的特征。
AI提示词:请编写代码,定义一个函数用于绘制点间速度随距离变化的热力图,然后绘制两条轨迹的热力图。

通过这些可视化分析,我们可以直观地看到异常点的存在。为了更系统地检测异常点,我们进一步分析GPS坐标点间距离的分布,发现其符合一定规律。我们利用这个规律,构建了基于贝叶斯概率的异常点检测模型。
AI提示词:请编写代码,定义一个函数计算GPS坐标点的似然值,一个函数对似然值进行归一化处理,一个函数绘制似然值曲线,然后绘制四条轨迹的似然值曲线。

python
代码解读
复制代码
deflikelihood(coords, ab):n = len(coords)

通过计算每个点在路线中的对数似然比,我们设定一个阈值,以此判断该点是否为异常点。
AI提示词:编写代码确定检测参数,包括取轨迹长度的90%分位数作为长度标准,设定似然比阈值;然后应用异常检测方法标记可能存在异常点的轨迹,绘制热力图展示结果;最后统计存在无效GPS坐标的路线数量。

通过上述操作,我们成功检测出约10%的存在无效GPS坐标的路线。

css
代码解读
复制代码
bad_routes = df.traj.apply(lambda t: (norm_lr(likelihood(t,coeffs)) < thresh).any()).values
print("存在无效点的路线: {} / 总路线数".format(bad_routes.sum()))

为了验证检测结果的可靠性,我们随机抽取一些被标记为存在异常的路线进行可视化检查。
AI提示词:编写函数对指定路线进行可视化检查,在轨迹图上标记出检测到的异常点;然后调用函数对多条路线进行检查。

最后,我们绘制未检测出异常点的路线图,与之前的结果进行对比。

ini
代码解读
复制代码
df[~bad_routes].lines.plot(figsize=[15,15])


通过对出租车出行数据抽丝剥茧般的分析,我们像侦探破案一样,发现了出行活动在时间和叫车类型上的规律。从热力图中,我们能清晰看到工作日和周末出行高峰的差异,也了解到不同叫车类型在不同时间段的活跃程度。同时,我们还找到了一种有效的异常数据检测方法,利用贝叶斯概率模型,成功揪出了约10%存在无效GPS坐标的路线。
然而,这只是探索城市交通数据宝藏的开始。我们虽然发现了异常数据,但还不清楚它们产生的具体原因。是高楼大厦影响了信号接收?还是数据采集设备出了问题?此外,检测出异常数据后,如何用更准确的数据替换这些无效数据段,也是一个亟待解决的问题。

在对出租车出行数据进行了详细的探索性分析和异常数据检测后,我们进一步深入研究,尝试构建多种机器学习模型来对出租车的行程进行预测,以便更精准地把握出租车出行的规律,为城市交通规划和运营提供更有力的支持。

机器学习模型的构建

为了构建合适的机器学习模型,我们首先对数据进行了必要的预处理和特征工程,将数据划分为训练集和测试集,分别用于模型的训练和评估。以下是我们构建的几种常见的机器学习模型及其实现过程。

随机森林回归器

AI提示词:请使用Python编写代码,构建一个多输出的随机森林回归模型,设置随机森林的估计器数量为100,随机种子为1。然后使用训练数据对模型进行训练,并分别对训练集和测试集进行预测,最后计算并输出训练集和测试集上的均方误差以及R²分数。

python
代码解读
复制代码
from sklearn.ensemble import RandomForestRegressor
from sklearn.multioutput import MultiOutputRegressor
from sklearn.metrics import mean_squared_error, r2_score
# 构建多输出随机森林回归器
forest = MultiOutputRegressor(RandomForestRegressor(n_estimators=100, random_state=1))
# 模型训练
forest = forest.fit(X_train, y_train)
# 对训练集和测试集进行预测

随机森林回归器通过集成多个决策树来进行预测,能够有效地处理复杂的非线性关系。从结果中我们可以看到,它在训练集和测试集上都取得了一定的性能表现。

梯度提升回归器

AI提示词:编写Python代码,构建一个多输出的梯度提升回归模型,设置随机种子为0。使用训练数据进行模型训练,然后对训练集和测试集进行预测,最后计算并输出在训练集和测试集上的均方误差以及R²分数。

梯度提升回归器通过迭代地拟合弱学习器来逐步提升模型的性能,对于一些具有复杂模式的数据往往能有较好的表现。从其性能指标来看,它在训练集和测试集上的表现也各有特点。

多输出线性回归

AI提示词:请用Python实现一个多输出的线性回归模型,设置线程数为1。使用划分好的训练数据对模型进行训练,接着分别对训练集和测试集进行预测,最后计算并输出训练集和测试集上的均方误差以及R²分数。

线性回归是一种简单而经典的回归模型,假设自变量和因变量之间存在线性关系。通过计算性能指标,我们可以评估它在出租车行程预测任务中的适用性。

多输出k近邻回归

AI提示词:编写Python代码构建多输出的k近邻回归模型。使用训练数据对模型进行训练,然后分别对训练集和测试集进行预测,最后计算并输出在训练集和测试集上的均方误差以及R²分数。

k近邻回归算法基于样本之间的距离来进行预测,简单直观。通过在训练集和测试集上的评估,我们可以了解它在出租车行程数据上的表现。

多输出决策树回归

AI提示词:请使用Python构建一个多输出的决策树回归模型,设置最大深度为50,随机种子为1。使用训练数据训练模型,然后分别对训练集和测试集进行预测,最后计算并输出训练集和测试集上的均方误差以及R²分数。

决策树回归通过对数据进行递归划分来构建模型,能够处理非线性关系。通过性能指标的计算,我们可以判断它在出租车行程预测中的效果。

模型评估与展望

通过对以上多种机器学习模型的构建和训练,以及在训练集和测试集上的性能评估,我们得到了各个模型的均方误差和R²分数等指标。这些指标反映了不同模型在出租车行程预测任务中的表现差异。
从结果来看,不同的模型各有优劣。例如,随机森林回归器和梯度提升回归器在处理复杂数据关系时可能具有更好的性能,但计算成本相对较高;而线性回归模型简单直观,但对于非线性数据的拟合能力可能有限。
在未来的研究中,我们可以进一步优化这些模型,比如调整模型的超参数、尝试更多的特征工程方法,或者结合多个模型的预测结果,以提高预测的准确性和可靠性。同时,我们还可以将这些模型应用到实际的城市交通场景中,为出租车调度、交通流量优化等提供更有效的支持,真正实现数据驱动的城市交通管理和决策。

本文中分析的完整数据、代码、文档分享到会员群,扫描下面二维码即可加群! 


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

点击文末“阅读原文”

获取完整代码、数据、文档。

本文选自《Python+AI提示词出租车出行轨迹:梯度提升GBR、KNN、LR回归、随机森林融合预测及贝叶斯概率异常检测研究》。

点击标题查阅往期内容

基于出租车GPS轨迹数据的研究:出租车行程的数据分析

用数据告诉你出租车资源配置是否合理

把握出租车行驶的数据脉搏 :出租车轨迹数据给你答案!

基于出租车GPS轨迹数据的研究:出租车行程的数据分析

用数据告诉你出租车资源配置是否合理

共享单车大数据报告

R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量

消费者共享汽车使用情况调查

新能源车主数据图鉴

python研究汽车传感器数据统计可视化分析

R语言ggmap空间可视化机动车交通事故地图

R语言ggmap空间可视化机动车碰撞–街道地图热力图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统重装——联想sharkbay主板电脑

上周给一台老电脑重装系统系统&#xff0c;型号是lenovo sharkbay主板的电脑&#xff0c;趁着最近固态便宜&#xff0c;入手了两块长城的固态&#xff0c;装上以后插上启动U盘&#xff0c;死活进不去boot系统。提示 bootmgr 缺失&#xff0c;上网查了许久&#xff0c;终于解决了…

python连接Elasticsearch并完成增删改查

python库提供了elasticsearch模块,可以通过以下命令进行快速安装,但是有个细节需要注意一下,安装的模块版本要跟es软件版本一致,此处举例:7.8.1 pip install elasticsearch==7.8.1 首先连接elasticsearch,以下是免密示例 from elasticsearch import Elasticsearch# El…

PDF嵌入图片

所需依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>9.0.0</version><type>pom</type> </dependency>源码 /*** PDF工具*/ public class PdfUtils {/*** 嵌入图…

目标检测篇---faster R-CNN

目标检测系列文章 第一章 R-CNN 第二篇 Fast R-CNN 目录 目标检测系列文章&#x1f4c4; 论文标题&#x1f9e0; 论文逻辑梳理1. 引言部分梳理 (动机与思想) &#x1f4dd; 三句话总结&#x1f50d; 方法逻辑梳理&#x1f680; 关键创新点&#x1f517; 方法流程图关键疑问解答…

Seaborn模块练习题

1.使用tips数据集&#xff0c;创建一个展示不同时间段(午餐/晚餐)账单总额分布的箱线图 import seaborn as sns import matplotlib.pyplot as plt import pandas as pdsns.set_style("darkgrid") plt.rcParams["axes.unicode_minus"] Falsetips pd.read…

计算机网络 | 应用层(1)--应用层协议原理

&#x1f493;个人主页&#xff1a;mooridy &#x1f493;专栏地址&#xff1a;《计算机网络&#xff1a;自定向下方法》 大纲式阅读笔记 关注我&#x1f339;&#xff0c;和我一起学习更多计算机的知识 &#x1f51d;&#x1f51d;&#x1f51d; 目录 1. 应用层协议原理 1.1 …

论文导读 - 基于大规模测量与多任务深度学习的电子鼻系统实现目标识别、浓度预测与状态判断

基于大规模测量与多任务深度学习的电子鼻系统实现目标识别、浓度预测与状态判断 原论文地址&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S0925400521014830 引用此论文&#xff08;GB/T 7714-2015&#xff09;&#xff1a; WANG T, ZHANG H, WU Y, …

React中createPortal 的详细用法

createPortal 是 React 提供的一个实用工具&#xff0c;用于将 React 子元素渲染到 DOM 中的某个位置&#xff0c;而该位置与父组件不在同一个 DOM 层次结构中。这在某些特殊场景下非常有用&#xff0c;比如实现模态框、弹出菜单、固定定位元素等功能。 基本语法 JavaScript …

电池的寿命

思路&#xff1a; 首先&#xff0c;我们观察发现&#xff1a;由于每枚电池的使用时间不同&#xff0c;而我们又要减少浪费才能使所有电池加起来用得最久&#xff0c;不难发现&#xff1a;当n2时&#xff0c;输出较小值。 第一步&#xff1a;将电池分为两组&#xff0c;使两组…

LeetCode每日一题4.27

3392. 统计符合条件长度为 3 的子数组数目 问题 问题分析 统计符合条件的长度为 3 的子数组数目。具体条件是&#xff1a;子数组的第一个数和第三个数的和恰好为第二个数的一半。 思路 遍历数组&#xff1a;由于子数组长度固定为 3&#xff0c;我们可以通过遍历数组来检查每…

Linux日志处理命令多管道实战应用

全文目录 1 日志处理1.1 实时日志分析1.1.1 nginx日志配置1.1.2 nginx日志示例1.1.3 日志分析示例 1.2 多文件合并分析1.3 时间范围日志提取 2 问题追查2.1 进程级问题定位2.2 网络连接排查2.3 硬件故障追踪 3 数据统计3.1 磁盘空间预警3.2 进程资源消耗排名3.3 HTTP状态码统计…

0803分页_加载更多-网络ajax请求2-react-仿低代码平台项目

文章目录 1 分页1.1 url与分页参数1.2 分页组件与url1.3 列表页引用分页组件 2 加载更多2.1 状态2.2 触发时机2.3 加载数据2.4优化 结语 1 分页 1.1 url与分页参数 查询问卷列表接口&#xff0c;添加分页参数&#xff1a; page&#xff1a;当前页码&#xff08;第几页&#…

【技术追踪】基于扩散模型的脑图像反事实生成与异常检测(TMI-2024)

一种新颖的扩散模型双重采样策略&#xff0c;DDPM DDIM ~ 论文&#xff1a;Diffusion Models for Counterfactual Generation and Anomaly Detection in Brain Images 0、摘要 病理区域的分割掩模在许多医学应用中很有用&#xff0c;例如脑肿瘤和中风管理。此外&#xff0c;疾…

第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组

比赛还没有开始&#xff0c;竟然忘记写using namespace std; //debug半天没看明白 (平时cv多了 然后就是忘记那个编译参数&#xff0c;&#xff08;好惨的开局 编译参数-stdc11 以下都是赛时所写代码&#xff0c;赛时无聊时把思路都打上去了&#xff08;除了倒数第二题&#…

CentOS 7上Memcached的安装、配置及高可用架构搭建

Memcached是一款高性能的分布式内存缓存系统&#xff0c;常用于加速动态Web应用的响应。本文将在CentOS 7上详细介绍Memcached的安装、配置&#xff0c;以及如何实现Memcached的高可用架构。 &#xff08;1&#xff09;、搭建memcached 主主复制架构 Memcached 的复制功能支持…

告别进度失控:用燃尽图补上甘特图的监控盲区

在职场中&#xff0c;项目经理最头疼的莫过于“计划赶不上变化”。明明用甘特图排好了时间表&#xff0c;任务却总像脱缰野马——要么进度滞后&#xff0c;要么资源分配失衡。甘特图虽能直观展示任务时间轴&#xff0c;但面对突发风险或团队效率波动时&#xff0c;它更像一张“…

爬虫-oiwiki

我们将BASE_URL 设置为 "https://oi-wiki.org/" 后脚本就会自动开始抓取该url及其子页面的所有内容&#xff0c;并将统一子页面的放在一个文件夹中 import requests from bs4 import BeautifulSoup from urllib.parse import urljoin, urlparse import os import pd…

业务中台与数据中台:企业数字化转型的核心引擎

前言&#xff1a;在当今数字化浪潮下&#xff0c;企业为了提升运营效率、加速创新步伐并更好地适应市场变化&#xff0c;业务中台与数据中台应运而生&#xff0c;成为企业架构中的关键组成部分。本文将深入探讨业务中台和数据中台的简介、发展史、技术流环节以及在实际生产中的…

django admin 去掉新增 删除

在Django Admin中&#xff0c;你可以通过自定义Admin类来自定义哪些按钮显示&#xff0c;哪些不显示。如果你想隐藏“新增”和“删除”按钮&#xff0c;可以通过重写change_list_template或使用ModelAdmin的has_add_permission和has_delete_permission属性来实现。 方法1&…

基于云原生架构的后端微服务治理实战指南

一、引言&#xff1a;为什么在云原生时代更需要微服务治理&#xff1f; 在单体应用时代&#xff0c;开发和部署虽然简单&#xff0c;但随着系统规模的扩大&#xff0c;单体架构的维护成本急剧上升&#xff0c;部署频率受限&#xff0c;模块之间相互影响&#xff0c;最终导致系…