【Python基础】案例分析:电商分析

news2024/11/15 17:26:26

电商分析

1 案例:某年淘宝双12部分购物数据

1.1 数据:某年淘宝双12部分购物数据;

来源:天池数据平台

1.2 分析目的:

  • 熟悉电商常用分析指标
  • 用户行为分析
  • 用户价值模型

2 熟悉数据

2.1 导入数据

import pandas as pd
fpath = r'data\data.csv'
pdata = pd.read_csv(fpath)
pdata.columns
Index(['user_id', 'item_id', 'behavior_type', 'user_geohash', 'item_category',
       'time'],
      dtype='object')
字段字段说明提取说明
user_id用户标识抽样&字段脱敏(非真实ID)
item_id商品标识字段脱敏(非真实ID)
behavior_type用户对商品的行为类型包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4。
user_geohash用户位置的空间标识,可以为空由经纬度通过保密的算法生成
item_category商品分类标识字段脱敏
time行为时间精确到 a cell.
pdata
user_iditem_idbehavior_typeuser_geohashitem_categorytime
0980478372324315621NaN42452014-12-06 02
1977261363835835901NaN58942014-12-09 20
298607707647497121NaN28832014-12-18 11
398662432320593836196nn52n65622014-12-06 10
4981459082902085201NaN139262014-12-16 21
.....................
1225690193812622378365755195q6d6a112014-12-13 21
12256902938126221777247531NaN123112014-12-14 21
12256903938126222343914431NaN87652014-12-11 16
122569049381262226452000195q6dqc79512014-12-08 22
122569051084045353626997971NaN98472014-12-03 19

12256906 rows × 6 columns

# 数据量大小
len(pdata)
12256906
#判断缺失数据计算
missAll = pdata.isnull().sum()
missAll
user_id                0
item_id                0
behavior_type          0
user_geohash     8334824
item_category          0
time                   0
dtype: int64
#统计缺失字段
missField = missAll[missAll>0] 
missField
user_geohash    8334824
dtype: int64

2.2 基本分析

指标:PV与UV

  • PV(访问量):Page View,览量/点击量(包括重复浏览)。
  • UV(独立访客):Unique Visitor, 独立用户或者设备访问量。。
#将字符串时间转成Timestamp
pdata['ts'] = pd.to_datetime(pdata['time'])
pdata['hour'] = pdata.ts.map(lambda item: item.hour)
pdata['day'] =pdata.ts.map(lambda item: item.date())
pdata
user_iditem_idbehavior_typeuser_geohashitem_categorytimetshourday
0980478372324315621NaN42452014-12-06 022014-12-06 02:00:0022014-12-06
1977261363835835901NaN58942014-12-09 202014-12-09 20:00:00202014-12-09
298607707647497121NaN28832014-12-18 112014-12-18 11:00:00112014-12-18
398662432320593836196nn52n65622014-12-06 102014-12-06 10:00:00102014-12-06
4981459082902085201NaN139262014-12-16 212014-12-16 21:00:00212014-12-16
..............................
1225690193812622378365755195q6d6a112014-12-13 212014-12-13 21:00:00212014-12-13
12256902938126221777247531NaN123112014-12-14 212014-12-14 21:00:00212014-12-14
12256903938126222343914431NaN87652014-12-11 162014-12-11 16:00:00162014-12-11
122569049381262226452000195q6dqc79512014-12-08 222014-12-08 22:00:00222014-12-08
122569051084045353626997971NaN98472014-12-03 192014-12-03 19:00:00192014-12-03

12256906 rows × 9 columns

