当前位置: 首页 > news >正文

【知识专栏丨python数分实战】天猫订单数据分析及可视化|taobao天猫订单接口

今天这篇文章将给大家介绍天猫订单数据分析及可视化案例。

import pandas as pdimport numpy as npfrom pyecharts.charts import Pie,Bar,Line,Map,Map3D,Funnelfrom pyecharts import options as optsimport matplotlib.pyplot as pltimport warningsimport seaborn as snsfrom pyecharts.commons.utils import JsCodefrom pyecharts.globals import ThemeType, ChartTypeimport textwrap# 中文设置plt.rcParams['font.sans-serif']=['Microsoft YaHei'] plt.rcParams['axes.unicode_minus']=Falseplt.rc('font',family = 'Microsoft YaHei',size = '15')warnings.filterwarnings("ignore")%matplotlib inline

01

导入数据及数据预处理

数据来源:

https://www.heywhale.com/mw/project/62342cefae5cf10017aae52b/dataset

df = pd.read_csv('/home/mw/input/tmall6650/tmall_order_report.csv')df.head()

输出结果:

图片

# 去除字段名中的空格new_columns = [col.strip() for col in df.columns]df.columns = new_columnsdf.info()

输出结果:

<class 'pandas.core.frame.DataFrame'>RangeIndex: 28010 entries, 0 to 28009Data columns (total 7 columns):订单编号        28010 non-null int64总金额         28010 non-null float64买家实际支付金额    28010 non-null float64收货地址        28010 non-null object订单创建时间      28010 non-null object订单付款时间      24087 non-null object退款金额        28010 non-null float64dtypes: float64(3), int64(1), object(3)memory usage: 1.5+ MB
# 数据基本描述print('数据的时间区间为',df['订单创建时间'].min(),'到',df['订单创建时间'].max())print('收货地址总计有:',df['收货地址'].nunique(),'个')df.describe()

数据的时间区间为 2020-02-01 00:14:15 到 2020-02-29 23:59:18。

收货地址总计有:31 个。

输出结果:

图片

# 提取日期中的时间为后续分析做准备df['订单创建时间'] = df['订单创建时间'].astype('datetime64')df['订单付款时间'] = df['订单付款时间'].astype('datetime64')df['月'] = df['订单付款时间'].dt.monthdf['日'] = df['订单付款时间'].dt.daydf2 = df[~df['订单付款时间'].isnull()]df2['月'] = df2['月'].apply(lambda x:int(x)).astype('str')df2['日'] = df2['日'].apply(lambda x:int(x)).astype('str')df2['日期'] = df2['月'] + '月' + df2['日'] + '日'df2['周'] = df2['订单付款时间'].dt.weekday + 1df2['周'] = '星期' + df2['周'].astype('str')df2['月'] = df2['月'].astype('int')df2['日'] = df2['日'].astype('int')df2 = df2.sort_values(by = '订单付款时间')df2['小时'] = df2['订单付款时间'].dt.hourdf2.head()

输出结果:

图片

# 查看收货地址信息df2.收货地址.unique()

输出结果:

array(['四川省', '江苏省', '湖北省', '贵州省', '陕西省', '上海', '重庆', '浙江省', '湖南省', '河北省',       '北京', '广东省', '新疆维吾尔自治区', '河南省', '吉林省', '黑龙江省', '云南省', '安徽省', '天津',       '山西省', '辽宁省', '江西省', '内蒙古自治区', '福建省', '广西壮族自治区', '海南省', '山东省',       '青海省', '甘肃省', '宁夏回族自治区', '西藏自治区'], dtype=object)

收货地址字段中,数据都为“四川省”、“西藏自治区”的形式,且四个直辖市是以“北京”、“上海”的数据形式。

因为Pyecharts在绘图时候,数据中不能包含“省”、“自治区”这样的字眼,因此这里将收货地址数据做处理。

