数据分析实际案例之:pandas在餐厅评分数据中的使用

简介: 数据分析实际案例之:pandas在餐厅评分数据中的使用

目录



简介


为了更好的熟练掌握pandas在实际数据分析中的应用,今天我们再介绍一下怎么使用pandas做美国餐厅评分数据的分析。


餐厅评分数据简介


数据的来源是UCI ML Repository,包含了一千多条数据,有5个属性,分别是:


userID: 用户ID

placeID:餐厅ID

rating:总体评分

food_rating:食物评分

service_rating:服务评分


我们使用pandas来读取数据:


import numpy as np
path = '../data/restaurant_rating_final.csv'
df = pd.read_csv(path)
df


userID placeID rating food_rating service_rating
0 U1077 135085 2 2 2
1 U1077 135038 2 2 1
2 U1077 132825 2 2 2
3 U1077 135060 1 2 2
4 U1068 135104 1 1 2
... ... ... ... ... ...
1156 U1043 132630 1 1 1
1157 U1011 132715 1 1 0
1158 U1068 132733 1 1 0
1159 U1068 132594 1 1 1
1160 U1068 132660 0 0 0


1161 rows × 5 columns


分析评分数据


如果我们关注的是不同餐厅的总评分和食物评分,我们可以先看下这些餐厅评分的平均数,这里我们使用pivot_table方法:


mean_ratings = df.pivot_table(values=['rating','food_rating'], index='placeID',
                                 aggfunc='mean')
mean_ratings[:5]


food_rating rating
placeID
132560 1.00 0.50
132561 1.00 0.75
132564 1.25 1.25
132572 1.00 1.00
132583 1.00 1.00


然后再看一下各个placeID,投票人数的统计:


ratings_by_place = df.groupby('placeID').size()
ratings_by_place[:10]


placeID
132560     4
132561     4
132564     4
132572    15
132583     4
132584     6
132594     5
132608     6
132609     5
132613     6
dtype: int64


如果投票人数太少,那么这些数据其实是不客观的,我们来挑选一下投票人数超过4个的餐厅:


active_place = ratings_by_place.index[ratings_by_place >= 4]
active_place


Int64Index([132560, 132561, 132564, 132572, 132583, 132584, 132594, 132608,
            132609, 132613,
            ...
            135080, 135081, 135082, 135085, 135086, 135088, 135104, 135106,
            135108, 135109],
           dtype='int64', name='placeID', length=124)


选择这些餐厅的平均评分数据:


mean_ratings = mean_ratings.loc[active_place]
mean_ratings


food_rating rating
placeID
132560 1.000000 0.500000
132561 1.000000 0.750000
132564 1.250000 1.250000
132572 1.000000 1.000000
132583 1.000000 1.000000
... ... ...
135088 1.166667 1.000000
135104 1.428571 0.857143
135106 1.200000 1.200000
135108 1.181818 1.181818
135109 1.250000 1.000000


124 rows × 2 columns


对rating进行排序,选择评分最高的10个:


top_ratings = mean_ratings.sort_values(by='rating', ascending=False)
top_ratings[:10]


food_rating rating
placeID
132955 1.800000 2.000000
135034 2.000000 2.000000
134986 2.000000 2.000000
132922 1.500000 1.833333
132755 2.000000 1.800000
135074 1.750000 1.750000
135013 2.000000 1.750000
134976 1.750000 1.750000
135055 1.714286 1.714286
135075 1.692308 1.692308


我们还可以计算平均总评分和平均食物评分的差值,并以一栏diff进行保存:


mean_ratings['diff'] = mean_ratings['rating'] - mean_ratings['food_rating']
sorted_by_diff = mean_ratings.sort_values(by='diff')
sorted_by_diff[:10]