#PV分析:每天访问量
daily_pv = pdata.groupby('day')['user_id'].count()
daily_pv
day
2014-11-18    366701
2014-11-19    358823
2014-11-20    353429
2014-11-21    333104
2014-11-22    361355
2014-11-23    382702
2014-11-24    378342
2014-11-25    370239
2014-11-26    360896
2014-11-27    371384
2014-11-28    340638
2014-11-29    364697
2014-11-30    401620
2014-12-01    394611
2014-12-02    405216
2014-12-03    411606
2014-12-04    399952
2014-12-05    361878
2014-12-06    389610
2014-12-07    399751
2014-12-08    386667
2014-12-09    398025
2014-12-10    421910
2014-12-11    488508
2014-12-12    691712
2014-12-13    407160
2014-12-14    402541
2014-12-15    398356
2014-12-16    395085
2014-12-17    384791
2014-12-18    375597
Name: user_id, dtype: int64
# UV分析:每天独立用户数
tmp = pdata.groupby('day')['user_id']
#每个分组去重,并统计数量
daily_uv = tmp.apply(lambda x:x.drop_duplicates().count())
daily_uv
day
2014-11-18    6343
2014-11-19    6420
2014-11-20    6333
2014-11-21    6276
2014-11-22    6187
2014-11-23    6373
2014-11-24    6513
2014-11-25    6351
2014-11-26    6357
2014-11-27    6359
2014-11-28    6189
2014-11-29    6224
2014-11-30    6379
2014-12-01    6544
2014-12-02    6550
2014-12-03    6585
2014-12-04    6531
2014-12-05    6367
2014-12-06    6440
2014-12-07    6422
2014-12-08    6564
2014-12-09    6566
2014-12-10    6652
2014-12-11    6894
2014-12-12    7720
2014-12-13    6776
2014-12-14    6668
2014-12-15    6787
2014-12-16    6729
2014-12-17    6643
2014-12-18    6582
Name: user_id, dtype: int64
#PV与UV的数据可视化
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10,4))
plt.plot(daily_pv.index.values,daily_pv.values, 'r')
plt.xticks(rotation=30)
plt.figure(figsize=(10,4))
plt.plot(daily_uv.index.values,daily_uv.values, 'g')
plt.xticks(rotation=30)
plt.show()

在这里插入图片描述
在这里插入图片描述

用户购买次数分布:

  • 这一期间每个用户支付次数
  • 统计每个用户支付次数
  • 使用直方图展示

步骤:

  • 过滤数据:行为为支付
  • 分组:根据user_id分组,groupby
  • 统计:使用count方法分组
  • 可视化:使用hist方法直方图显示方法直方图显示
user_bynums=pdata[pdata.behavior_type==4].groupby('user_id')['behavior_type'].count()
user_bynums.plot.hist()
<AxesSubplot: ylabel='Frequency'>


在这里插入图片描述

user_bynums
user_id
4913          6
6118          1
7528          6
7591         21
12645         8
             ..
142376113     1
142412247    12
142430177     5
142450275    40
142455899    13
Name: behavior_type, Length: 8886, dtype: int64

用户复购

  • 复购:用户两天以上有购买行为

复购率:复购行为用户数/有购买行为的用户总数

#实现方式1
#根据用户与时间分组,并查看数据
redata =pdata[pdata.behavior_type==4].groupby(['user_id', 'day']).count()
redata
item_idbehavior_typeuser_geohashitem_categorytimetshour
user_idday
49132014-12-011101111
2014-12-072222222
2014-12-111101111
2014-12-131101111
2014-12-161101111
...........................
1424558992014-11-241101111
2014-11-262202222
2014-11-301101111
2014-12-031101111
2014-12-042202222

49201 rows × 7 columns

#重置索引
redata = redata.reset_index()
redata
user_iddayitem_idbehavior_typeuser_geohashitem_categorytimetshour
049132014-12-011101111
149132014-12-072222222
249132014-12-111101111
349132014-12-131101111
449132014-12-161101111
..............................
491961424558992014-11-241101111
491971424558992014-11-262202222
491981424558992014-11-301101111
491991424558992014-12-031101111
492001424558992014-12-042202222

49201 rows × 9 columns

#根据user_id分组,并统计day的数量
ret = redata.groupby('user_id')['day'].count()
ret
user_id
4913         5
6118         1
7528         6
7591         9
12645        4
            ..
