python数据分析综合案列--星巴克门店数据分析及可视化

news2025/3/11 17:04:01

本实训针对一组关于全球星巴克门店的统计数据,分析了在不同国家和地区以及中国不同城市的星巴克门店数量。
获取数据,数据放在directory.csv
这个案例主要分为以下几个部分:

  1. 数据清洗和预处理:使用 Pandas 进行数据清洗和预处理,包括数据去重、空值填充、列重命名、数据类型转换等。
  2. 数据分析:对星巴克门店数据进行数据分析,包括门店数量分布、门店类型分布、门店星级分布等。
  3. 数据可视化:使用 Matplotlib 和 Seaborn 等工具进行数据可视化处理,包括地理信息可视化、柱状图、饼图、条形图等。
  4. 综合分析:通过对数据分析和可视化的综合分析,总结出星巴克门店的发展趋势、竞争格局以及优化方案等建议。

这个案例可以帮助学习者了解到如何使用 Python 进行数据清洗、数据分析和数据可视化,并能够通过深入剖析数据得出一些有价值的结论和建议。同时,还可以培养学习者的数据分析思维和实践能力,提高他们在数据领域的竞争力。

import pandas as pd

data = pd.read_csv("directory.csv")
print(data.head(10))  # 显示数据框的前十行数据
       Brand  Store Number                Store Name Ownership Type  \
0  Starbucks  47370-257954             Meritxell, 96       Licensed   
1  Starbucks  22331-212325          Ajman Drive Thru       Licensed   
2  Starbucks  47089-256771                 Dana Mall       Licensed   
3  Starbucks  22126-218024                Twofour 54       Licensed   
4  Starbucks  17127-178586              Al Ain Tower       Licensed   
5  Starbucks  17688-182164  Dalma Mall, Ground Floor       Licensed   
6  Starbucks  18182-182165       Dalma Mall, Level 1       Licensed   
7  Starbucks  23359-229184        Debenhams Yas Mall       Licensed   
8  Starbucks   30781-99022          Khalidiya Street       Licensed   
9  Starbucks  20423-205465         Eastern Mangroves       Licensed   

                    Street Address              City State/Province Country  \
0                Av. Meritxell, 96  Andorra la Vella              7      AD   
1             1 Street 69, Al Jarf             Ajman             AJ      AE   
2     Sheikh Khalifa Bin Zayed St.             Ajman             AJ      AE   
3                  Al Salam Street         Abu Dhabi             AZ      AE   
4  Khaldiya Area, Abu Dhabi Island         Abu Dhabi             AZ      AE   
5             Dalma Mall, Mussafah         Abu Dhabi             AZ      AE   
6             Dalma Mall, Mussafah         Abu Dhabi             AZ      AE   
7                       Yas Island         Abu Dhabi             AZ      AE   
8                    Khalidiya St.         Abu Dhabi             AZ      AE   
9   Al Salam Street, The Mangroves         Abu Dhabi             AZ      AE   

  Postcode Phone Number                 Timezone  Longitude  Latitude  
0    AD500    376818720  GMT+1:00 Europe/Andorra       1.53     42.51  
1      NaN          NaN     GMT+04:00 Asia/Dubai      55.47     25.42  
2      NaN          NaN     GMT+04:00 Asia/Dubai      55.47     25.39  
3      NaN          NaN     GMT+04:00 Asia/Dubai      54.38     24.48  
4      NaN          NaN     GMT+04:00 Asia/Dubai      54.54     24.51  
5      NaN          NaN     GMT+04:00 Asia/Dubai      54.49     24.40  
6      NaN          NaN     GMT+04:00 Asia/Dubai      54.49     24.40  
7      NaN          NaN     GMT+04:00 Asia/Dubai      54.61     24.46  
8      NaN     26670052    GMT+04:00 Asia/Muscat      55.69     24.19  
9      NaN          NaN     GMT+04:00 Asia/Dubai      54.38     24.48  