df2['收货地址'] = df2.收货地址.apply(lambda x:x.strip('省|自治区'))df2['收货地址'] = df2.收货地址.replace(['新疆维吾尔','广西壮族','宁夏回族'],['新疆','广西','宁夏'])df2.head()df2.收货地址.unique()

输出结果:

array(['四川', '江苏', '湖北', '贵州', '陕西', '上海', '重庆', '浙江', '湖南', '河北', '北京',       '广东', '新疆', '河南', '吉林', '黑龙江', '云南', '安徽', '天津', '山西', '辽宁', '江西',       '内蒙古', '福建', '广西', '海南', '山东', '青海', '甘肃', '宁夏', '西藏'],      dtype=object)
# 查看缺失数据df[df['订单付款时间'].isnull()].head()

输出结果:

图片

# 查看是否有重复值df[df['退款金额'] > df['总金额']]print('重复值数量为:',df.duplicated().sum())
重复值数量为:0

输出结果:

图片

结论:

通过绘制【总金额】、【买家实际支付金额】、【退款金额】的布图,可以发现:

这几个字段均有金额特别高的数据。有特别高的异常值,会影响我们对大部分订单金额分布的判断。

因此接下来我们截取总金额小于500,退款金额小于400的数据,绘制概率密度图,查看大部分数据都分布在哪个数值附近。

df.describe()df[df.总金额 > 5000]plot_df = df[(df.总金额 < 500)&(df.退款金额 < 400)][['总金额','买家实际支付金额','退款金额']]kde_plot_array(plot_df)

输出结果:

图片

结论:

绘制截取后的金额分布后我们可以发现如下信息:

1、总金额分布在50元100元附近。单笔订单总金额为0-100元的居多。

2、买家实际支付金额和总金额分布基本一致,因为有退款行为的发生,会导致买家实际支付金额要比总金额分布更靠左一点。

3、退款金额分布在25-125元附近,因为单笔订单的购买金额通常并不会很高,因此退款金额的分布也不会很靠右。

接下来我们看一下总金额特别高的几笔订单。

df[df.总金额 > 3000]

输出结果:

图片

结论:

查看总金额很大的几笔订单可以发现,最大的一笔订单为订单编号19258的订单,总金额为188320元,但是这笔订单没有完成交易,实际支付金额为0,因此判断可能是误操作导致。

另外还有一万块以上的订单,也并没有发生未支付取消订单的情况。因此说明也会有这种订单金额很高的订单成交。因此对于这样的数据,并不进行异常值的处理,在后续分析中,将使用买家实际支付金额作为主要分析目标。

1、缺失值:在进行数据预处理时,发现数据仅【订单付款时间】字段有3923的缺失值,经过查看,发现订单付款时间缺失的数据中,【买家实际支付金额】都为0,且【退款金额】都是0

说明这样的订单都是没有付款的,取消交易的订单类型。这样的订单也属于正常现象,因此并不做处理。

2、重复值:查看发现数据并无重复值。

3、异常值:数据中只有一条总金额很大的异常数据,怀疑是误操作导致。但是后续分析也不会用到总金额,因此这样的异常数据同样也是不做处理。

02

数据分析可视化

在处理完数据后,接下来要确定分析目标

因为常有退款现象发生、以及交易未完成等现象,因此我们只用实际支付金额作为分析目标,截取没有实际支付金额为0的数据。

而分析这份数据,我决定从成交金额、成交次数、转换率这几部分作为分析目标来分析,并且从时间维度空间维度作为分析维度,分别来看各指标,看一看能否发现一些有价值的信息。

成交金额

a. 成交金额在时间维度上的变化

b. 成交金额在地区维度上的分布

退款金额

a. 退款金额在时间维度上的变化

b. 退款金额在地区维度上的分布

转换率

a. 整体转换率

b. 全国各省市创建-支付转换率

c. 全国各省市支付-成交转换率

成交金额

a. 成交金额在时间维度上的变化

change = df2[['买家实际支付金额','日']].groupby('日').sum().round(2).reset_index().sort_values(by = '日')