142376113    1
142412247    7
142430177    5
142450275    8
142455899    7
Name: day, Length: 8886, dtype: int64
#获取数量大于1的数据,计算复购率
ret[ret>1].count()/ret.count()
0.8717083051991897
#实现方式2
#根据user_id分组
re_data=pdata[pdata.behavior_type==4].groupby('user_id')
re_data
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001D4D067CA50>
'''
使用apply方法对分组数据进行处理,
每个apply方法处理的user_id对应的series对象
使用unique获取唯一值
使用len方法获取长度
'''
re_data = re_data['day'].apply(lambda x:len(x.unique()))
re_data
user_id
4913         5
6118         1
7528         6
7591         9
12645        4
            ..
142376113    1
142412247    7
142430177    5
142450275    8
142455899    7
Name: day, Length: 8886, dtype: int64
#计算复购率
re_data[re_data>1].count()/re_data.count()
0.8717083051991897

用户复购时间间隔

复购间隔:

  • 按时间排序
  • 用户第1次购物时间:day1
  • 用户第2次购物时间:day2 , 间隔:day2-day1
  • 用户第3次购物时间:day3 , 间隔:day3-day2
  • 用户第N次购物时间:dayn , 间隔:dayn-dayn-1

要求:时间间隔大于0间间隔大于0

p = pd.Series([1,2,7,4,10])
p.diff(1)
0    NaN
1    1.0
2    5.0
3   -3.0
4    6.0
dtype: float64
#删除缺省值
p.diff(2).dropna()
2    6.0
3    2.0
4    3.0
dtype: float64
#分组
userbuy=pdata[pdata.behavior_type==4].groupby('user_id')
#对天进行处理
#lambda的每个x为分组后的series对象
# series对象排序,并使用diff方法计算,并去除缺省值
day_interval = userbuy.day.apply(lambda x:x.sort_values().diff(1).dropna())
C:\Users\26822\AppData\Local\Temp\ipykernel_22972\2976211149.py:6: FutureWarning: The behavior of array concatenation with empty entries is deprecated. In a future version, this will no longer exclude empty items when determining the result dtype. To retain the old behavior, exclude the empty entries before the concat operation.
  day_interval = userbuy.day.apply(lambda x:x.sort_values().diff(1).dropna())
day_interval
user_id            
4913       7829893    6 days
           10689246   0 days
           11629048   4 days
           3285878    2 days
           11629584   3 days
                       ...  
142455899  6697898    0 days
           9798799    4 days
           6698066    3 days
           1345137    1 days
           7372987    0 days
Name: day, Length: 111319, dtype: timedelta64[ns]
day_interval=day_interval.map(lambda x:x.days)
day_interval
user_id            
4913       7829893     6
           10689246    0
           11629048    4
           3285878     2
           11629584    3
                      ..
142455899  6697898     0
           9798799     4
           6698066     3
           1345137     1
           7372987     0
Name: day, Length: 111319, dtype: int64
day_interval = day_interval[day_interval>0]
day_interval
user_id            
4913       7829893     6
           11629048    4
           3285878     2
           11629584    3
7528       9688333     4
                      ..
142455899  6698002     2
           4209399     2
           9798799     4
           6698066     3
           1345137     1
Name: day, Length: 40315, dtype: int64
#统计每个时间数量,并绘制柱状图
day_interval.value_counts().plot(kind='bar')
plt.title('times')
plt.xlabel('days')
_ = plt.ylabel('gap_count')


在这里插入图片描述

#用户购物行为及分组
#时间间隔大于1天
day_interval = pdata[pdata.behavior_type == 4].groupby('user_id').day.apply(lambda x:x.sort_values().diff(1).dropna())
#获取天数
day_interval = day_interval.map(lambda x:x.days)
#统计数量,并绘制柱状图
day_interval.value_counts().plot(kind='bar')
plt.title('times')
plt.xlabel('days')
_ = plt.ylabel('interval_count')
C:\Users\26822\AppData\Local\Temp\ipykernel_22972\1184355078.py:3: FutureWarning: The behavior of array concatenation with empty entries is deprecated. In a future version, this will no longer exclude empty items when determining the result dtype. To retain the old behavior, exclude the empty entries before the concat operation.
  day_interval = pdata[pdata.behavior_type == 4].groupby('user_id').day.apply(lambda x:x.sort_values().diff(1).dropna())