数据分析及可视化。

查看星巴克旗下有哪些品牌。如果我们只关心星巴克咖啡门店,则只需获取星巴克中Brand的数据集,并查看全世界一共有多少星巴克门店。

import pandas as pd

# 读取CSV文件并查看前5行数据
data = pd.read_csv("directory.csv")
print(data.head())

# 查看品牌种类
brands = data["Brand"].unique()
print("Starbucks旗下的品牌有:")
for brand in brands:
    print(brand)

# 统计星巴克门店数量
starbucks_stores = data[data["Brand"] == "Starbucks"]
num_starbucks_stores = len(starbucks_stores)
print(f"\n全球一共有{num_starbucks_stores}家星巴克咖啡门店。")
       Brand  Store Number        Store Name Ownership Type  \
0  Starbucks  47370-257954     Meritxell, 96       Licensed   
1  Starbucks  22331-212325  Ajman Drive Thru       Licensed   
2  Starbucks  47089-256771         Dana Mall       Licensed   
3  Starbucks  22126-218024        Twofour 54       Licensed   
4  Starbucks  17127-178586      Al Ain Tower       Licensed   

                    Street Address              City State/Province Country  \
0                Av. Meritxell, 96  Andorra la Vella              7      AD   
1             1 Street 69, Al Jarf             Ajman             AJ      AE   
2     Sheikh Khalifa Bin Zayed St.             Ajman             AJ      AE   
3                  Al Salam Street         Abu Dhabi             AZ      AE   
4  Khaldiya Area, Abu Dhabi Island         Abu Dhabi             AZ      AE   

  Postcode Phone Number                 Timezone  Longitude  Latitude  
0    AD500    376818720  GMT+1:00 Europe/Andorra       1.53     42.51  
1      NaN          NaN     GMT+04:00 Asia/Dubai      55.47     25.42  
2      NaN          NaN     GMT+04:00 Asia/Dubai      55.47     25.39  
3      NaN          NaN     GMT+04:00 Asia/Dubai      54.38     24.48  
4      NaN          NaN     GMT+04:00 Asia/Dubai      54.54     24.51  
Starbucks旗下的品牌有:
Starbucks
Teavana
Evolution Fresh
Coffee House Holdings

全球一共有25249家星巴克咖啡门店。
  1. (程序题) 如果我们只关心星巴克咖啡门店,则只需获取星巴克中Brand的数据集,并查看全世界一共有多少星巴克门店。显示门店数量排名前10和后10的国家和地区。
import pandas as pd

# 读取CSV文件并筛选出品牌为 Starbucks 的行
starbucks = pd.read_csv("directory.csv")
starbucks = starbucks[starbucks["Brand"] == "Starbucks"]

# 统计全球门店数量
num_stores_global = len(starbucks)
print(f"全球一共有 {num_stores_global} 家星巴克咖啡门店")

# 按国家分组并统计门店数量,按门店数量排序
stores_by_country = starbucks.groupby("Country").size().reset_index(name="NumStores")
stores_by_country = stores_by_country.sort_values(by="NumStores", ascending=False).reset_index(drop=True)

# 显示门店数量排名前10的国家和地区
top10_countries = stores_by_country.head(10)
print("\n门店数量排名前10的国家和地区:")
for i, row in top10_countries.iterrows():
    print(f"{i+1}. {row['Country']}: {row['NumStores']} 家门店")

# 显示门店数量排名后10的国家和地区
bottom10_countries = stores_by_country.tail(10).sort_values(by="NumStores")
print("\n门店数量排名后10的国家和地区:")
for i, row in bottom10_countries.iterrows():
    print(f"{len(stores_by_country)-9+i}. {row['Country']}: {row['NumStores']} 家门店")

全球一共有 25249 家星巴克咖啡门店

