优衣库门店可视化与顾客拜访数据分组-Python数据分析项目

news2024/11/18 18:42:52

文章目录

  • 项目背景
    • 1 引言
    • 2 数据说明
  • 一、数据导入及预处理
    • 1 数据导入
    • 2 数据观察
      • 2.1 查看数据形状
      • 2.2 检查缺失值
      • 2.3 有无重复值
    • 3 数据预处理
      • 3.1 获取详细地址
      • 3.2 批量获取经纬度
        • 3.2.1 安装geopy包
        • 3.2.2 批量获取经纬度
  • 二、优衣库门店可视化
    • 1 数据获取
      • 1.1 读取地点数据
      • 1.2 筛选优衣库门店
    • 2 门店可视化
      • 2.1 带涟漪效果的散点图
      • 2.2 热力图
  • 三、拜访数据分组
    • 1 数据获取
    • 2 拜访数据分组
      • 2.1 KMeans分组
      • 2.2 输出分组结果
        • 2.2.1 分组结果
        • 2.2.2 中心点坐标
    • 3 K值调整
      • 3.1 The Elbow Method
      • 3.2 分组结果可视化
      • 3.3 聚类中心地址
    • 4 大屏展示
  • 总结与展望
    • 1 项目总结
    • 2 后期展望

项目背景

1 引言

在正文开始之前,大家可以先来考虑这样两个问题:

  1. 一家连锁企业在开设线下门店时会以哪些因素为参考呢?

  2. 在不同层次的城市应该分别开设多少家门店,门店位置如何选取,才能促其利润最大化呢?

在这里插入图片描述

这其实就是一个数据分析的过程,如果我们拥有相应城市的人口、GDP、人群分布、用户行为等数据,我们就可以使用尽可能科学的方法帮助我们计算出相应的商业中心。

那么,什么才是最科学的方法呢?下面就让我们一起来探索吧。

2 数据说明

该数据集是一份统计自在上海市热门地点活动的80人的拜访数据样例,包含顾客姓名、剩余拜访次数、地理位置等信息。

分为以下三个csv文件:

  • uniqlo.csv

  • uniqlo1.csv

  • uniqlo2.csv
    其中uniqlo2.csv是在uniqlo.csv的基础上添加了详细地址、经纬度等信息,具体方法分两步:

  1. 使用百度地图,根据地址信息查询其对应的详细地址;

  2. 使用经纬度查询工具,根据详细地址匹配对应位置的经纬度。
    为了说明地名数据的一般处理方法,下面我们使用不含详细地址及经纬度数据的这一份csv文件进行分析;大家也大家根据自己的情况考虑略过这部分操作,直接使用最后一份数据集进行后续的分析。

一、数据导入及预处理

1 数据导入

#读取不含经纬度信息的拜访数据

import pandas as pd

data = pd.read_csv('./uniqlo.csv')
data.head()

2 数据观察

2.1 查看数据形状

#查看数据形状

data.shape

2.2 检查缺失值

#检查各列有无缺失值

data.isnull().sum()

2.3 有无重复值

#检查各列独立元素的数目

print('姓名数目为:',data['姓名'].nunique())
print('剩余拜访次数枚举值为:',data['剩余拜访次数'].unique())
print('地址数目为:',data['地址'].nunique())

姓名数目为: 80 剩余拜访次数枚举值为: [1 2 3] 地址数目为: 73

3 数据预处理

我们可以使用百度地图查询数据集中地址所对应的详细地址,继而使用Python支持的geopy工具包完成详细地址到经纬度的转换。

3.1 获取详细地址

由于数据量不大,我们此处使用百度地图手动处理;后续可以考虑调用适合的API来完成这一转换。
#读取含详细地址的数据

data = pd.read_csv('./uniqlo1.csv')
data.head()

3.2 批量获取经纬度

3.2.1 安装geopy包
#### 

#安装geopy包,并指定清华源下载