在这里插入图片描述

AARRR模型

  • Acquisition 用户获取
  • Activation 用户激活
  • Retention 提高留存
  • Revenue 增加收入
  • Referral 传播推荐

AARRR模型描述了用户/客户/访客需经历的五个环节,以便企业获取价值。

关键点:通过模型提高留存和转化率

  • 获取用户:获取用户方式,获取用户渠道,获取用户成本,用户定位等,例如:应用下载量,安装量,注册量
  • 活跃度:日活,月活,使用时长,启动次数等
  • 留存率:次日留存,周留存率,不同邻域用户,留存周期不同,例如:微博,1周未登录,可以视为流失用户;
  • 收入:APA(活跃付费用户数),ARPU(平均每用户收入), ARPPU(平均每付费用户收入);提高活跃度、提高留存率是增加收入基础。
  • 传播推荐:用户自发传播,例如平多多砍价,核心:产品过硬:产品过硬率
event_type_count = pdata.groupby('behavior_type').size()
#重置索引并修改列名
event_type_count = event_type_count.reset_index().rename(columns={0:'total'})
#重置索引
event_type_count = event_type_count.set_index('behavior_type')
event_type_count
total
behavior_type
111550581
2242556
3343564
4120205
# 将层级1视为基准
event_type_count['pre'] = (event_type_count.total/event_type_count.total[1])*100
event_type_count
totalpre
behavior_type
111550581100.000000
22425562.099946
33435642.974430
41202051.040684
字段字段说明提取说明
user_id用户标识抽样&字段脱敏(非真实ID)
item_id商品标识字段脱敏(非真实ID)
behavior_type用户对商品的行为类型包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4。
user_geohash用户位置的空间标识,可以为空由经纬度通过保密的算法生成
item_category商品分类标识字段脱敏
time行为时间精确到小时级别

3 用户价值分析

RFM模型是衡量当前用户价值和客户潜在价值的重要工具和手段

  • R:最近一次消费(Recency)
  • F:消费频率(Frequency)
  • M:消费金额(Monetary)

3.1 R理解:

  • 用户最近一次消费
  • R值越小,说明用户的价值越高,例如:最近一次消费1个月,最近一次消费10个月
  • R值非常大,说明该用户可能为流失用户;

3.2 F理解:

  • 消费频率,指定时间内购买次数;
  • 问题:一些商品购买频次较低,所以会将时间忽略,以购买次数为主;
  • 不同品类产品,对F的理解不一样;例如:电子类产品频率较低;化妆品,衣服等消费品购买频次较高

3.3 M理解:

  • 一定时间范围内,用户消费金额,消费金额越大,价值越高3.3 M理解:
#计算R,最近购物时间
#排序
tmp = pdata.sort_values('day')
#过滤数据,只保留购物的数据
tmp = tmp[tmp['behavior_type']==4]
#保留最后一个值,生成bool索引,删除最后一个,对应值为Flase
tindex = tmp.duplicated(subset=['user_id'], keep='last')
#boolean索引变化, 将False设置为True
sindex = tindex == False
#获取过滤后数据
tdata = tmp[sindex]
tdata
user_iditem_idbehavior_typeuser_geohashitem_categorytimetshourday
694662249598175176268691497rjjab112702014-11-18 182014-11-18 18:00:00182014-11-18
79176591418783263798146894NaN80952014-11-18 112014-11-18 11:00:00112014-11-18
754922461454609134625812499ui5e6120672014-11-18 192014-11-18 19:00:00192014-11-18
10056408869850411058213004NaN66692014-11-18 102014-11-18 10:00:00102014-11-18
19618581124859592285348734NaN2922014-11-18 112014-11-18 11:00:00112014-11-18
..............................
3195761315142582811726634NaN15142014-12-18 102014-12-18 10:00:00102014-12-18
118885911238480071069824004956k2js117502014-12-18 142014-12-18 14:00:00142014-12-18
32271674987159847827433496kajt426312014-12-18 112014-12-18 11:00:00112014-12-18
669691413647086134783665949rf42od104722014-12-18 102014-12-18 10:00:00102014-12-18
86189138195859233230327849r5frl3132882014-12-18 172014-12-18 17:00:00172014-12-18

