【Python数分实战】数据可视化全国奶茶饮品加盟数据

📣 前言

  • 👓 可视化主要使用 plotly
  • 🔎 数据处理主要使用 pandas
  • 🕷️ 数据爬取主要使用 requests
  • 👉 本文是我自己在和鲸社区的原创

今天这篇文章将给大家介绍【🧋Python数据可视化全国奶茶饮品加盟数据
案例。

Step 1. 导入模块

import numpy as np
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
import jieba
from stylecloud import gen_stylecloud
from IPython.display import Image # 用于在jupyter lab中显示本地图片
import warnings
from pandas.core.common import SettingWithCopyWarning

warnings.filterwarnings('ignore', category=SettingWithCopyWarning)

Step 2. 数据概览

数据下载:关注公众号,回复关键词【奶茶数据】


df1 =pd.read_excel(r"/home/mw/input/naic5590/加盟信息_231214_1702546097.xlsx")
df1.head()

输出结果:
《》

df1.info()

输出结果:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6264 entries, 0 to 6263
Data columns (total 15 columns):
产品名称      6264 non-null object
产品信息      6264 non-null object
公司名称      6264 non-null object
产品标签      6264 non-null object
投资最低金额    6264 non-null float64
投资最高金额    801 non-null float64
投资金额单位    6264 non-null object
项目介绍      6264 non-null object
投资费用      5764 non-null object
加盟扶持      6264 non-null object
主营产品      6255 non-null object
招商地区      6264 non-null object
经营模式      6252 non-null object
品牌源地      1554 non-null object
成立时间      1029 non-null object
dtypes: float64(2), object(13)
memory usage: 734.1+ KB

Step 3. 数据处理

3.1 数据去重

df1 = df1.drop_duplicates(subset=['产品名称'])

3.2 筛选奶茶饮品数据

keywords = ['奶', '茶', '咖啡', '饮品', '饮料']

# 使用 str.contains 方法进行筛选
filtered_df = df1[df1['产品信息'].str.contains('|'.join(keywords), na=False)]

# 输出筛选结果
filtered_df.head(2)

输出结果:
《》

3.3 拆分列

# 拆分并创建新列
filtered_df[['加盟费', '设备费', '原料费', '品牌使用费', '保证金']] = filtered_df['投资费用'].str.split(' ', expand=True)
filtered_df["加盟费"] = filtered_df["加盟费"].apply(lambda x: str(x).replace("加盟费", "").replace("万起", "").replace("万", '').replace("0-", '').replace("免", '0'))
filtered_df["设备费"] = filtered_df["设备费"].apply(lambda x: str(x).replace("设备费", "").replace("万起", "").replace("免", '0').replace("万", '').replace("0-", ''))
filtered_df["原料费"] = filtered_df["原料费"].apply(lambda x: str(x).replace("原料费", "").replace("万起", "").replace("免", '0').replace("万", '').replace("0-", ''))
filtered_df["品牌使用费"] = filtered_df["品牌使用费"].apply(lambda x: str(x).replace("品牌使用费", "").replace("万起", "").replace("免", '0').replace("万", '').replace("0-", ''))
filtered_df["保证金"] = filtered_df["保证金"].apply(lambda x: str(x).replace("保证金", "").replace("万起", "").replace("免", '0').replace("万", '').replace("0-", ''))
filtered_df.head(3)

输出结果:
《》

print("——" * 10)
print('数据集存在重复值个数:')
print(filtered_df.duplicated().sum())
print("——" * 10)
print('数据集缺失值情况:')
print(filtered_df.isna().sum())
print("——" * 10)
print('数据集各字段类型:')
print(filtered_df.dtypes)
print("——" * 10)
print('数据总体概览:')
print(filtered_df.info())

输出结果:

————————————————————
数据集存在重复值个数:
0
————————————————————
数据集缺失值情况:
产品名称         0
产品信息         0
公司名称         0
产品标签         0
投资最低金额       0
投资最高金额    2501
投资金额单位       0
项目介绍         0
投资费用       113
加盟扶持         0
主营产品         2
招商地区         0
经营模式         1
品牌源地      2223
成立时间      2409
加盟费          0
设备费          0
原料费          0
品牌使用费        0
保证金          0
dtype: int64
————————————————————
数据集各字段类型:
产品名称       object
产品信息       object
公司名称       object
产品标签       object
投资最低金额    float64
投资最高金额    float64
投资金额单位     object
项目介绍       object
投资费用       object
加盟扶持       object
主营产品       object
招商地区       object
经营模式       object
品牌源地       object
成立时间       object
加盟费        object
设备费        object
原料费        object
品牌使用费      object
保证金        object
dtype: object
————————————————————
数据总体概览:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2647 entries, 0 to 6258
Data columns (total 20 columns):
产品名称      2647 non-null object
产品信息      2647 non-null object
公司名称      2647 non-null object
产品标签      2647 non-null object
投资最低金额    2647 non-null float64
投资最高金额    146 non-null float64
投资金额单位    2647 non-null object
项目介绍      2647 non-null object
投资费用      2534 non-null object
加盟扶持      2647 non-null object
主营产品      2645 non-null object
招商地区      2647 non-null object
经营模式      2646 non-null object
品牌源地      424 non-null object
成立时间      238 non-null object
加盟费       2647 non-null object
设备费       2647 non-null object
原料费       2647 non-null object
品牌使用费     2647 non-null object
保证金       2647 non-null object
dtypes: float64(2), object(18)
memory usage: 434.3+ KB
None

Step 4.数据分析可视化

4.1 投资档次分布

