利用Python和Power BI做Yelp大数据分析项目

项目介绍

1.项目需求

寻找影响用户对商户评价和评分的关键因素有哪些?

2.项目难点

数据量比较大,数据清洗后需要重点观察的指标,如review_id记录超过668万条,user_id记录超过163万条,bussiness_id记录超过19万条,funny记录超过322万条,useful记录超过905万条,cool记录超过386万条。

3.分析思路

1.分别从用户和商户两个方面,对其各方面指标进行观察分析;
2.利用多种方法对相关指标的概况进行描述分析,观察极值、均值等;
3.利用关键影响因素等方法,实现项目需求。

4.处理步骤

1.利用Python在Jupyter Notebook中对各数据集进行清洗和处理;
2.利用Power BI对字段作简单处理并作可视化;
3.利用多种方法观察各指标对review的影响,实现项目需求。

处理流程如下:

第一部分:利用Python在Jupyter Notebook中观察、清洗和处理数据。Python代码和运行截图如下所示:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime as dt
from numpy import nan as NA
import warnings
warnings.filterwarnings(“ignore”)#取消警告内容
plt.rcParams[‘font.sans-serif’]=[‘SimHei’] #用来正常显示中文标签
plt.rcParams[‘axes.unicode_minus’]=False #用来正常显示负号

第一步:观察数据集

#依次载入数据集,观察分析项目需求
#business_data=pd.read_csv(“business.csv”)
#business_data.head(2)

#tip_data=pd.read_csv(“tip.csv”)
#tip_data.head(10)

#checkin_data=pd.read_csv(“checkin.csv”)
#checkin_data.head(10)

#user_data=pd.read_csv(“user.csv”)
#user_data.head(10)#考虑到数据集较大,将运行结果截图保存,便于观察

#review_data=pd.read_csv(“review.csv”)
#review_data.head()#考虑到数据集较大,将运行结果截图保存,便于观察

第二步:进行数据清洗

1.对business数据进行处理

#business_data.info()#观察数据概况
business_data.head(3)#观察数据概况
#print(business_data.hours)#观察hours数据


##这段代码主要删除多余列,但保留categories后的数据集
business_data_clean1=business_data.drop(business_data.columns[[2,3,5,10,11,13]], axis=1)#暂时删除不考虑的列
business_data_clean2=business_data_clean1.dropna(axis=1,how=“all”)#删除整行为NaN的行值
#business_data_clean2.info()#观察知主要数据指标比较完整
business_data_clean2.head(10)
#business_data_clean2.to_csv(“business_data_clean2.csv”,index=False)#保存清洗后的数据

##这段代码主要删除categories后,构建一个新的数据集
business_data_clean1=business_data.drop(business_data.columns[[2,3,5,10,11,12,13]], axis=1)#暂时删除不考虑的列
business_data_clean2_new=business_data_clean1.dropna(axis=1,how=“all”)#删除整行为NaN的行值
#business_data_clean2.info()#观察知主要数据指标比较完整
business_data_clean2_new.head(10)
#business_data_clean2_new.to_csv(“business_data_clean2_new.csv”,index=False)#保存清洗后的数据

#观察categories的值
#business_data_clean2.categories.head(10)
#business_data_clean2.categories[1]#观察某一个business_id数据
#print(type(business_data_clean2.categories))
categories_cloud1=business_data_clean2.categories.str.split(",")#用 , 分隔categories
#print(type(categories_cloud1))
categories_cloud1.head()

#分段处理categories
categories_cloud2=categories_cloud1.dropna().apply(pd.value_counts)#删除NaN,并统计各类型的值
categories_cloud2.head()

#观察categories的值
categories_cloud2.info()

#分段处理categories
categories_cloud3=categories_cloud2.unstack()#转换为交叉表
categories_cloud3.head(20)

##分段处理categories,并观察数据
categories_cloud4=categories_cloud3.dropna().reset_index()#重构index
categories_cloud4.info()

##分段处理categories,并观察数据
categories_cloud4=categories_cloud3.dropna().reset_index()#重构index
categories_cloud4.head(20)

#分段处理categories
categories_cloud5=categories_cloud4[“level_0”]#罗列各标签
categories_cloud5.head(10)

#categories_cloud5.to_csv(“categories_cloud5.csv”,index=False)#文件大小偏大
categories_cloud5.to_excel(“categories_cloud5.xlsx”,index=False)#文件大小更小

2.对tip数据进行处理

#tip_data.info()#观察数据概况
tip_data_clean1=tip_data.drop(tip_data.columns[2],axis=1)#暂时删除不考虑的列
tip_data_clean2=tip_data_clean1.dropna(axis=1,how=“all”)#删除整行为NaN的行值
tip_data_clean2.info()#观察知主要数据指标比较完整
#print(tip_data_clean2.date[1])#观察数据的值
#print(type(tip_data_clean2.date[1]))#观察数据类型