把要绘制的折线图调整好样式后,封装成这样的函数,然后后边在绘制类似的折线图的时候,就可以直接调用这个函数了,很方便。

由于绘制折线图部分的代码属实太长了,为不影响对整体报告的阅读,只好隐藏掉了。需要代码的,滴滴我~

echarts_line(change['日'],change['买家实际支付金额'],title = '成交金额变化图',subtitle = "成交金额在时间维度上的变化",            label = '成交金额')

输出结果:

图片

结论:

绘制成交金额在时间维度上的变化图,可以看到在2020年2月份的天猫成交金额在15日以前都是呈现一个较低的状态。

而从15日开始,出现一个稳步上升的趋势,并且在22日和25日的时候分别达到了高峰

2022年的1月25日是春节,因此怀疑导致成交金额如此低下的原因,可能是受到春节影响,大部分消费者和商家都在停业过春节。

而随着春节的结束,大部分人都开始逐渐进行了复工,因此从15日开始,成交金额开始逐步恢复正常,并且稳步提升。

week_change = df2[['周','买家实际支付金额']].groupby('周').sum().round(2).reset_index()
echarts_bar(week_change['周'].tolist(),week_change['买家实际支付金额'].tolist(),title = '订单成交金额平均每周对比',            subtitle = '每周对比图',label = '成交金额')

输出结果:

图片

结论:

绘制成交金额每周的对比图可以发现,周六日周一的成交金额通常来说是较少的,每周的周二周五的成交金额反而是较多的。

猜测是因为周末大家通常来说都比较想好好安排一下自己的周末的生活,出去玩或者直接去实体店进行逛街购物,而平时工作日的时候,由于要忙工作的原因,因此只能进行线上网购,因此工作日期间网购的成交金额会相对来说较高一点。

hour_change = df2[['小时','买家实际支付金额']].groupby('小时').sum().round(2).reset_index()

因为前边已经封装好了绘制折线图的函数,接下来就只要吧数据传进函数,一行代码直接绘图。

echarts_line(hour_change['小时'],hour_change['买家实际支付金额'],title = '每天各时段成交金额变化图'            ,subtitle = '一天24小时哪个时间段成交金额多',label = '成交金额')

输出结果:

图片

结论:

绘制每天各时段的成交金额变化图,可以发现,每天的早上10点,下午的15点,晚上的21-23点的时间段,是成交金额的高峰期。尤其是晚上这个时间段,成交金额相对来说是最高的。

这可能因为人在晚上是比较容易冲动消费的,也可能因为大家再进行了一整天的工作后,只有在晚上吃完饭,忙完所有工作以后,才有时间来天猫逛一逛,进行一些网购等。

b. 成交金额在地区维度上的分布

change_map = df2[['收货地址','买家实际支付金额']].groupby('收货地址').sum().round(2).reset_index().sort_values(by = '买家实际支付金额',                ascending = False)
echarts_map(change_map['收货地址'],change_map['买家实际支付金额'],title = '成交金额分布图'            ,subtitle = '成交金额在全国各地分布情况',label = '成交金额')

结论:

绘制成交金额在全国各地的分布,我们可以发现江浙沪一带、以及北京、广东、四川等地区的成交金额是比较高的。

新疆、西藏、内蒙古等其他地区的成交金额普遍较低。北上广深等一线城市本身就是人口较多、经济较发达的城市,所以成交金额自然也会较高

change_map = df2[['收货地址','买家实际支付金额']].groupby('收货地址').sum().round(2).reset_index().sort_values(by = '买家实际支付金额',                ascending = False)
map3d_with_bar3d(change_map['收货地址'],change_map['买家实际支付金额'],title = '成交金额分布图'            ,subtitle = '成交金额在全国各地分布情况',label = '成交金额')

输出结果:

图片

退款金额

a. 退款金额在时间维度上的变化