!pip install geopy -i https://pypi.tuna.tsinghua.edu.cn/simple/
print('-'*60)
print('geopy包安装完成!')
3.2.2 批量获取经纬度
# #根据详细地址获取经纬度

# # 速度较慢,可直接读取经纬度解析完成的数据uniqlo2.csv

# import warnings 

# warnings.filterwarnings('ignore')

# from geopy.geocoders import Nominatim

# geolocator = Nominatim(user_agent='Mozilla/5.0(Windows NT 10.0;WOW64)ApplewebKit/537.36(KHTML,like Gecko)Chrome/55.0.2883.75 Safari/537.36')

# from geopy.extra.rate_limiter import RateLimiter

# geocode = RateLimiter(geolocator.geocode, min_delay_seconds=1)

# #获取location

# data['location'] = data['详细地址'].apply(geocode)

# #获取经度

# data['经度'] = data['location'].apply(lambda loc: loc.longitude if loc else None)

# #获取纬度

# data['纬度'] = data['location'].apply(lambda loc: loc.latitude if loc else None)

# print('经纬度解析完成!')

# data.head()

二、优衣库门店可视化

1 数据获取

前面我们已经得到了带经纬度信息的优衣库门店数据,由于该数据中包含一些其他地点,因此我们需要对其进行相应的筛选;考虑到前一步得到的经纬度数据只到路道级别,不能保持原有数据的精确度,因此我们转而使用经经纬度解析工具解析后的这一份地点数据进行如下操作。

1.1 读取地点数据

#读取含经纬度的地点数据

data2 = pd.read_csv('./uniqlo2.csv')
data2.head()

1.2 筛选优衣库门店

#根据地址字段筛选出含'优衣库'的数据行

uniqlo = data2[data2['地址'].str.contains('优衣库')]
uniqlo.head()
#一共筛选出了多少条数据

uniqlo.shape
#去重后的门店数

uniqlo['地址'].nunique()
#40个门店分别是哪些

uniqlo['地址'].unique()
#获取40个门店的名称及经纬度数据

import numpy as np

uniqlo = uniqlo.groupby('地址',as_index=False).agg({'剩余拜访次数':sum,'经度':np.mean,'纬度':np.mean})
uniqlo.head()

2 门店可视化

需安装包:

pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install echarts-countries-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install echarts-china-provinces-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install echarts-china-cities-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install echarts-china-counties-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install echarts-china-misc-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple/

 pip install echarts-united-kingdom-pypkg -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.1 带涟漪效果的散点图

#使用pyecharts中的Geo类绘制散点图

from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType

city = '上海'

#实例化一个Geo类
geo = Geo()
#以上海市地图为底景
geo.add_schema(maptype=city)
# #添加地点坐标至坐标库中

for i in range(40):
    geo.add_coordinate(uniqlo.iloc[i]['地址'],uniqlo.iloc[i]['经度'],uniqlo.iloc[i]['纬度'])

data_pair = [(uniqlo.iloc[i]['地址'],int(uniqlo.iloc[i]['剩余拜访次数'])) for i in range(40)]
# 将数据添加到地图上

geo.add('',data_pair,type_=GeoType.EFFECT_SCATTER, symbol_size=9)

# 设置样式

geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
#自定义分级
pieces = [
        {'min': 0, 'max': 1, 'label': '1', 'color': '#50A3BA'},
        {'min': 1, 'max': 2, 'label': '2', 'color': '#DD675E'},
        {'min': 2, 'max': 3, 'label': '3', 'color': '#E2C568'},
        {'min': 3, 'label': '4', 'color': '#3700A4'}
]
#是否自定义分段
geo.set_global_opts(
        visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces),
        title_opts=opts.TitleOpts(title='上海市优衣库门店可视化'),
    )
    
geo.render_notebook()

2.2 热力图

绘制热力图只需将GeoType参数为设置HEATMAP即可,具体展示如下:
city = '上海'

#实例化一个Geo类
geo2 = Geo()
#以上海市地图为底景
geo2.add_schema(maptype=city)