8886 rows × 9 columns

#数量
len(tmp.groupby('user_id'))
8886
pd.to_datetime(tdata['day'])
6946622    2014-11-18
7917659    2014-11-18
7549224    2014-11-18
10056408   2014-11-18
1961858    2014-11-18
              ...    
319576     2014-12-18
11888591   2014-12-18
3227167    2014-12-18
6696914    2014-12-18
8618913    2014-12-18
Name: day, Length: 8886, dtype: datetime64[ns]
tdl = pd.to_datetime('2014-12-20') - pd.to_datetime(tdata['day'])
tdata['tdays'] = tdl.dt.days
tdata
SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  tdata['tdays'] = tdl.dt.days
user_iditem_idbehavior_typeuser_geohashitem_categorytimetshourdaytdays
694662249598175176268691497rjjab112702014-11-18 182014-11-18 18:00:00182014-11-1832
79176591418783263798146894NaN80952014-11-18 112014-11-18 11:00:00112014-11-1832
754922461454609134625812499ui5e6120672014-11-18 192014-11-18 19:00:00192014-11-1832
10056408869850411058213004NaN66692014-11-18 102014-11-18 10:00:00102014-11-1832
19618581124859592285348734NaN2922014-11-18 112014-11-18 11:00:00112014-11-1832
.................................
3195761315142582811726634NaN15142014-12-18 102014-12-18 10:00:00102014-12-182
118885911238480071069824004956k2js117502014-12-18 142014-12-18 14:00:00142014-12-182
32271674987159847827433496kajt426312014-12-18 112014-12-18 11:00:00112014-12-182
669691413647086134783665949rf42od104722014-12-18 102014-12-18 10:00:00102014-12-182
86189138195859233230327849r5frl3132882014-12-18 172014-12-18 17:00:00172014-12-182

8886 rows × 10 columns

#重置索引
rdata = tdata.set_index('user_id')
#设置R值
rdata['R'] = (rdata.tdays <= rdata.tdays.mean()).astype('i')
#过滤R列
rdata = rdata[['R']]
rdata
R
user_id
495981750
1418783260
614546090
869850410
1124859590
......
1315142581
1238480071
498715981
1364708611
819585921

8886 rows × 1 columns

#计算F
#根据user_id分组,并且根据购物时间进行数量统计
fdata = tmp.groupby(['user_id']).time.count()
#重置索引
fdata = fdata.reset_index()
fdata = fdata.set_index('user_id')
fdata.columns = ['F']
fdata.F = pd.qcut(fdata.F, 2,['0','1'])
fdata
F
user_id
49130
61180
75280
75911
126450
......
1423761130
1424122471
1424301770
1424502751
1424558991

8886 rows × 1 columns

# 数据集合并(R与F)
rfdata = pd.merge(rdata, fdata, left_index=True, right_index=True)
rfdata['RF'] = rfdata.R.astype(str).str.cat(rfdata.F)
rfdata
RFRF
user_id
495981750000
1418783260000
614546090000
869850410000
1124859590000
............
1315142581111
1238480071111
498715981111
1364708611111
819585921111

8886 rows × 3 columns

def func(value):
    v = '一般用户'
    if value == '00':
        v = '一般用户'
    elif value == '01':
        v = '重要保持'
    elif value == '10':
        v = '重要发展'
    elif value == '11':
        v = '重要价值'
    return v