门店数量排名前10的国家和地区:
1. US: 13311 家门店
2. CN: 2734 家门店
3. CA: 1415 家门店
4. JP: 1237 家门店
5. KR: 993 家门店
6. GB: 901 家门店
7. MX: 579 家门店
8. TW: 394 家门店
9. TR: 326 家门店
10. PH: 298 家门店

门店数量排名后10的国家和地区:
136. AD: 1 家门店
134. MC: 2 家门店
135. LU: 2 家门店
129. TT: 3 家门店
130. ZA: 3 家门店
131. SK: 3 家门店
132. CW: 3 家门店
133. AW: 3 家门店
127. BO: 4 家门店
128. AZ: 4 家门店
  1. (程序题)

用柱状图绘制排名前10的分布情况。

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件并选择品牌为 Starbucks 的行
starbucks = pd.read_csv("directory.csv")
starbucks = starbucks[starbucks["Brand"] == "Starbucks"]

# 将数据按国家分组,计算每个国家的店铺数量,并按数量降序排列
stores_by_country = starbucks.groupby("Country").size().reset_index(name="NumStores")
stores_by_country = stores_by_country.sort_values(by="NumStores", ascending=False).reset_index(drop=True)

# 选择数量最多的前 10 个国家
top10_countries = stores_by_country.head(10)

# 创建柱状图
plt.figure(figsize=(10, 6))
plt.bar(top10_countries["Country"], top10_countries["NumStores"], color="blue", alpha=0.8)
plt.title("Top 10 Countries with Most Starbucks Stores", fontsize=16)
plt.xlabel("Country", fontsize=14)
plt.ylabel("Number of Stores", fontsize=14)
plt.xticks(rotation=30)
plt.tight_layout()
plt.show()