def trans(x):
    if x<=10:
        return "0~10万"
    elif 10 < x <= 20:
        return "10~20万"
    elif 20 < x <= 30:
        return "20~30万"
    elif 30 < x <= 40:
        return "30~40万"
    elif 40 < x <= 50:
        return "40~50万"
    elif 50 < x <= 60:
        return "50~60万"
    elif 60 < x <= 70:
        return "60~70万"
    elif 70 < x <= 80:
        return "70~80万"
    elif 80 < x <= 90:
        return "80~90万"
    elif 90 < x <= 100:
        return "90~100万"
    elif x>100:
        return ">100万"
filtered_df["投资档次"] = filtered_df["投资最低金额"].apply(lambda x: trans(x))

《》

4.2 投资金额Top榜单

在这里插入图片描述

4.3 加盟奶茶投资费用分布

def trans_1(x):
    x = float(x)
    if x<=2.5:
        return "0~2.5万"
    elif 2.5 < x <= 5:
        return "2.5 ~5万"
    elif 5 < x <= 7.5:
        return "5~7.5万"
    elif 7.5 < x <= 10:
        return "7.5~10万"
    elif x>10:
        return ">10万"
filtered_df["加盟费档次"] = filtered_df["加盟费"].apply(lambda x: trans_1(x))
filtered_df["原料费档次"] = filtered_df["原料费"].apply(lambda x: trans_1(x))
filtered_df["设备费档次"] = filtered_df["设备费"].apply(lambda x: trans_1(x))
filtered_df["品牌使用费档次"] = filtered_df["品牌使用费"].apply(lambda x: trans_1(x))
jmf = filtered_df["加盟费档次"].value_counts()
ylf = filtered_df["原料费档次"].value_counts()
sbf = filtered_df["设备费档次"].value_counts()
ppssyf = filtered_df["品牌使用费档次"].value_counts()

输出结果:

在这里插入图片描述

4.4 加盟扶持标语词云图

import ast

jmComments = df1["加盟扶持"].tolist()

hots = []
for jmComment in jmComments:
    Comment = ast.literal_eval(jmComment)
    for h in Comment:
        hots.append(h)
title_content = ','.join(hots)
cut_text = jieba.cut(title_content)
result = ' '.join(cut_text)

# 读入停用词表
exclude = [] 

with open(r"/home/mw/中文停用词库.txt", 'r', encoding='gbk') as f:
    lines = f.readlines()
    for line in lines:
        exclude.append(line.strip())
 # 添加停用词
exclude.extend([""])

输出结果:
《》

4.5 产品标签词云图

title_content = ','.join(df1["产品标签"].tolist())
cut_text = jieba.cut(title_content)
result = ' '.join(cut_text)

# 读入停用词表
exclude = [] 

with open(r"/home/mw/中文停用词库.txt", 'r', encoding='gbk') as f:
    lines = f.readlines()
    for line in lines:
        exclude.append(line.strip())
 # 添加停用词
exclude.extend([""])

在这里插入图片描述

完整代码👇

https://www.heywhale.com/mw/project/657c006b3a9aa28a45bfdedf

ps:访问链接点击【在线运行】即可查看完整代码,且不需要担心环境配置问题

数据集下载

关注公众号,回复关键字获取

- END -

以上就是本期为大家整理的全部内容了,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。
在这里插入图片描述

👆 关注**「布鲁的Python之旅」**第一时间收到更新

### 使用Power BI进行苏苏奶茶数据分析与可视化的报表制作 #### 准备工作 在开始构建苏苏奶茶数据分析报告之前,需准备好所需的数据集。这些数据通常包括销售记录、顾客反馈以及其他运营细节等信息[^4]。 #### 获取并加载数据 通过Power BI Desktop中的“获取数据”选项连接至存储有苏苏奶茶业务活动详情的各种来源,如Excel文件、数据库或是在线服务。一旦选择了合适的数据源,则按照提示导入具体表格或视图内的字段内容[^2]。 #### 创建可视化组件 利用已载入的信息,在画布上拖拽相应的度量值和维度建立不同种类的图表形式来直观呈现关键绩效指标(KPIs),例如销售额趋势线图、各地区门店分布地图以及各类饮品受欢迎程度柱状对比图等等[^3]。对于特定情境下的深入洞察,还可以考虑采用更专业的视觉元素比如瀑布流、漏斗图等形式辅助说明因果关系或者流程进展状况[^1]。 #### 设计布局结构 合理规划页面分区安排各个图形的位置大小,并调整配色方案确保整体风格协调统一;同时设置筛选器以便于动态查询指定条件范围内的子集表现情况;最后启用交互特性让用户能够自行探索更多潜在关联模式。 #### 发布共享成果 当完成了初步版本的设计构思后,可以通过点击菜单栏里的“发布”按钮上传作品到云端平台供团队成员访问查看甚至进一步协作完善。此外也支持导出静态图片/PDF文档分享给不熟悉BI工具的人士阅览参考。 ```python import pandas as pd from powerbiclient import Report, models # 假设已经有一个DataFrame df 存储着苏苏奶茶的相关数据 df = pd.DataFrame({ 'date': ['2023-09-01', '2023-09-02'], 'store_id': [1, 2], 'sales_amount': [1500, 2000] }) # 将Pandas DataFrame转换成适合Power BI使用的格式 dataset = { "name": "SuSuTeaData", "tables": [{ "name": "SalesRecord", "columns": [ {"name": col_name, "dataType": "string"} if isinstance(df[col_name].iloc[0], str) else \ {"name": col_name, "dataType": "double"} for col_name in df.columns ] }] } report_config = models.ReportConfig( dataset=dataset, data_sources=[models.DataSource(...)] # 配置实际的数据源参数 ) Report.create_report(config=report_config) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值