rfdata['level'] = rfdata.RF.map(func)
rfdata
RFRFlevel
user_id
495981750000一般用户
1418783260000一般用户
614546090000一般用户
869850410000一般用户
1124859590000一般用户
...............
1315142581111重要价值
1238480071111重要价值
498715981111重要价值
1364708611111重要价值
819585921111重要价值

8886 rows × 4 columns

#分组统计
rf = rfdata.groupby('RF').F.count()
#创建DataFrame对象
rf = rf.reset_index()
#修改列名
rf = rf.rename(columns = {'F':'count'})
rf
RFcount
0002540
101966
2101948
3113432
_ = rf.plot.bar(x = 'RF', y='count')


在这里插入图片描述

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

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

相关文章

Vscode编译运行多个C++文件

1.摘要 在使用Vscode编译单个文件网上很多教程&#xff0c;但是对多个文件编译会发现经常出问题&#xff0c;通过不断的借阅网友的教程改进终于完成C运行多个文件教程如下&#xff1a; 2.编译运行过程 2.1 初始配置过程 &#xff08;1&#xff09;Vscode以及MinGW配置教程很…

EasyRecovery数据恢复软件2024最新特别绿色版下载

EasyRecovery数据恢复软件是一款功能强大的工具&#xff0c;最新版本通常包含更多优化和新增功能&#xff0c;以提升用户体验和数据恢复成功率。由于软件版本会不断更新&#xff0c;我无法提供特定于最新版本的详细介绍&#xff0c;但我可以概述EasyRecovery的一般功能以及下载…

20240206在WIN10下下载安装RX580的驱动程序

20240206在WIN10下下载安装RX580的驱动程序 2024/2/6 19:24 百度搜索&#xff1a;RX580 驱动 我用的是X99主板的渲染服务器&#xff0c;只能装WIN10的64位系统。直接下载并安装最新的驱动程序就可以了&#xff01; 另&#xff1a;我以前的电脑插的是RX550的显卡&#xff0c;直接…

推动海外云手机发展的几个因素

随着科技的不断发展&#xff0c;海外云手机作为一种新兴技术&#xff0c;在未来呈现出令人瞩目的发展趋势。本文将在用户需求、技术创新和全球市场前景等方面&#xff0c;探讨海外云手机在未来的发展。 1. 用户需求的引领&#xff1a; 随着人们对移动性和便捷性的需求不断增长&…

【数据结构和算法】--- 基于c语言排序算法的实现(1)

目录 一、排序的概念及其应用1.1排序的概念1.2 排序的应用1.3 常见的排序算法 二、插入排序2.1直接插入排序2.2 希尔排序2.2.1 预排序2.2.2 缩小gap2.2.3 小结 三、选择排序3.1 直接选择排序3.2 堆排序 一、排序的概念及其应用 1.1排序的概念 排序&#xff1a; 所谓排序&…

R语言 Error in make.names(col.names, unique = TRUE) : invalid multibyte string at ‘<b1><ea><cc><e2>‘

R语言导入CSV文件的时候&#xff0c;代码如下&#xff1a; data<-read.csv("data.csv") 出现以下报错&#xff1a; Error in make.names(col.names, unique TRUE) : invalid multibyte string at <b1><ea><cc><e2> Error in make.n…

LeetCode、17. 电话号码的字母组合【中等,dfs回溯】

文章目录 前言LeetCode、17. 电话号码的字母组合【中等&#xff0c;dfs回溯】题目与类型思路递归回溯优化&#xff1a;StringBuilder来回溯补充代码&#xff1a;2024.1.31&#xff08;简化&#xff09; 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博…

Transformer实战-系列教程6:Vision Transformer 源码解读4

&#x1f6a9;&#x1f6a9;&#x1f6a9;Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 Vision Transformer 源码解读1 Vision Transformer 源码解读2 Vision Transformer 源码解读3 Vis…

mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版

Macs Fan Control Pro for Mac是一款专业的电脑风扇控制工具&#xff0c;旨在帮助Mac用户有效控制电脑的风扇速度&#xff0c;提高电脑的运行效率和稳定性。 软件下载&#xff1a;Macs Fan Control Pro 1.5.17中文版 该软件支持多种风扇控制模式和预设方案&#xff0c;用户可以…