back_money = df2[['日','退款金额']].groupby('日').sum().round(2).reset_index()
echarts_bar(back_money['日'].tolist(),back_money['退款金额'].tolist(),title = '退款金额变化图'            ,subtitle = '退款金额日变化图',label = '退款金额')

输出结果:

图片

结论:

绘制退款金额在时间维度上的变化图可以发现,和成交金额几乎一致,都是在25号达到了一个高峰的状态,成交的金额多的时候,退款的金额也相应的多。

hour_back_money = df2[['小时','退款金额']].groupby('小时').sum().round(2).reset_index()
echarts_line(hour_back_money['小时'].tolist(),hour_back_money['退款金额'].tolist(),title = '退款金额变化图'                ,subtitle = '退款金额每日小时变化图',label = '退款金额')

输出结果:

图片

结论:

绘制退款金额在每天各小时的变化图,发现和成交金额的变化也差不多,都是在10点、15点、22点的时间段会比较多。

b. 退款金额在地区维度上的分布

local_back_money = df2[['收货地址','退款金额']].groupby('收货地址').sum().round(2).reset_index()
echarts_map(local_back_money['收货地址'],local_back_money['退款金额'],title = '退款金额分布图'            ,subtitle = '退款金额在全国各地分布情况',label = '退款金额')

输出结果:

图片

map3d_with_bar3d(local_back_money['收货地址'],local_back_money['退款金额'],title = '退款金额分布图'            ,subtitle = '退款金额在全国各地分布情况',label = '退款金额')

输出结果:

图片

转换率

a. 整体转换率

# 计算各阶段订单量create_order = df.订单编号.count()print('下单数量为:',create_order)buy_order = df[~df.订单付款时间.isnull()].订单编号.count()print('支付订单数量为:',buy_order)finish_order = df[df.买家实际支付金额 > 0].订单编号.count()print('成交订单数量为:',finish_order)whole_finish_order = df[df.总金额 == df.买家实际支付金额].订单编号.count()print('全额成交订单量为:',whole_finish_order)

输出结果:

下单数量为:28010支付订单数量为:24087成交订单数量为:18955全额成交订单量为:18441
# 计算各阶段转化率transform = [['创建订单',round(create_order / df.shape[0],2)],             ['支付订单',round(buy_order / df.shape[0],2)],             ['成交订单',round(finish_order / df.shape[0],2)],             ['全额成交订单',round(whole_finish_order / df.shape[0],2)]]transform

输出结果:

[['创建订单', 1.0], ['支付订单', 0.86], ['成交订单', 0.68], ['全额成交订单', 0.66]]

图片

结论:

1、通过销售额漏斗图可以发现:成交订单全额成交订单的转化率还是蛮高的,只下降了2个百分点,这说明通常来说只要订单成交了,那么基本上就是进行的全额成交,只会有小部分消费者有部分退款行为。

2、创建订单到支付订单的转化率有86%,这说明有14%的用户在创建了订单以后,没有选择支付,而是取消了该笔订单的支付。应当重点追溯一下导致这个情况的原因是什么。

3、支付订单成交订单的转化率同样比较低,转换率下降了18%。这就说明,有18% 的用户在支付了订单金额以后,选择了全额退款。这个问题也不容小觑。应当查明导致该问题的原因。

在整个销售漏斗中,这部分的转化率是最低的,因此应当结合其他数据,着重查找该环节的原因,从而提升销售额。

b. 全国各省市创建-支付转换率

通过前边一部分的分析,我们知道,在创建 -> 支付和支付 -> 成交的转换率是较低的。

因此我们猜测,是否受到地区影响,导致物流等问题,发生了取消支付或者是退货等情况。因此接下来我们分别查看全国各省市创建-支付转换率和全国各省市支付-成交转换率,看看到底是哪个省市的转换率较低。