# #添加地点坐标至坐标库中

for i in range(40):
    geo2.add_coordinate(uniqlo.iloc[i]['地址'],uniqlo.iloc[i]['经度'],uniqlo.iloc[i]['纬度'])

data_pair = [(uniqlo.iloc[i]['地址'],int(uniqlo.iloc[i]['剩余拜访次数'])) for i in range(40)]
    

# 将数据添加到地图上

geo2.add('',data_pair,type_=GeoType.HEATMAP, symbol_size=5)

# 设置样式

geo2.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

#自定义分级
pieces = [
        {'min': 0, 'max': 1, 'label': '1', 'color': '#50A3BA'},
        {'min': 1, 'max': 2, 'label': '2', 'color': '#E2C568'},
        {'min': 2, 'max': 3, 'label': '3', 'color': '#DD675E'},
        {'min': 3, 'label': '4', 'color': '#DD0200'}
]
#是否自定义分段
geo2.set_global_opts(
        visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces),
        title_opts=opts.TitleOpts(title='上海市优衣库门店可视化'),
    )
    
geo2.render_notebook()

三、拜访数据分组

由于我们事先不知道将要把数据点分为哪些组,所以这是一个典型的无监督学习问题,以下我们将采用最常用的KMeans算法对拜访数据进行分组。

1 数据获取

#拜访地点数据获取

visit = data2[['地址','经度','纬度']]
visit.head()

2 拜访数据分组

2.1 KMeans分组

这里简要介绍一下KMeans算法的步骤:

  1. 随机初始化k个聚类中心;

  2. 将n个待分类数据分配到距离它最近的聚类中心;

  3. 根据步骤2结果,重新计算新的聚类中心;

  4. 若达到最大迭代步数或两次迭代差小于设定的阈值则算法结束,否则重复步骤2。
    #使用KMeans算法将拜访数据分为8组

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=8,
init='k-means++',)

X = visit[['经度','纬度']]
y = [0,1,2,3,4,5,6,7]
kmeans.fit(X,y)
y_pred = kmeans.predict(X)

y_pred

2.2 输出分组结果

2.2.1 分组结果
#将各点分组结果添加到数据中

visit_result = visit
visit_result['分组'] = y_pred

visit_result.head()
2.2.2 中心点坐标
#中心点坐标

center = kmeans.cluster_centers_
center
#获取中心点详细地址
import time
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0',
                      timeout=5)
# 注意:建议访问速度不要太快,否则报timeout错误

# for x,y in center:

#     print(x,y)

#     location = geolocator.reverse((y,x))

#     print(location.address)

#     time.sleep(1.5)

3 K值调整

3.1 The Elbow Method

由于这里没有事先对数据分成几组作出规定,因此我们有必要对K值进行调整,来找到一个能够使我们比较满意的分组结果;事实上,KMeans算法中K值的选取一直是业界比较关心的一个问题,这里我们采用最常用的 The Elbow Method(“肘方法”) 来选取一个恰当的K值。

#对不同的K值分别计算误差和

from sklearn.cluster import KMeans

inertia = []
for i in range(1,21):
  
kmeans = KMeans(n_clusters=i,
init='k-means++')

X = visit[['经度','纬度']]
kmeans.fit(X)
inertia.append(kmeans.inertia_)
inertia
#绘制误差和随K值的变化曲线图

import matplotlib.pyplot as plt

plt.style.use('fivethirtyeight')
plt.figure(figsize=(12,6))
plt.plot(range(1,11),inertia[0:10])

plt.title('The Elbow Method')
plt.xlabel('K')
plt.ylabel('inertia')

plt.show()

这里可以看到,当K<=10时,K=3是一个比较好的分组数目;为了解误差后续的变化趋势,我们看下K<=20时的结果。
#绘制误差和随K值的变化曲线图

在这里插入图片描述

plt.figure(figsize=(12,6))
plt.plot(range(1,21),inertia)