![在这里插入图片描述](https://img-blog.csdnimg.cn/1634c5f8fed444998f8ba6ba556d4364.png#pic_center)





    



```python
import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件并选择品牌为 Starbucks 的行
starbucks = pd.read_csv("directory.csv")
starbucks = starbucks[starbucks["Brand"] == "Starbucks"]

# 将数据按国家分组,计算每个国家的店铺数量,并按数量降序排列
stores_by_country = starbucks.groupby("Country").size().reset_index(name="NumStores")
stores_by_country = stores_by_country.sort_values(by="NumStores", ascending=False).reset_index(drop=True)

# 选择数量最少的前 10 个国家
bottom10_countries = stores_by_country.tail(10)

# 创建柱状图
plt.figure(figsize=(10, 6))
plt.bar(bottom10_countries["Country"], bottom10_countries["NumStores"], color="red", alpha=0.8)
plt.title("Bottom 10 Countries with Least Starbucks Stores", fontsize=16)
plt.xlabel("Country", fontsize=14)
plt.ylabel("Number of Stores", fontsize=14)
plt.xticks(rotation=30)
plt.tight_layout()
plt.show()

请添加图片描述

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimSun'] # 将默认字体设置为宋体

# 接下来的绘图代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件并选择品牌为 Starbucks 的行
starbucks = pd.read_csv("directory.csv")
starbucks = starbucks[starbucks["Brand"] == "Starbucks"]

# 将数据按城市分组,计算每个城市的店铺数量,并按数量降序排列
stores_by_city = starbucks.groupby("City").size().reset_index(name="NumStores")
stores_by_city = stores_by_city.sort_values(by="NumStores", ascending=False).reset_index(drop=True)

# 选择数量最多的前 10 个城市
top10_cities = stores_by_city.head(10)

# 创建条形图
plt.figure(figsize=(10, 6))
plt.barh(top10_cities["City"], top10_cities["NumStores"], color="green", alpha=0.8)
plt.title("Top 10 Cities with Most Starbucks Stores", fontsize=16)
plt.xlabel("Number of Stores", fontsize=14)
plt.ylabel("City", fontsize=14)
plt.tight_layout()
plt.show()

请添加图片描述

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件并选择品牌为 Starbucks 的行
starbucks = pd.read_csv("directory.csv")
starbucks = starbucks[starbucks["Brand"] == "Starbucks"]

# 将数据按城市分组,计算每个城市的店铺数量,并按数量降序排列
stores_by_city = starbucks.groupby("City").size().reset_index(name="NumStores")
stores_by_city = stores_by_city.sort_values(by="NumStores", ascending=False).reset_index(drop=True)

# 选择数量最多的前 10 个城市
top10_cities = stores_by_city.head(10)

# 创建柱状图
plt.figure(figsize=(10, 6))
plt.bar(top10_cities["City"], top10_cities["NumStores"])
plt.title("Top 10 Cities with Most Starbucks Stores", fontsize=16)
plt.xlabel("City", fontsize=14)
plt.ylabel("Number of Stores", fontsize=14)
plt.xticks(rotation=45, ha="right")
plt.tight_layout()
plt.show()

请添加图片描述


    import pandas as pd

# 读取数据
starbucks = pd.read_csv('directory.csv')
starbucks['City'].fillna('Unknown', inplace=True)

# 将城市名中的中文汉字转换成拼音
starbucks['City'] = starbucks['City'].apply(lambda x: ''.join(lazy_pinyin(x)))

# 将数据按城市分组,计算每个城市的店铺数量,并按数量降序排列
city_counts = starbucks.groupby('City').size().reset_index(name='Counts')
city_counts.sort_values(by=['Counts'], ascending=False, inplace=True)

# 取出排名前 10 的城市
top_cities = city_counts.head(10)['City'].tolist()

print('星巴克门店数量排名前 10 的城市是:')
print(top_cities)
星巴克门店数量排名前 10 的城市是:

请添加图片描述

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimSun']
import matplotlib.pyplot as plt
import pandas as pd

# 读取数据
data = pd.read_csv('directory.csv')

# 按照城市分组统计门店数量,排序后取前10个城市
city_counts = data.groupby(['City'])['Brand'].count().sort_values(ascending=False)[:10]

# 绘制柱状图
plt.bar(city_counts.index, city_counts.values)

# 添加图表标题和坐标轴标签
plt.title('Top 10 Cities with Most Starbucks Stores in China')
plt.xlabel('City')
plt.ylabel('Number of Stores')

# 显示图像
plt.show()

请添加图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1QRzjjTu-1681833959717)(output_10_0.png)]

import matplotlib.pyplot as plt

# 经营方式及其占比
labels = ['Company Owned', 'Licensed', 'Joint Venture', 'Franchise']
sizes = [65.4, 6.8, 26.3, 1.5]

# 绘制饼状图
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
ax.axis('equal')  # 保证长宽相等,使图像更圆

# 添加图表标题
plt.title('Starbucks Store Ownership Types in China')

# 显示图像
plt.show()

请添加图片描述
星巴克门店数据分析及可视化是一个典型的Python数据分析项目。这个项目主要包括数据清洗和预处理、数据分析、数据可视化以及综合分析等四个主要步骤。

在数据清洗和预处理环节,我们利用Pandas进行数据处理,对数据进行了去重、空值填充、列重命名、数据类型转换等操作。在数据分析环节,我们通过Pandas和Numpy等工具,对门店数量分布、门店类型分布、门店星级分布等指标进行了分析。在数据可视化环节,我们运用Matplotlib和Seaborn等工具,展示了地理信息可视化、柱状图、饼图、条形图等多种数据可视化方式。最后,在综合分析环节,我们对数据分析和可视化的结果进行综合分析和总结,并提出了针对性的建议和优化方案。

这个项目充分展现了Python在数据分析和可视化领域的强大能力,具有很高的实用价值和应用前景。同时,也可以作为学习者进行Python数据分析和可视化实践的好案例,有助于提升他们的数据分析思维和实践能力。
Python有很多数据分析的应用案例,以下几个是比较常见的:

股票价格分析:通过分析历史股票价格数据,预测未来股票价格走势,掌握投资机会。

社交媒体分析:可以对社交媒体上的文本数据进行情感分析、用户画像分析、热门话题分析等,以便更好地了解用户需求和市场趋势。

网站流量分析:可以分析网站的流量来源、转化率、用户行为等指标,从而优化网站运营策略,提高用户体验。

自然语言处理:可以对文本数据进行分词、关键词提取、文本分类、语义分析等操作,为文本数据的挖掘和应用提供基础支持。

金融风控分析:可以利用大数据技术和Python语言,构建风险评估模型,对金融领域的信用风险、市场风险、操作风险等进行分析和预测。

电商销售分析:可以对电商平台上的商品销售情况、用户行为、订单流程等指标进行分析,以便根据市场需求进行产品设计和运营策略的调整。

这些Python分析实例涵盖了不同领域的数据分析应用,为开发者提供了广泛的学习和实践机会。同时,通过这些实例的研究和应用,开发者还可以不断提升数据分析和挖掘的能力和实践经验。

源代码下载以及图片合集

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

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

相关文章

windows下安装emscripten

Qt系列文章目录 文章目录 Qt系列文章目录前言一、Emscripten SDK介绍二、Emscripten SDK安装Get the emsdk repoEnter that directory 前言 由于Web端需要处理大量图像,大量图片的分辨率8k*8k,使用Canvas API(画布)是在HTML5中新…

(二)app自动化脚本录制回放

上一篇:(一)app自动化测试环境搭建(maciosairtest )_airtest环境搭建_要开朗的spookypop的博客-CSDN博客 注:后续都是用IOS设备来介绍自动化测试,安卓就不赘述了。 接上一篇,搭建好自动化测试环境后&#…

如何去阅读Java源码,我总结了18条心法

大家好,我是Martin。 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前,先来简单说一下为什么要去阅读源码,大致可分为以下几点原因: 最直接的原因,就是面试需要,面试喜欢问源码…

Docker实战笔记4-安装jenkins

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/130318679 本文出自【赵彦军的博客】 文章目录 拉取 jenkins 镜像排查问题验证结果总结 拉取 jenkins 镜像 在官方镜像仓库查询 jenkins 镜像 https://hub.docker.com/r/jenkins/jenkins 拉取镜…

linux 安装php8.1 ZipArchive和libzip最新版扩展安装

1、概述 安装前咱们先看下我本地环境 [rootelk php8]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo) [rootelk php8]# [rootelk php8]# ./bin/php -v PHP 8.1.18 (cli) (built: Apr 17 2023 13:15:17) (NTS) Copyright (c) The PHP Group Z…

onnx手动操作

使用onnx.helper可以进行onnx的制造组装操作: 对象描述ValueInfoProto 对象张量名、张量的基本数据类型、张量形状算子节点信息 NodeProto算子名称(可选)、算子类型、输入和输出列表(列表元素为数值元素)GraphProto对象用张量节点和算子节点组成的计算图对象ModelP…

命令模式解读

问题引进 看一个具体的需求 1) 我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作。 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分别控制&…

HTTP相关知识

HTTP HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的 Web 文档通常是由不同的子文档拼接而成…

苹果通讯录怎么备份?手机通讯录备份的方法看这里!

案例:手机通讯录怎么备份? 【友友们,想问下苹果手机的通讯录怎么样才能进行备份?可以解答我的疑惑吗?感谢!】 在日常使用手机过程中,我们经常会遇到误删通讯录的情况。因此,备份通讯…

必须要知道的hive调优知识(上)

Hive数据倾斜以及解决方案 1、什么是数据倾斜 数据倾斜主要表现在,map/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其…

QT QPainter坐标变换绘图实例(五角星绘制)

1、绘制3个五角星的程序 创建一个基于 QWidget 的窗口的应用程序 ,窗体上不放置任何组件。在 Widget 类的构造函数和paintEvent0事件中编写代码,代码内容如下。 Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(…

Keil生成.bin文件

1. 打开OptionsforTarget 对话框: 2 选择User: 3. 根据User页的配置还要配置Output页面,具体如下: 4. 点击OK确定,然后再重新编译则会按照上图中的配置路径生成.bin格式的文件了: Keil自带的fromelf.exe工具…

D. Ehab and the Expected XOR Problem(构造 + 异或和)

Problem - D - Codeforces 给出两个整数nn和xx&#xff0c;构造一个满足以下条件的数组&#xff1a; 对于数组中的任何元素aiai&#xff0c;1≤ai<2n1≤ai<2n&#xff1b; 没有非空的子段&#xff0c;其位数XOR值等于00或xx、 它的长度ll应该是最大的。 一个序列bb是一个…

flv转换mp4最简单方法,3个保姆级教程

flv转换mp4最简单方法你知道吗&#xff1f;今天小编就来分享分享啦&#xff0c;那么先来说说flv视频格式。这个格式大家可能知道的并不多&#xff0c;它最大的特点就是文件体积偏小&#xff0c;多以在线观看的时候加载速度非常快&#xff0c;它有效解决了视频在导入Flash后出现…

实施推荐系统过程中遇到的坑

引言 推荐系统本身很成熟&#xff0c;但是在落地过程当中&#xff0c;仍然会有很多困难。通过经历几个大型推荐系统项目&#xff0c;总结一些经验&#xff0c;帮助大家避坑。 01推荐系统的技术架构 推荐系统模块一般如上图所示&#xff0c;先通过召回模块&#xff0c;将候选…

云擎未来 万象共生:2023移动云万象生态峰会来袭

云融万象&#xff0c;赋能千行百业&#xff0c;云是万物智能的源泉&#xff0c;生态是移动云与万千伙伴共同发展的沃土。 2023移动云万象生态峰会将于4月25日下午在苏州金鸡湖国际会议中心隆重举行&#xff0c;大会荟聚众多重量级嘉宾&#xff0c;共话生态新发展&#xff0c;同…

语音交友app开发中的用户积分系统

引言 在当今数字时代&#xff0c;语音交友app已成为一种流行的社交工具。它们给用户提供了一个平台&#xff0c;在这里他们可以结交新朋友&#xff0c;分享他们的生活和信仰&#xff0c;并建立深厚的人际关系。然而&#xff0c;市场上存在大量的语音交友app&#xff0c;这使得…

小米集团Jira实战:如何在高负载状态下保持Jira性能与运行稳定

2023年4月14日&#xff0c;Atlassian中国合作伙伴企业日上海站圆满落幕。作为Atlassian全球白金合作伙伴、云专业伙伴&#xff0c;龙智参与了此次活动&#xff0c;并邀请小米集团信息技术部SRE薛世英作为演讲嘉宾&#xff0c;分享了小米公司的Jira实战经验。 以“小米集团Jira实…

使用nginx做WSS转为WS

HTTPS 是一种加密文本的超链接&#xff0c;所以需要证书&#xff0c;证书可以 使用域名&#xff0c;在腾讯云等服务商申请 https 证书&#xff0c;证书有 收费的和免费的&#xff0c;免费的有使用期限。 利用域名申请证书后&#xff0c;一般会有4中证书文件&#xff0c; .csr…

QinQ技术与Portal技术

QinQ 802.1Q-in-802.1Q&#xff0c;是一种扩展VLAN标签技术。在城域网中&#xff0c;需要大量的VLAN来隔离区分不同的用户&#xff0c;但是原有的802.1Q只有12个比特&#xff0c;仅能标识4096个VLANQinQ即在802.1Q的基础上&#xff0c;再增加一层外层标签。使得可以标识4096*40…