利用Python和Power BI做Yelp大数据分析项目
利用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大数据分析项目相关推荐
- python powerbi知乎_利用Python调用Power BI REST API
本文是D-BI之Power BI REST API系列第三篇,讲解如何利用一段简单的Python脚本实现Power BI REST API的调用,将使用与上文完全不同的方法 前述 上文<Powe ...
- Python,Power BI,excel,商业数据分析技能详解
[文末领取免费福利] 4月17日,有消息称亚马逊将于本周宣布退出中国,具体的时间待定.此后,亚马逊在中国仅保留两项业务,一是Kindle:二是跨境贸易,主营业务电商将全部退出中国. 有网友表示了震惊, ...
- 用Power BI 做ERP系统报表(小微企业管家)
ERP系统在生产型企业使用很广泛,主要以订单为中心.这是ERP围绕的核心,销售行为产生订单,生产行为处理订单,发货行为完成订单.所以,这三种行为都属于事实表,其他相关表为维度表,如员工表,客户表. 要 ...
- python mysql 分页_利用python对mysql表做全局模糊搜索并分页实例
在写django项目的时候,有的数据没有使用模型管理(数据表是动态添加的),所以要直接使用mysql.前端请求数据的时候可能会指定这几个参数:要请求的页号,页大小,以及检索条件. "&quo ...
- 【山河送书第五期】:《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》参与活动,送书三本!!
<码上行动:利用Python与ChatGPT高效搞定Excel数据分析> 前言 内容提要 本书亮点 购买链接 参与方式 往期赠书回顾: 前言 在过去的 5 年里,Python 已经 3 次 ...
- [转载] 利用python对csv文件进行简单的数据分析
参考链接: Python中的探索性数据分析 利用python对csv文件进行简单的数据分析 在通过爬虫爬取数据后,将数据放到csv文件里,为了方便观察,可以对数据进行简单的分析.下面我将对爬取的51j ...
- 《Microsoft Power BI数据可视化与数据分析》之超市运营数据分析
14.3.1 各省份销售额柱形图 在"字段"窗格中,将"销售额"字段拖到画布上的空白区域,然后将"省/自治区"字段拖动到"可视化 ...
- 大数据分析项目成功的五项基本原则
转载自:http://www.itongji.cn/article/060521H2013.html 大数据市场目前的焦点问题是:从社交网络.APP和市场调查等多种数据源收集海量数据容易,但真正产生商 ...
- 2017最新高清仿驴妈妈旅行网大数据分析项目实战演练培训视频 228课
2017最新高清仿驴妈妈旅行网大数据分析项目实战演练培训视频 228课 CK1925-北风网驴妈妈项目 视频收集不易,请大家珍惜.Q:1225462853 下载地址:https://pan.baidu ...
最新文章
- 比较一个对象,如是这个对象的某一个属性不为空,把他copy到另一个有这个属性的bean中...
- 快速排序(Python实现)
- CTFshow 命令执行 web75
- 日语输入法电脑版_日语输入法下载及使用教程【建议收藏】
- python 泛型_Python插件 - 如何创建C#泛型List
- les物流执行系统_物流LES系统上线啦
- linux mysql v_Linux 主机升级MySQL v5.5 性能提升360%
- Typora markdown公式换行等号对齐_Typora编写博客格式化文档的最佳软件
- Python内置函数sorted()和列表方法sort()的排序原理
- python找工作好不好_Python这么火,为何有人说Python不好找工作?
- 二项分布的期望方差证明
- 全国雾霾大数据,哪里才是桃花源?
- 项目管理(PMP)》项目管理十大知识领域
- 22个Python绘图包,极简总结
- 如何制作移动端静态网页
- 点对点网络带宽测试软件,点对点带宽测试工具iperf
- 中小创势如破竹未来投资机会在哪
- 10天学会PHP之PHP快速入门
- 论文阅读(7)水母游动的流体动力学 - 海洋科学年刊(2021)
- tcpdump for udp