plt.title('The Elbow Method')
plt.xlabel('K')
plt.ylabel('inertia')

plt.show()

可以看到,K<=20时,拐点出现在K=9附近,但此处误差下降的速度并不明显,下面我们按照K=3来进行分组。

在这里插入图片描述

3.2 分组结果可视化

#使用KMeans算法将拜访数据分为3组

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3,
init='k-means++',)

X = visit[['经度','纬度']]
kmeans.fit(X)
y_pred = kmeans.predict(X)

y_pred
#K=3时拜访数据分组可视化

from pyecharts.charts import Geo
from pyecharts import options as opts
from pyecharts.globals import GeoType

city = '上海'

#实例化一个Geo类
geo3 = Geo()
#以上海市地图为底景
geo3.add_schema(maptype=city)

# #添加地点坐标至坐标库中

for i in range(80):
    geo3.add_coordinate(visit.iloc[i]['地址'],visit.iloc[i]['经度'],visit.iloc[i]['纬度'])

data_pair = [(visit.iloc[i]['地址'],int(y_pred[i])) for i in range(80)]


# 将数据添加到地图上

geo3.add('',data_pair,type_=GeoType.EFFECT_SCATTER, symbol_size=9)

# 设置样式

geo3.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
#自定义分级
pieces = [
        {'min': 0, 'max': 0, 'label': '1', 'color': '#50A3BA'},
        {'min': 0, 'max': 1, 'label': '2', 'color': '#DD0200'},
        {'min': 1, 'max': 2, 'label': '3', 'color': '#E2C568'}
]
#是否自定义分段
geo3.set_global_opts(
        visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces),
        title_opts=opts.TitleOpts(title='上海市热门地点分组可视化'),
    )
    
geo3.render_notebook()

在这里插入图片描述

3.3 聚类中心地址

#获取聚类中心坐标

center_ = kmeans.cluster_centers_
center_
# 可以到 https://lbs.amap.com/tools/picker 输入经纬度121.48337518,31.23489423查看地图位置
#获取聚类中心点详细地址
# from geopy.geocoders import Nominatim
# geolocator = Nominatim(user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0',
#                       timeout=5)
# for i in range(3):
#     location = geolocator.reverse((center_[i][1],center_[i][0]))
#     print(location.address)
#     time.sleep(1.5)

4 大屏展示

from pyecharts.charts import Page
page = Page(layout=Page.DraggablePageLayout, page_title="大屏展示")

page.add(
    geo,
    geo2,
    geo3)

# 先保存到test.html 然后打开,拖拽图片自定义布局, 之后记得点击左上角“save config”对布局文件进行保存。

# 会生成一个chart_config.json的文件,这其中包含了每个图表ID对应的布局位置

page.render('test.html')

# 然后运行下面这行代码。保存布局好的的仪表盘文件。

page.save_resize_html('test.html', cfg_file='chart_config.json', dest='大屏展示1.html')

在这里插入图片描述

总结与展望

1 项目总结

本文展示了利用较少的数据量(主要是地点名称数据)也可以进行可视化分析与数据分组 等操作,其中包含了地点名称数据向地点详细地址、经纬度等信息的转换,以及根据经纬度数据对地点的聚类分组。
其中难点 便在于地点名称数据向地点详细地址、经纬度数据的转换,这个过程中我们可能要调用适当的API来完成这一转换,本文中我们使用的是geopy工具包中的地理位置编码与反编码等方法来实现。

在实际使用过程中,我们发现geopy包在对地理位置进行编码时对地点名称数据是有一定要求的,如“优衣库南京西路店”不能直接进行编码,于是我们统一使用“上海市(XX区)XX路”进行编码。
而由模糊地址向详细地址转换这一步暂时没有找到合适的API,这也是后期我们考虑优化的一个方向。
以上这种数据分组常见于寻找点群对应的城市中心,为门店选址提供依据等。

2 后期展望