【leetcode】206. 反转链表(简单)题解学习

题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 …

VLM 系列——Llava1.6——论文解读

一、概述 1、是什么 Llava1.6 是llava1.5 的升级暂时还没有论文等&#xff0c;是一个多模态视觉-文本大语言模型&#xff0c;可以完成&#xff1a;图像描述、视觉问答、根据图片写代码&#xff08;HTML、JS、CSS&#xff09;&#xff0c;潜在可以完成单个目标的视觉定位、名画…

【JavaScript 漫游】【006】数据类型 array

文章简介 本文为【JavaScript 漫游】专栏的第 006 篇文章&#xff0c;记录笔者在了解 JS 数据类型 array 中摘录的知识点。 数组的本质是对象属组的 length 属性for ... in 循环和数组的遍历数组的空位类数组对象 除了上述 5 个重要知识点&#xff0c;学习数组更为重要的是掌…

MySQL组复制的介绍

前言 本文介绍关于MySQL组复制的背景信息和基本原理。包括&#xff0c;介绍MySQL传统复制方法的原理和隐患、介绍组复制的原理&#xff0c;单主模式和多主模式等等。通过结合原理图学习这些概念&#xff0c;可以很好的帮助我们理解组复制技术这一MySQL高可用方案&#xff0c;有…

Linux系统中安装JDK

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

深入探究:JSONCPP库的使用与原理解析

君子不器 &#x1f680;JsonCPP开源项目直达链接 文章目录 简介Json示例小结 JsoncppJson::Value序列化Json::Writer 类Json::FastWriter 类Json::StyledWriter 类Json::StreamWriter 类Json::StreamWriterBuilder 类示例 反序列化Json::Reader 类Json::CharReader 类Json::Ch…

VScode上无法运行TSC命令,Typescript

如何解决问题 第一步&#xff1a;使用 winx 快捷键&#xff0c;会出现如下弹窗&#xff0c;鼠标左键单击Windows PowerShell 即可打开shell 第二步&#xff1a;运行 set-ExecutionPolicy RemoteSigned 命令&#xff0c;在询问更改执行策略的时候选择敲Y或者A 第三步&#xff…

python_蓝桥杯刷题记录_笔记_全AC代码_入门5

前言 关于入门地刷题到现在就结束了。 题单目录 1.P1579 哥德巴赫猜想&#xff08;升级版&#xff09; 2.P1426 小鱼会有危险吗 1.P1579 哥德巴赫猜想&#xff08;升级版&#xff09; 一开始写的代码是三重循环&#xff0c;结果提交上去一堆地TLE&#xff0c;然后我就给减少…

数据库学习案例20240206-ORACLE NEW RAC agent and resource关系汇总。

1 集群架构图 整体集群架构图如下&#xff1a; 1 数据库启动顺序OHASD层面 操作系统进程init.ohasd run启动ohasd.bin init.ohasd run 集群自动启动是否被禁用 crsctl enable has/crsGIHOME所在文件系统是否被正常挂载。管道文件npohasd是否能够被访问&#xff0c; cd /var/t…

Etsy做什么店铺比较靠谱? 什么叫做真人店?

作为Etsy是美国最大的原创手工在线销售平台之一&#xff0c;以其店铺利润高、平台佣金低、平台同质化不严重的优点在跨境电商里颇具竞争力。然而Etsy开店却不是件容易事&#xff0c;原因是Etsy真人店对于环境以及卖家的运营操作要求较高&#xff0c;下面就给各位有意入局Etsy的…

2024版细致idea解读(包含下载,安装,破解,讲解怎么使用)

前言 我们历经了对应的javase开发&#xff0c;使用的软件从eclipse也逐步升级到了idea&#xff0c;IntelliJ旗下的产品之一 内部复函很大的集成平台插件供大家使用 下载介绍 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 这个是他的网站地址 进入之后我们可以看到对应的界面…