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

【python】python海底捞门店营业数据分析与可视化(数据集+源码+论文)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


python海底捞门店数据分析与可视化(数据集+源码+论文)【独一无二】


目录

  • python海底捞门店数据分析与可视化(数据集+源码+论文)【独一无二】
  • 一、设计要求
        • 项目背景
        • 主要功能
  • 二、设计思路
      • 1. 导入库和设置
      • 2. 读取数据
      • 3. 数据预览和基本信息
      • 4. 处理缺失值
      • 5. 处理异常值
      • 6. 处理重复值
      • 7. 数据转换
      • 8. 数据分组和统计分析
      • 9. 数据可视化
      • 总结


一、设计要求

项目背景

本项目旨在通过数据分析和可视化的方法,对海底捞门店的营业数据进行深入的探索和理解。数据来源于Excel文件《海底捞门店数据.xlsx》。项目包括数据预处理、缺失值处理、异常值处理、重复值处理、数据转换、分组统计分析和数据可视化。

主要功能
  1. 数据读取与预览

    • 从Excel文件中读取数据,展示数据的前几行,提供数据的基本信息,包括行列数、数据类型和非空数统计。
  2. 缺失值处理

    • 统计数据中的缺失值总数。
    • 提供两种处理缺失值的方法:删除含有缺失值的记录和用众数填充缺失值。
  3. 异常值处理

    • 使用箱型图可视化数据,识别异常值。
    • 提供两种去除异常值的方法:四分位数间距法(IQR)和3σ原则。
  4. 重复值处理

    • 检查并删除数据中的重复值。
  5. 数据转换

    • 将“省份”列转换为数值型数据,便于后续分析。
  6. 分组统计分析

    • 按省份分组统计各省店铺数量。
    • 按营业时长分组统计各时长区间内的店铺数量。
  7. 数据可视化

    • 可视化各省店铺数量分布。
    • 可视化营业时长分布。
    • 可视化开始营业时间分布。
    • 可视化结束营业时间分布。

二、设计思路

1. 导入库和设置

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsplt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  • 导入必要的库:pandas用于数据处理,matplotlibseaborn用于数据可视化。
  • 设置绘图时中文字体的显示,确保中文标签能正常显示。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

2. 读取数据

file_path = '海底捞门店数据.xlsx'
df = pd.read_excel(file_path, engine='openpyxl')
  • 从Excel文件中读取数据到一个DataFrame中。

3. 数据预览和基本信息

print("数据预览:")
# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈print("缺失值总数:")
print(df.isnull().sum())

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

在这里插入图片描述

  • 打印数据的前几行,显示数据的基本信息(行列数、数据类型和非空数)。
  • 统计缺失值的总数。

4. 处理缺失值

# 删除含有缺失值的记录
# 代码略....
print(df_dropna.isnull().sum())# 用众数填充缺失值
df_fillna = df.fillna(df.mode().iloc[0])
# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈
print(df_fillna.isnull().sum())
  • 处理缺失值的方法包括:
    • 删除含有缺失值的记录。
    • 用众数填充缺失值。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

5. 处理异常值

# 箱型图识别异常值
plt.figure(figsize=(10, 6))
# 代码略....
plt.show()# 四分位数间距法去除异常值
# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈IQR = Q3 - Q1
df_no_outliers = df[~((df['营业时长'] < (Q1 - 1.5 * IQR)) | (df['营业时长'] > (Q3 + 1.5 * IQR)))]
print("去除异常值后的数据行列数: ", df_no_outliers.shape)# 3σ原则去除异常值
mean = df['营业时长'].mean()
# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈print("3σ原则去除异常值后的数据行列数: ", df_no_outliers_sigma.shape)

在这里插入图片描述

  • 使用箱型图可视化数据,识别异常值。
  • 使用四分位数间距法(IQR)和3σ原则去除异常值。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

在这里插入图片描述

6. 处理重复值

df_no_duplicates = df.drop_duplicates()
print("删除重复值后的数据行列数: ", df_no_duplicates.shape)
  • 删除重复值。

7. 数据转换

# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈
print("转换后的数据预览:")
print(df.head())
  • 将“省份”列转换为数值型数据,便于后续分析。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

8. 数据分组和统计分析

# 按省份分组统计各省店铺数量
# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈print("按省份分组统计:")
print(province_group)
# 按营业时间长度分组统计
time_group = df.groupby('营业时长')['店名'].count().reset_index()
# 代码略....👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “门店” 获取。👈👈👈print("按营业时间长度分组统计:")
print(time_group)

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

  • 按省份和营业时长分组,统计各组的店铺数量。

9. 数据可视化

# 店铺数量按省份分布
plt.figure(figsize=(14, 7))
# 代码略....
# 代码略....
plt.show()

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

# 营业时长分布
plt.figure(figsize=(10, 6))
# 代码略....
# 代码略....
plt.show()

在这里插入图片描述

# 开始营业时间分布
plt.figure(figsize=(10, 6))
# 代码略....
# 代码略....
plt.show()

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈

# 结束营业时间分布
# 代码略....
# 代码略....
plt.show()
  • 可视化数据,展示各省店铺数量分布、营业时长分布、开始营业时间分布和结束营业时间分布。

在这里插入图片描述

总结

这段代码通过读取、预览、处理和分析数据,最后进行可视化展示。其设计思路清晰、结构完整,覆盖了数据处理和分析的多个方面,包括缺失值处理、异常值处理、重复值处理、数据转换、数据分组统计和数据可视化。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 门店 ” 获取。👈👈👈


相关文章:

  • 华为某员工爆料:三年前985本科起薪30万,现在硕士起薪还是30w,感慨互联网行情变化
  • Python与Java实现SM2互调
  • Web框架简介
  • Kubernetes之Pod详解
  • Ubuntu22.04系统安装及配置
  • 构造函数实现依赖注入
  • 嘉楠勘智CanMV-K230的大小核如何操作
  • MapReduce 实践题:Web 访问日志分析与异常检测
  • Selenium - 翻页(常用代码)
  • 第七章-2·集合
  • uniapp 自定义页面顶部导航栏
  • Selenium WebDriver - 浏览器交互
  • 大模型参数高效微调学习笔记
  • 从0开发一个Chrome插件:用户反馈与更新 Chrome 插件
  • C++面向对象三大特性--多态
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • Computed property XXX was assigned to but it has no setter
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JSDuck 与 AngularJS 融合技巧
  • mysql常用命令汇总
  • PHP 7 修改了什么呢 -- 2
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 翻译:Hystrix - How To Use
  • 机器学习中为什么要做归一化normalization
  • 两列自适应布局方案整理
  • 试着探索高并发下的系统架构面貌
  • 手写一个CommonJS打包工具(一)
  • 树莓派 - 使用须知
  • 怎样选择前端框架
  • 《码出高效》学习笔记与书中错误记录
  • ​补​充​经​纬​恒​润​一​面​
  • # 透过事物看本质的能力怎么培养?
  • $(selector).each()和$.each()的区别
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (39)STM32——FLASH闪存
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)关于pipe()的详细解析
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • **PHP二维数组遍历时同时赋值
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net core Redis 使用有序集合实现延迟队列
  • .Net Core 生成管理员权限的应用程序
  • .Net Core 中间件验签
  • .NET Core中的时区转换问题
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • /etc/shadow字段详解
  • [ A*实现 ] C++,矩阵地图
  • [20161101]rman备份与数据文件变化7.txt