# 全国各省市创建-支付转换率计算df['辅助计数'] = 1pay_order = df[~df.订单付款时间.isnull()]province_pay_order = pay_order[['收货地址','辅助计数']].groupby('收货地址').sum().reset_index()create_order = df[['收货地址','辅助计数']].groupby('收货地址').sum().reset_index()province_create_pay_transform = pd.merge(create_order,province_pay_order,how = 'left',on = '收货地址')province_create_pay_transform.rename(columns = {'辅助计数_x':'创建订单数','辅助计数_y':'支付订单数'},inplace = True)province_create_pay_transform['创建-支付转换率'] = province_create_pay_transform['支付订单数'] / province_create_pay_transform['创建订单数']province_create_pay_transform['创建-支付转换率'] = province_create_pay_transform['创建-支付转换率'].round(2)province_create_pay_transform.head()

输出结果:

图片

echarts_bar(province_create_pay_transform['收货地址'].tolist(),province_create_pay_transform['创建-支付转换率'].tolist(),            title = '创建-支付转换率对比图'            ,subtitle = '全国各省创建-支付转换率对比图',label = '创建-支付转换率')

输出结果:

图片

结论:

1、通过绘制全国各省市创建-支付转换率的对比图我们可以发现,大部分省份的转换率都是处于一个相对稳定的水平,都处在均值0.84附近。

宁夏、上海、青海、北京等地区的转换率更是高达90%以上的,说明大部分地区的用户在支付界面取消订单的现象并不严重。

2、有三个特别的地区,创建-支付订单的转化率较低,分别是西藏、新疆和湖北

西藏和新疆因为处于偏远地区,交通并不是很便利,因此物流是比较的,很多商家都是不往这两个地区发货的,因此可能受到物流影响,转换率会较低。

湖北地区的转化率较低,很可能是因为受到疫情影响。2020年的2月份正是湖北疫情严重的时期,因此很多消费者会选择取消订单,这也可能是转换率较低的原因。

c. 全国各省市支付-成交转换率

# 全国各省市支付-成交转换率计算df2['辅助计数'] = 1finish_df = df2[df2.买家实际支付金额 > 0]province_finish_df = finish_df[['收货地址','辅助计数']].groupby('收货地址').sum().reset_index()province_buy_df = df2[['收货地址','辅助计数']].groupby('收货地址').sum().reset_index()province_transform = pd.merge(province_buy_df,province_finish_df,how = 'outer',on = '收货地址')province_transform.rename(columns = {'辅助计数_x':'支付订单数','辅助计数_y':'成交订单数'},inplace = True)province_transform['支付-成交转换率'] = province_transform['成交订单数'] / province_transform['支付订单数']province_transform['支付-成交转换率'] = province_transform['支付-成交转换率'].round(2)province_transform.head()

输出结果:

图片

echarts_bar(province_transform['收货地址'].tolist(),province_transform['支付-成交转换率'].tolist(),            title = '支付-成交转换率对比图'            ,subtitle = '全国各省支付-成交转换率对比图',label = '支付-成交转换率')

输出结果:

图片

province_transform[province_transform.收货地址 == '西藏']

输出结果:

图片

province_create_pay_transform[province_create_pay_transform.收货地址 == '湖北省']

输出结果:

图片

province_transform[province_transform.收货地址 == '湖北']

输出结果:

图片

结论:

1、绘制全国各省市支付-成交转换率对比图可以发现,该部分转换率较低的几个省份依旧是新疆、西藏和湖北

西藏的转换率为0,查询原因发现,西藏在2月份有过支付记录的订单总共就2个,因此西藏的转化率达到了0也不算异常。

2、而湖北的转换率达到了0.32,查询2月份湖北的订单创建数和支付数,发现湖北2月份创建的订单仅有75个,支付的57个,而真正成交的只有18个订单,从支付到成交的转换率仅有32%

说明有68%的用户直接进行了全额退款。这可能是因为2020年2月份湖北疫情较为严重,湖北的物流基本上呈现中断的状态,大部分商品很可能不在发往湖北,因此出现了大量的全额退款等行为。

03

总结与建议