下面我们来看这样一个实际场景:

  • 知乎某运营部门拟定对居住在北京,且粉丝数10w的大V举行一次线下交流会,考虑到北京全市面积较大且交通不便,决定将此次聚会分散至几个不同的地点进行,假设每个聚会地点人均消费相同,且已有每个人居住地点的数据,那么我们应当如何选取聚会地点,才能使每个人距离聚会地点尽可能近且每个聚会地人数尽可能多呢?

这就是一个典型的无监督数据分组问题,我们可以考虑使用上述的Kmeans算法来进行聚类。

  1. 由于本文所使用的数据集较少,其中所包含的优衣库门店并非全量数据,所以项目整体更偏向于一种分析思路的阐明,如果我们拥有比较多的数据,预期将会得到一个比较好的分组结果;

  2. 另外Kmeans算法本身存在一些如对异常值较为敏感、数据量大时算法比较复杂等缺点,因此我们也可以考虑使用基于密度的聚类方法对数据来进行分组;

  3. K值的确定:以上即使我们使用了“肘方法”,但由于误差的下降较为平缓,因此选取的K值比较难界定是否最优,实际情形中我们还需要根据具体情况进行处理;

  4. 在计算空间两点距离时我们直接使用了最常见的欧式距离,但这种近似仅适用于经纬度相差不大的点群,当点群之间经纬度相差较大时,我们应该转而使用球面距离。

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

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

相关文章

c语言数据结构(10)——冒泡排序、快速排序

欢迎来到博主的专栏——C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 冒泡排序冒泡排序的代码及原理快速排序快速排序的代码和原理快速排序的其他排序方法非递归的快速排序 冒泡排序 相信冒泡排序是绝大多数计科学子接触的第一个排序算法。作为最简单、最容易理解的排序…

创新性的智慧公厕技术研发与应用

智慧公厕&#xff0c;作为城市基础设施的重要组成部分&#xff0c;扮演着提供舒适便捷卫生服务的角色。智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;通过技术创新与应用升级&#xff0c;打造标杆性的智慧公厕整体解决方案。通过创新性的技术应用&#xff0c;智慧公厕…

字节新作:图像生成质量超越DiT

&#x1f31f;每日更新最新高质量论文&#xff0c;关注我&#xff0c;时刻关注最新大模型进展。&#x1f31f; &#x1f4cc; 元数据概览&#xff1a; 标题&#xff1a;Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction作者&#xff1a…

Jupyter IPython帮助文档及其魔法命令

1.IPython 的帮助文档 使用 help() 使用 ? 使用 &#xff1f;&#xff1f; tab 自动补全 shift tab 查看参数和函数说明 2.运行外部 Python 文件 使用下面命令运行外部 Python 文件&#xff08;默认是当前目录&#xff0c;也可以使用绝对路径&#xff09; %run *.py …

数据湖概述:大数据演进阶段-数据湖

文章目录 一. 大数据发展过程1. 离线大数据平台2. Lambda架构&#xff1a;速度层批层3. Kappa架构&#xff1a;流批一体4. 大数据架构痛点总结 二. 数据湖助力于解决数据仓库痛点问题1. 数据湖特点2. 开源数据湖的架构 三. 数据湖和数据仓库理念的对比1. 数据湖和数据仓库对比2…

LeetCode 热题 100 | 贪心算法

目录 1 121. 买卖股票的最佳时机 2 55. 跳跃游戏 3 45. 跳跃游戏 II 4 763. 划分字母区间 菜鸟做题&#xff0c;语言是 C 1 121. 买卖股票的最佳时机 解题思路&#xff1a; 维护一个变量 max_pricemax_price 用于存储排在 i 天之后的股票最高价格第 i 天的最高利润 …

Day5-Hive的结构和优化、数据文件存储格式

Hive 窗口函数 案例 需求&#xff1a;连续三天登陆的用户数据 步骤&#xff1a; -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…

armlinux-外部中断

