数据分析从零开始实战 | 基础篇(六)

简介: 数据分析从零开始实战 | 基础篇(六)

简说Python,号主老表,Python终身学习者,数据分析爱好者,从18年开始分享Python知识,原创文章227篇,写过Python、SQL、Excel入门文章,也写过Web开发、数据分析文章,老表还总结整理了一份2022Python学习资料和电子书资源,关注后私信回复:2022 即可领取。

零、写在前面

前面四篇文章讲了数据分析虚拟环境创建和pandas读写CSV、TSV、JSON、Excel、XML格式的数据,HTML页面读取,数据库相关操作,今天我们继续探索pandas。


数据分析从零开始实战

数据分析从零开始实战 | 基础篇(一)

数据分析从零开始实战 | 基础篇(二)

数据分析从零开始实战 | 基础篇(三)

数据分析从零开始实战 | 基础篇(四)

数据分析从零开始实战 | 基础篇(五)



本系列学习笔记参考书籍:《数据分析实战》托马兹·卓巴斯

一、基本知识概要

1.数据转换工具OpenRefine介绍
2.数据转换工具OpenRefine安装
3.数据转换工具OpenRefine基本使用
4.数据转换工具OpenRefine进阶使用

二、开始动手动脑

1、数据转换工具OpenRefine介绍

OpenRefine是一个数据转换工具(IDTS),Metaweb公司2009年发布的一个开源软件。Google在2010年收购了Metaweb,把项目的名称从Freebase Gridworks改成了Google Refine,后来Google开放其了源码,并改名为OpenRefine

其能够对数据进行可视化操作处理。它很像传统的excel软件,但其工作方式更像数据库,因其并不是处理单独的单元格,而是处理列和字段。这意味着OpenRefine对于增加新行内容表现不佳,但对于探索、清洗、整合数据却功能强大,主要用于快速筛选数据、清理数据、排重、分析时间维度上的分布与趋势等。

2、数据转换工具OpenRefine安装

(1)下载地址:http://openrefine.org/download.html
OpenRefine的主页,"A free, open source, powerful tool for working with messy data",一个免费的开源的强大的,处理杂乱的数据的工具。

image.png

这里我下载的是OpenRefine 3.2 beta(3.2测试版),因为觉得比较新,所以下载来试试。
我的电脑是windows的,所以下载的是Windows kit,大家根据自己的开发环境下载,我们可以看到这个软件还挺大的有95.9MB。


image.png

(2)下载好后,解压下载好的压缩包,然后点击openrefine.exe文件,即可启动服务。


image.png


(3)在第二步中我们可以看出服务地址是http://127.0.0.1:3333/,浏览器内访问即可打开OpenRefine,如果你和老表(小编本人绰号)一样英语不好的话,我建议你使用谷歌浏览器打开,可以自动翻译页面内容,准确率还是很高的。

image.png


image.png


3、数据转换工具OpenRefine基本使用

(1)按上述步骤打卡OpenRefine后,第一步就是导入文件,这里书中给的示例文件是:realEstate_trans_dirty.csv,点击选择文件,选择好文件后,点击打开就行。

image.png


(2)数据导入成功后,点击下一个(Next)后数据就完全导入成功了,如下图,我们可以看到,OpenRefine支持多种文件格式数据读入,如:基于CSV / TSV /分隔符的文件、基于行的文本文件、固定宽度的字段文本文件、PC轴文本文件、JSON文件、MARC文件、JSON-LD文件、RDF / N3文件、RDF / N-Triples文件、Excel文件等。
另外需要注意的是数据导入后,是被当做文本格式的,所以后续数据分析前还要把数据行的格式转变为数值型。(如图片中的:beds、baths等列)

image.png


上一步中我们已经导入好了数据,点击右上角的Create Project,创建项目,接下来就可以开始对数据进行初步的处理了。

image.png


(3)数据格式转换:直接转换的(如:beds、baths列)
示例:将beds列的数据转换为数值类型
a、点击beds左边的小三角形
b、点击 Edit cells(编辑列)
c、点击 Common transforms(普通转换)
d、选择 To number(表示转换成数值类型)
我们可以看到上面还可以转换成其他格式,比如 To data(日期类型)、To text(文本类型) 、To nul1(空值)、 To uppercase(大写)等。

image.png


转换成功。为后续数据分析做准备,我们依次把baths、sq__ft、price、latitude、longitude这几行按上面方法转换成数值类型。

image.png


(4)数据格式转换:需处理再转换的(如:sale_date列)
sale_date列,数据是类似:Wed May 21 00:00:00 EDT 2008这样的,我们希望这样的数据变得更加方便观察,变成某种适合的数据类型,明显不应该是字符型,所以我们把其转变成日期类型,这需要一点点技巧,不是上面的Common transforms能实现的。
示例:将sale_date列的数据转换为日期类型
a、点击sale_date左边的小三角形
b、点击 Edit cells(编辑列)
c、点击 Transform…(转换…)

image.png


d、选择GREL(谷歌优化表达语言)转换日期。

image.png


# 原始数据
Wed May 21 00:00:00 EDT 2008
# 修改后数据
2008-05-21T00:00:00Z
# 使用GREL语句
substring(value, 4, 10) + ',' + substring(value, 24, 29).toDate()
# 解释
'''
vaule表示数值(内容),即 Wed May 21 00:00:00 EDT 2008
substring表示分割字符串函数
第一个参数是要分割的字符串,即 Wed May 21 00:00:00 EDT 2008
第二个参数是分割起始符的下标,4 表示的是 M的下标
第三个参数是分割终止符的下标,10表示的是21后的空格字符的下标
剪切出字符串后,调用 toDate()把提取出来的数据转换成日期(date)类型。
'''