1、成交金额方面,新年过后复工的一周左右,销售额会出现快速的增长,在月底前达到一个小高峰。因此可以在新年过后一周左右的时间,提前准备好库存,做好销售计划等。

2、每周的周二周五是销售额较高的时间段。如果有促销计划什么的,可以重点在周二和周五进行。

3、每日的10点、15点、21-22点的时间段是销售额较高的时间段,如果有促销活动、优惠券发放、新品推荐等推送内容,可以选择在这些时间段进行发放,效果会更佳。

4、地区方面,江浙沪一带、以及北京、广东、四川等地区的成交金额是比较高的,而新疆、西藏、内蒙古等其他地区的成交金额普遍较低。

可以根据以后的发展计划、策略,综合考虑物流、成本等因素进行产品销售的调整

5、退款金额和销售金额的趋势基本吻合。销售额高相应的退款行为发生次数也多。

6、转换率方面,创建订单->支付订单->成交订单的转化率均较低,应当从各方面寻找原因,加强物流管理、提升产品质量、提高服务态度等等,从而提高各环节转换率,增加销量。

相关文章:

【知识专栏丨python数分实战】天猫订单数据分析及可视化|taobao天猫订单接口

今天这篇文章将给大家介绍天猫订单数据分析及可视化案例。 import pandas as pdimport numpy as npfrom pyecharts.charts import Pie,Bar,Line,Map,Map3D,Funnelfrom pyecharts import options as optsimport matplotlib.pyplot as pltimport warningsimport seaborn as snsfr…...

[kimi笔记]为什么csc.exe不可以双击运行

csc.exe 是 C# 编译器的可执行文件&#xff0c;它是 .NET Framework 的一部分&#xff0c;用于编译 C# 源代码文件&#xff08; .cs 文件&#xff09;生成可执行文件&#xff08; .exe 文件&#xff09;或其他类型的程序集。 csc.exe 不能通过双击运行的原因有以下几点&…...

护眼大路灯哪个牌子好?2024学生护眼大路灯推荐

护眼大路灯哪个牌子好&#xff1f;护眼大路灯不仅能够提供日常的光线照明&#xff0c;还模拟了太阳光光线&#xff0c;使在室内用眼学习也能够有着自然光般的舒适感&#xff0c;但现在市场上有许多对产品质量把控不过关、光线效果欠佳、存有安全隐患的劣质护眼大路灯产品&#…...

Vue项目中手搓滑动校验模块-demo

实现代码 SliderCheck.vue <template><div class"drag" ref"dragDiv"><div class"drag_bg" ref"dragBg"></div><div class"drag_text" ref"dragText">{{ confirmWords }}</di…...

Socket如何实现客户端和服务器间的通信

Socket 是实现网络通信的一种机制&#xff0c;它允许在不同主机之间的进程通过网络进行数据交换。下面我将简要介绍如何使用 Socket 实现客户端和服务器间的通信。 客户端-服务器通信步骤&#xff1a; 服务器端&#xff1a; 创建服务器端 Socket&#xff1a; 服务器端通过创…...

基于Spring boot + Vue的校园论坛

作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue ElementUI 数据库&#xff1a; …...

RabbitMQ高级特性 - 生产者消息确认机制

文章目录 生产者消息确认机制概述confirm 代码实现return 代码实现 生产者消息确认机制 概述 为了保证信息 从生产者 发送到 队列&#xff0c;因此引入了生产者的消息确认机制. RabbitMQ 提供了两种解决方案&#xff1a; 通过事务机制实现.通过发送确认机制&#xff08;confi…...

webpack的loader机制

webpack的loader机制 loader本质上就是导出函数的JavaScript模块。导出的函数&#xff0c;可以用来实现内容的转换。 /* * param{string|Buffer} content 源文件的内容 * param{object} [map] SourceMap数据 * param{any} [meta] meta数据&#xff0c;可以是任何数据 * */ fu…...