s3c2440的中断框图 如果我们单纯配置一个按键的外部中断&#xff0c;就不存在子中断与优先级的问题。 由于是按键的外部中断&#xff0c;通过引脚的高低电平来触发。所以我们要先配置引脚的功能。 我们使用按键1&#xff0c;终端源为EINT8&#xff0c;对应引脚GPG0 通过用户手…

Stable diffusion 加载扩展列表报错解决方法

项目场景&#xff1a; 在使用Stable diffusion webui时&#xff0c;使用扩展列表出现错误 问题描述 点击loadfrom后&#xff0c;出现加载扩展列表报错 原因分析&#xff1a; 下载的扩展的时候&#xff0c;都是github 的url&#xff0c;需要科学上网&#xff0c;如果不能科学…

深澜计费管理系统 任意文件读取漏洞复现

0x01 产品简介 深澜计费管理系统是是一套完善的领先的具有复杂生物型特征的弹性认证计费系统。系统主要由 AAA 认证计费平台、系统运营维护管理平台、用户及策略管理平台、用户自助服务平台、智能客户端模块、消息推送模块、数据统计模块组成。目前在全球为超过 2500 家客户提…

MicroPython 树莓派 RP2 入门教程

系列文章目录 前言 Raspberry Pi Pico 开发板&#xff08;图片来源&#xff1a;Raspberry Pi 基金会&#xff09;。 以下是 Raspberry Pi RP2xxx 板的快速参考资料。如果您是第一次使用该开发板&#xff0c;了解微控制器的概况可能会对您有所帮助&#xff1a; 一、关于 RP2xxx…

【项目实战】——商品管理的制作完整代码

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

数据结构:详解【树和二叉树】

1. 树的概念及结构&#xff08;了解&#xff09; 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝…

Vue项目登录页实现获取短信验证码的功能

之前我们写过不需要调后端接口就获取验证码的方法,具体看《无需后端接口,用原生js轻松实现验证码》这个文章。现在我们管理后台有个需求,就是登录页面需要获取验证码,用户可以输入验证码后进行登录。效果如下,当我点击获取验证码后能获取短信验证码: 这里在用户点击获取…

Cortex-M7 异常处理与返回

1 前言 当CM3开始响应一个中断时&#xff0c;会在它小小的体内奔涌起三股暗流&#xff1a;  入栈&#xff1a; 把8个寄存器的值压入栈;  取向量&#xff1a;从向量表中找出对应的服务程序入口地址;  选择堆栈指针MSP/PSP&#xff0c;更新堆栈指针…

LeetCode 19.删除链表的倒数第N个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#x…

Leetcode 39.组合总和

题目 思路 1.确定递归函数的返回值及参数&#xff1a; 返回值是void,参数这里还是先设定两个全局变量。一个是path存放符合条件单一结果。如&#xff1a;&#xff08;1&#xff0c;2&#xff09;。一个是result&#xff0c;是所有path的集合[(1,2),(1,3)…]。 此外再设定一个…

前端学习之DOM编程-docmument对象、操作DOM对像内容、操作DOM对象属性方式、操作DOM对象的样式

docmument对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>document对象</title> </head> <body><div id"container" nameparent><ul name"parent&qu…

计算机系统结构速成,期末和自考必备

【拯救者】计算机系统结构速成(期末自考)均可用 1️⃣先讲每章对应的基础 2️⃣接着会讲对应的题目巩固 &#x1f357;提供文档下载 这里讲的是【 &#x1f337;速成&#x1f337; 速成&#x1f337; 速成】版本&#xff0c;按课本章节来&#xff0c; 抽取重点&#xff0c;翻…

数据分析——数据规范化

数据规范化是数据分析中的一个重要步骤&#xff0c;其目的在于确保数据的一致性和可比性&#xff0c;提高数据质量和分析结果的准确性。以下是一些数据规范化的常见方法和技术&#xff1a; 数据清洗&#xff1a;此步骤主要清除数据中的重复项、空格、格式错误等&#xff0c;确…