##处理日期时间
tip_data_clean2.date=tip_data_clean2.date.str.split(" “,expand=True)#将日期与时间分隔
#tip_data_clean2.date
tip_data_clean2.head()

tip_data_clean2[“date_index”]=pd.to_datetime(tip_data_clean2.date,format=”%Y-%m-%d")#将str转换为datetime
#tip_data_clean2.info()#观察date_index的type
tip_data_clean2.head(10)

tip_data_clean3=tip_data_clean2.drop(tip_data_clean2.columns[2],axis=1)#删除原str的date
tip_data_clean3.head()
tip_data_clean3.to_csv(“tip_data_clean3.csv”,index=False)#保存清洗后的数据

3.对checkin数据进行处理

checkin_data.info()#观察数据概况
checkin_data.head(10)

4.对user数据进行处理

#user_data.info()#观察数据概况
#user_data.head(3)
#print(type(user_data))
#user_data.iloc[1][8]
user_data_clean0=user_data.drop(user_data.columns[[11,12,13,14,15,16,17,18,19,20,21]], axis=1)#暂时删除不考虑的列
user_data_clean0.head(3)


##处理yepling_since,变成日期类型
user_data_clean1=user_data_clean0
user_data_clean1.yelping_since=user_data_clean1.yelping_since.str.split(" “,expand=True)#将日期与时间分隔
user_data_clean1.yelping_since
user_data_clean1[“yepling_since_date”]=pd.to_datetime(user_data_clean1.yelping_since,format=”%Y-%m-%d")#将str转换为datetime
user_data_clean1.info()#观察数据概况

user_data_clean2=user_data_clean1.drop(user_data_clean1.columns[3],axis=1)#删除原str的yelping_since
user_data_clean2.info()#观察数据概况

user_data_clean3=user_data_clean2.drop(user_data_clean2.columns[-2],axis=1)#删除原str的yelping_since_year 误操作先添加了year这一列,后面因换名再删除掉
user_data_clean3.head(10)
#user_data_clean3.info()#观察数据概况
#print(type(user_data_clean3.elite[0]))
#print(type(user_data_clean3.elite[1]))
#user_data_clean3.to_csv(“user_data_clean3-2.csv”,index=False)# NaN 则需要在Power BI中处理
#user_data_clean3.to_excel(“user_data_clean3.xlsx”,index=False)# NaN 则需要在Power BI中处理

另第二种方法:直接在这里处理NaN,推荐第一种方法

#user_data_clean4=user_data_clean3.fillna({“elite”:“0”,“friends”:“0”})#将elite 和 friends中的NaN 填充为 str 型 0,方可计算len
#user_data_clean4.elite[1]#观察数据
#print(type(user_data_clean4.elite[1]))
#user_data_clean4.head(10)#观察数据
#user_data_clean4.to_csv(“user_data_clean4.csv”,index=False)

5.对review数据进行处理

review_data.info()#观察数据概况
review_data.head()

review_data_clean1=review_data.drop(review_data.columns[7],axis=1)#暂时删除不考虑的列
review_data_clean1.date=review_data_clean1.date.str.split(" “,expand=True)#将日期与时间分隔
review_data_clean1.date.head()

review_data_clean1[“date_new”]=pd.to_datetime(review_data_clean1.date,format=”%Y-%m-%d")#将str转换为datetime
review_data_clean1.info()#观察数据概况
review_data_clean1.head()


review_data_clean2=review_data_clean1.drop(review_data_clean1.columns[-2],axis=1)#删除原str的yelping_since
review_data_clean2.info()#观察数据概况
review_data_clean2.head()
#review_data_clean2.to_csv(“review_data_clean2.csv”,index=False)#保存清洗后的数据


#载入已处理后的review新数据集,便于观察
#review_data_clean=pd.read_csv(“review_data_clean2.csv”)
#review_data_clean.info()#观察数据概况
#review_data_clean.head()

6.构建日期索引

#方法一:建议在Excel中直接构建日期索引更简洁
#方法二:不推荐:构建日期索引,作为连接所有表的时间线
t_index=pd.date_range(“2004-10-01”,“2018-12-31”)#用起始时间生成日期范围
time_index=pd.DataFrame(t_index)#将生成的index类型转换为DateFrame类型,才能够保存
time_index.to_csv(“time_index.csv”,index=False)#保存时间索引,注意保存后首行会多出一个索引值0,使用时需要删除
time_index.to_excel(“time_index.xlsx”,index=False)#保存时间索引,注意保存后首行会多出一个索引值0,使用时需要删除

第二部分 利用Power BI作可视化分析,并实现项目需求。



利用Python和Power BI做Yelp大数据分析项目相关推荐

  1. python powerbi知乎_利用Python调用Power BI REST API

    本文是D-BI之Power BI REST API系列第三篇,讲解如何利用一段简单的Python脚本实现Power BI REST API的调用,将使用与上文完全不同的方法 前述 上文<Powe ...

  2. Python,Power BI,excel,商业数据分析技能详解

    [文末领取免费福利] 4月17日,有消息称亚马逊将于本周宣布退出中国,具体的时间待定.此后,亚马逊在中国仅保留两项业务,一是Kindle:二是跨境贸易,主营业务电商将全部退出中国. 有网友表示了震惊, ...

  3. 用Power BI 做ERP系统报表(小微企业管家)

    ERP系统在生产型企业使用很广泛,主要以订单为中心.这是ERP围绕的核心,销售行为产生订单,生产行为处理订单,发货行为完成订单.所以,这三种行为都属于事实表,其他相关表为维度表,如员工表,客户表. 要 ...

  4. python mysql 分页_利用python对mysql表做全局模糊搜索并分页实例

    在写django项目的时候,有的数据没有使用模型管理(数据表是动态添加的),所以要直接使用mysql.前端请求数据的时候可能会指定这几个参数:要请求的页号,页大小,以及检索条件. "&quo ...

  5. 【山河送书第五期】:《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》参与活动,送书三本!!

    <码上行动:利用Python与ChatGPT高效搞定Excel数据分析> 前言 内容提要 本书亮点 购买链接 参与方式 往期赠书回顾: 前言 在过去的 5 年里,Python 已经 3 次 ...

  6. [转载] 利用python对csv文件进行简单的数据分析

    参考链接: Python中的探索性数据分析 利用python对csv文件进行简单的数据分析 在通过爬虫爬取数据后,将数据放到csv文件里,为了方便观察,可以对数据进行简单的分析.下面我将对爬取的51j ...

  7. 《Microsoft Power BI数据可视化与数据分析》之超市运营数据分析

    14.3.1  各省份销售额柱形图 在"字段"窗格中,将"销售额"字段拖到画布上的空白区域,然后将"省/自治区"字段拖动到"可视化 ...

  8. 大数据分析项目成功的五项基本原则

    转载自:http://www.itongji.cn/article/060521H2013.html 大数据市场目前的焦点问题是:从社交网络.APP和市场调查等多种数据源收集海量数据容易,但真正产生商 ...

  9. 2017最新高清仿驴妈妈旅行网大数据分析项目实战演练培训视频 228课

    2017最新高清仿驴妈妈旅行网大数据分析项目实战演练培训视频 228课 CK1925-北风网驴妈妈项目 视频收集不易,请大家珍惜.Q:1225462853 下载地址:https://pan.baidu ...

最新文章

  1. 比较一个对象,如是这个对象的某一个属性不为空,把他copy到另一个有这个属性的bean中...
  2. 快速排序(Python实现)
  3. CTFshow 命令执行 web75
  4. 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
  5. python 泛型_Python插件 - 如何创建C#泛型List
  6. les物流执行系统_物流LES系统上线啦
  7. linux mysql v_Linux 主机升级MySQL v5.5 性能提升360%
  8. Typora markdown公式换行等号对齐_Typora编写博客格式化文档的最佳软件
  9. Python内置函数sorted()和列表方法sort()的排序原理
  10. python找工作好不好_Python这么火,为何有人说Python不好找工作?
  11. 二项分布的期望方差证明
  12. 全国雾霾大数据,哪里才是桃花源?
  13. 项目管理(PMP)》项目管理十大知识领域
  14. 22个Python绘图包,极简总结
  15. 如何制作移动端静态网页
  16. 点对点网络带宽测试软件,点对点带宽测试工具iperf
  17. 中小创势如破竹未来投资机会在哪
  18. 10天学会PHP之PHP快速入门
  19. 论文阅读(7)水母游动的流体动力学 - 海洋科学年刊(2021)
  20. tcpdump for udp

热门文章

  1. pd17虚拟机运行win11黑屏的解决方法
  2. 对状压dp的一点理解
  3. xmlstarlet_开始使用XMLStarlet
  4. 数据库课程设计-学生选课管理系统(实训报告+答辩ppt+源码+sql文件+打包好的程序)springboot项目-javaweb
  5. 富士通FRAM应用领域大合集
  6. 联想笔记本怎么找计算机放桌面,联想笔记本进不去桌面怎么办
  7. Linux vi 经验总结
  8. 深度剖析:手机指纹的马奇诺防线
  9. 帷幄SDP空间数据平台:智慧餐厅数字化运营方案 餐饮企业数字化运营
  10. 面试问题(java cas有什么优点和问题)