(STM32笔记)十一、通过EXTI外部中断实现 按键控制LED

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 十一、通过EXTI外部中断实现 按键控制LED 十一、通过EXTI外部中断实现 按键控制LED1、按键模块按键原理图按键程序思路 2、中…...

假如家里太大了,wifi连不上了怎么办

最近有个土豪朋友抱怨&#xff0c;他家里太大了&#xff0c;一个路由器的Wi-Fi信号根本无法覆盖他们家的每个房间&#xff0c;都没办法上网看奥运会比赛了。&#xff08;还好我是穷人&#xff0c;就没有这种烦恼T_T&#xff09;。 然后我问他为何不用一个路由器作主路由器&…...

elementPlus 设置el-input文本域固定高度和禁止下拉

elementPlus 设置el-input文本域固定高度和禁止下拉 话不多说直接上代码 // resize"none" 禁止下拉<el-inputv-model"textarea"style"width: 240px"type"textarea"resize"none"placeholder"请输入"/>// 设…...

(转)领导人必过的三道关

为什么企业领导人享受优厚的待遇&#xff0c;为什么董事会对企业领导人千挑万选?因为企业生命如此脆弱&#xff0c;据美国《财 富》杂志报道&#xff0c;世界500强企业平均寿命40年&#xff0c;世界1000强企业平均寿命30年&#xff0c;一般跨国公司平均寿命10年。而就是这脆弱…...

速盾:cdn可以定时刷新缓存吗?

CDN&#xff08;Content Delivery Network&#xff09;是一种通过在全球各地分布的服务器上缓存和传送网站内容的技术&#xff0c;以提高用户访问速度和降低服务器负载。CDN的缓存机制可以减少用户对源服务器的请求次数&#xff0c;从而提高网站的响应速度和性能。但是&#xf…...

代码随想录算法训练营第二十九天| 62.不同路径、63. 不同路径 II

写代码的第二十九天 继续动归&#xff01;&#xff01;&#xff01; 62.不同路径 思路 解决问题1&#xff1a;dp[i][j]的的含义是什么&#xff1f;本题给的是一个二维的表&#xff0c;判断从左上角走到右下角有多少种路径&#xff0c;所以dp应该是二维数组&#xff0c;dp[i]…...

Go+Redis零基础到用户管理系统API实战_20240730 课程笔记

概述 如果您没有Golang的基础&#xff0c;应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227 基础不好的同学每节课的代码最好配合视频进…...

ScreenAgent:基于LVLM的计算机控制智能体

ScreenAgent : A Vision Language Model-driven Computer Control Agent 论文链接: https://arxiv.org/abs/2402.07945https://arxiv.org/abs/2402.07945IJCAI 2024 1.概述 大型语言模型(LLM),诸如ChatGPT与GPT-4,在自然语言处理领域(涵盖生成、理解及对话等任务)展现出…...

谷粒商城实战笔记-129-商城业务-商品上架-nested数据类型场景

文章目录 扁平化处理扁平化处理导致的检索问题 解决方案&#xff1a;使用 nested 结构 在es的数据类型中有一个nested类型&#xff0c;本讲将重点讨论这个类型。 扁平化处理 PUT my_index/doc/1 {"group" : "fans","user" : [{"first&quo…...

axios请求响应拦截器

目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: ax…...

Python 中单例模式实现的几种方式

在设计模式中&#xff0c;单例模式是经常被提及和使用的一种模式。它保证一个类只有一个实例&#xff0c;并提供全局访问点。在Python中&#xff0c;有多种实现单例模式的方法。那么&#xff0c;如何选择合适的方法来实现单例模式呢&#xff1f; 单例模式在Python中的几种实现方…...

mysql数据库触发器同步数据

首先检查数据源库是否支持触发器&#xff0c;show ENGINES&#xff0c;如果FEDERATED是NO&#xff0c;表示未开启&#xff0c;如需开启&#xff0c;再mysql配置文件中&#xff0c;添加federated配置到mysqld下面。 一、同服务器不同库触发器同步&#xff0c;这里只举例插入数据…...