image.png

到这里,我们就粗略的对数据进行了第一步处理。

4、数据转换工具OpenRefine进阶使用

理解数据是建立成功模型的前提。     ----来自《数据分析实战》

(1)OpenRefine Facet之文本facet

首先,所谓facet,表面意思是面状、面片,在这里我们可以理解为过滤器,可以使你快速的选择某些行或直接探索数据。

文本facet可以让你快速地对数据集中文本列的分布有一个感觉,也就是了解文本数据在一些维度上的信息。
示例: 统计
city_state_zip(表示意思是:城市邮政编码)中那个城市出现次数最多
a、点击
city_state_zip左边的小倒的三角形
b、点击
Facet- Text facet

image.png


我们仔细观察显示结果会发现,有很多其实是一个城市,只是所处州邮政编码不同导致统计的时候误认为是两个城市了,所以我们在统计数据前需要处理一下数据。

image.png


这次我们点击Facet后选择 Custom text facet(自定义文本过滤器)。

image.png


用一句GREL表达式处理数据,提取出city_state_zip中的城市名。


'''表达式解析'''
value.match("(.*?) CA.*?")[0]
'''
vaule表示数值(内容),即 SACRAMENTO CA 95823
match表示正则提取函数
参数是正则匹配模式字符串,表示意思是 取出" CA"之前的字符串,即城市名
'''

image.png

原数据是记录2008.5.15-2008.5.21之间商品的交易信息,通过这个结果我们可以明显看出,在这期间SACRAMENTO交易次数是最多的,其次是ELK GROVE,这比我们在Python里用代码处理数据计数好多了,当然,前提是你能比较熟练的使用OpenRefine。


image.png


(2)OpenRefine Facet之数字facet

示例: 查看价格( price)分布
a、点击 price左边的倒三角形
b、点击 Facet-> Numeric facet
我们发现原数据中有108行price是空白的,有值的数据量有1067个,价格区间在0-890000,大量数据靠左,我们进行进一步确定数据集中处,可以拖拽两边的滑动块,发现价格集中在60000 — 400000。


image.png

(3)OpenRefine Facet还有 时间线facet和散布图facet

时间线facet(Timeline facet):可以看到不同时间点的数据量情况。
散布图facet(
Scatterplot facet):可以分析数据集中数字型变量间的相互作用。

具体使用方法同上述的文本Facet和数字Facet,可以从不同角度去观察数据,让数据有更好的呈现状态。

(4)OpenRefine 数据排重

这里我们对stree列处理,因为同一套房子不会在一周内同时卖出两次,如果有相同的stree就表示是重复的数据。
a、点击 stree左边的倒三角形
b、点击 Edit cells-> Blank down
Blank down表示:使重复数据的位置值变成空值(用于去除重复数据);
Fill down表示:如果某数据位置为空值,则使用上一行的数据值填补该位置(用于填补空缺数据)。

image.png



image.png


(5)OpenRefine 快速去除空白、缺失数据

如何去除这些分布在数据中的空白行呢?
我们可以创建一个空白数值过滤器。
a、点击
stree左边的小倒的三角形
b、点击
Facet- > Customized facets ->Facet by blank

这样就可以筛选出所有stree值空缺的行。

image.png


c、点击 All左边的小倒的三角形
d、点击
Edit rows- > Remove all matching rows

既可以删除所有空白行。

image.png


另外,在OpenRefine里GREL语法是比较重要的,也是一种编程语言,具体语法请查看GREL-Functions Github地址:https://github.com/OpenRefine/OpenRefine/wiki/GREL-Functions


相关文章
|
1月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
79 5
|
3月前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
57 1
|
2月前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
200 0
|
2月前
|
SQL 数据采集 数据可视化
深入 Python 数据分析:高级技术与实战应用
本文系统地介绍了Python在高级数据分析中的应用,涵盖数据读取、预处理、探索及可视化等关键环节,并详细展示了聚类分析、PCA、时间序列分析等高级技术。通过实际案例,帮助读者掌握解决复杂问题的方法,提升数据分析技能。使用pandas、matplotlib、seaborn及sklearn等库,提供了丰富的代码示例,便于实践操作。
170 64
|
1月前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
3月前
|
数据挖掘 Python
Pandas实战(1):电商购物用户行为数据分析
Pandas实战(1):电商购物用户行为数据分析
117 1
|
3月前
|
数据挖掘 Python
Pandas实战(3):电商购物用户行为数据分析
Pandas实战(3):电商购物用户行为数据分析
130 1
|
3月前
|
数据挖掘 Python
Pandas实战(2):电商购物用户行为数据分析
Pandas实战(2):电商购物用户行为数据分析
74 1
|
2月前
|
数据采集 数据可视化 数据挖掘
Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
【10月更文挑战第3天】Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
133 0
|
4月前
|
数据采集 算法 数据挖掘
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战
LinkedIn 对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25 项技能中,数据挖掘排名第一。那么数据挖掘是什么? 数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。 今天给小伙伴们分享的Python数据分析与数据挖掘手册是10余位数据挖掘领域资深专家和科研人员,10余年大数据挖掘咨询与实施经验结晶。从数据挖掘的应用出发,以电力、
10余位大佬+10余年经验的结晶:Python数据分析与挖掘实战