food_rating rating diff
placeID
132667 2.000000 1.250000 -0.750000
132594 1.200000 0.600000 -0.600000
132858 1.400000 0.800000 -0.600000
135104 1.428571 0.857143 -0.571429
132560 1.000000 0.500000 -0.500000
135027 1.375000 0.875000 -0.500000
132740 1.250000 0.750000 -0.500000
134992 1.500000 1.000000 -0.500000
132706 1.250000 0.750000 -0.500000
132870 1.000000 0.600000 -0.400000


将数据进行反转,选择差距最大的前10:


sorted_by_diff[::-1][:10]


food_rating rating diff
placeID
134987 0.500000 1.000000 0.500000
132937 1.000000 1.500000 0.500000
135066 1.000000 1.500000 0.500000
132851 1.000000 1.428571 0.428571
135049 0.600000 1.000000 0.400000
132922 1.500000 1.833333 0.333333
135030 1.333333 1.583333 0.250000
135063 1.000000 1.250000 0.250000
132626 1.000000 1.250000 0.250000
135000 1.000000 1.250000 0.250000


计算rating的标准差,并选择最大的前10个:


# Standard deviation of rating grouped by placeID
rating_std_by_place = df.groupby('placeID')['rating'].std()
# Filter down to active_titles
rating_std_by_place = rating_std_by_place.loc[active_place]
# Order Series by value in descending order
rating_std_by_place.sort_values(ascending=False)[:10]


placeID
134987    1.154701
135049    1.000000
134983    1.000000
135053    0.991031
135027    0.991031
132847    0.983192
132767    0.983192
132884    0.983192
135082    0.971825
132706    0.957427
Name: rating, dtype: float64


本文已收录于 http://www.flydean.com/02-pandas-restaurant/

相关文章
|
2月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
431 0
|
5月前
|
自然语言处理 数据挖掘 数据处理
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
本文将介绍 10 个在数据处理中至关重要的 Pandas 技术模式。这些模式能够显著减少调试时间,提升代码的可维护性,并构建更加清晰的数据处理流水线。
202 3
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
|
5月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
7月前
|
数据采集 安全 数据挖掘
Pandas数据合并:10种高效连接技巧与常见问题
在数据分析中,数据合并是常见且关键的步骤。本文针对合并来自多个来源的数据集时可能遇到的问题,如列丢失、重复记录等,提供系统解决方案。基于对超1000个复杂数据集的分析经验,总结了10种关键技术,涵盖Pandas库中`merge`和`join`函数的使用方法。内容包括基本合并、左连接、右连接、外连接、基于索引连接、多键合并、数据拼接、交叉连接、后缀管理和合并验证等场景。通过实际案例与技术原理解析,帮助用户高效准确地完成数据整合任务,提升数据分析效率。
663 13
Pandas数据合并:10种高效连接技巧与常见问题
|
4月前
|
SQL 数据挖掘 BI
数据分析的尽头,是跳出数据看数据!
当前许多企业在数据分析上投入大量资源,却常陷入“数据越看越细,业务越看越虚”的困境。报表繁杂、指标众多,但决策难、行动少,分析流于形式。真正有价值的数据分析,不在于图表多漂亮,而在于能否带来洞察、推动决策、指导行动。本文探讨如何跳出数据、回归业务场景,实现数据驱动的有效落地。
|
10月前
|
SQL 人工智能 数据可视化
数据团队必读:智能数据分析文档(DataV Note)五种高效工作模式
数据项目复杂,涉及代码、数据、运行环境等多部分。随着AI发展,数据科学团队面临挑战。协作式数据文档(如阿里云DataV Note)成为提升效率的关键工具。它支持跨角色协同、异构数据处理、多语言分析及高效沟通,帮助创建知识库,实现可重现的数据科学过程,并通过一键分享报告促进数据驱动决策。未来,大模型AI将进一步增强其功能,如智能绘图、总结探索、NLP2SQL/Python和AutoReport,为数据分析带来更多可能。
596 142
|
10月前
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
230 12
|
10月前
|
消息中间件 数据挖掘 数据处理
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
219 17
|
10月前
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
294 8
|
9月前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
893 0