Prometheus-v2.45.0+Grafana+邮件告警

目录 普罗米修斯监控架构介绍 Prometheus 监控架构 1. 数据抓取&#xff08;Scraping&#xff09; 2. 时序数据库&#xff08;TSDB&#xff09; 3. 数据模型 4. PromQL 查询语言 5. 告警&#xff08;Alerting&#xff09; 6. Alertmanager 7. 可视化&#xff08;Visu…...

LeetCode——572. 另一颗树的子树

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;给你两棵树&#xff0c;然后问subRoot是不是root的子树。也就是root某个节点的所有孩子节点在值和结构上完全与subRoot相同。思路&#xff1a;我的思路比较简单&#xff0c;就是遍历root&#xff0c;遇到root中…...

Spring Boot整合MyBatis-Flex

说明&#xff1a;MyBatis-Flex&#xff08;官网地址&#xff1a;https://mybatis-flex.com/&#xff09;&#xff0c;是一款数据访问层框架&#xff0c;可实现项目中对数据库的访问&#xff0c;类比MyBatis-Plus。本文介绍&#xff0c;在Spring Boot项目整合MyBatis-Flex。 创…...

重塑未来体验:边缘计算与云原生的完美邂逅

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云原生的兴起 2、边缘计算的兴起 二、边缘计算基础 …...

浅谈基础数论(c++)

目录 一些常见的符号表示阶乘定理 快速幂模板题代码扩展&#xff1a;矩阵快速幂主要作用 欧拉函数扩展积性函数 欧拉函数求法筛选法求欧拉函数&#xff08;积性函数&#xff09; 扩展欧几里得裴蜀定理问题分析代码 问题分析 同余与逆元如何求解逆元扩展欧几里得 例题讲解X-Magi…...

jdk 17新特性 sealed 关键字

通俗理解 sealed 关键字就是给对象继承加了权限控制一样&#xff0c;你必须在我的规则范围内才可以继承我的类 使用 permits 关键字控制允许哪些子类继承 子类必须加以下三个关键字&#xff1a; final 最终继承类&#xff08;继承到这个类就不允许再往下继承了&#xff09;n…...

在仪器计量校准中,无尘车间洁净室检测有哪些方法和流程?

仪器计量校准行业内&#xff0c;无尘车间洁净室检测可以说是较为热门的业务&#xff0c;因为其预算高&#xff0c;且检测流程不是太繁琐&#xff0c;很多仪器计量校准机构也是设立相关实验室&#xff0c;专门处理相关仪器的检测。不过虽然许多机构想要涉足该领域&#xff0c;但…...

【跨时代】第四次工业革命彻底来袭!什么是AI+

你有没有一种很割裂的感觉&#xff0c;就是在短视频里&#xff0c;AI已经要改变全世界了 但自己一用&#xff0c;却发现只能和AI聊聊天 画几张图 难道是姿势不对&#xff1f;但具体是哪里不对呢。 作为一个老牌程序员&#xff0c;我前面分享了很多计算机相关内容&#xff0c;总…...

前端性能优化-纲领篇

前端性能优化 本模块将梳理前端性能优化的相关知识点 从浏览器输入 URL 到页面展示发生了什么 完整版请查看[Browser_网络_安全]的部分&#xff0c;这里只是简单的梳理一下 DNS 解析TCP 连接浏览器发出 HTTP 请求服务器处理请求并返回 HTTP 报文浏览器解析渲染页面 性能优…...

深度学习-----------数值稳定性

目录 神经网络的梯度数值稳定性的常见两个问题例子&#xff1a;MLP 梯度爆炸梯度爆炸的问题 梯度消失梯度消失的问题 总结模型初始化和激活函数让训练更加稳定让每层的方差是一个常数 权重初始化正向均值和方差正向均值正向方差 反向均值和方差Xavier初始正向和反向的均值和方差…...