从0开始,教你做数据分析19篇

浏览: 1300

image.png

这一篇很早就已经写好,但是我忘记发了,今天自己看自己的订阅号才发现,呵呵……

之前对于我的去向有很多的猜测,我先澄清一下,我并没有去任何一家培训机构,我自己现在也不打算做培训,我也不打算做自媒体。我本是电商人,2013年在给【孵化班】上课的时候,我就说过,哪一天我不想讲课了,就会回来开店做运营。

现在事实就是这样。

虽然做培训可以快速变现,但这不是我的菜,我喜欢分享但我更喜欢做一些实在的事情。

我仍然看好培训市场,但我看好的是行业的垂直培训,而不是现在的通用型的培训。

行业经验+运营经验才足够靠谱。我喜欢也看好这种靠谱的东西。

扯远了,不知道有没有扯到蛋……

回到主题,今天还是讲数据分析。

有朋友在我微信留言,做数据分析的时候经常为拿不到数据而苦恼,感慨巧妇难为无米之炊。问我说,想做到和我一样要什么数据自己写脚本爬取,需要学多久。

这个问题,其实我也不知道。快的人一两个月,慢的人是无期徒刑……

做什么事情,我建议还是随自己的兴趣走,有兴趣的,就买本参考书自己学习一下,像我用的VBA是很基础的,参考书已经很成熟了,随便在亚马逊买一本大全去练习就好了,我建议是先借着参考书抄我之前写过的表格,这应该是最快的学习路线了。

另外,我发现很多店铺的数据分析专员就是做记录的工作,每天记录一些数据,而且是散开的,并没有把数据汇总到一张工作表里面,就像下图所示。

image.png

等到哪天要分析的时候,就蛋疼了,可能要花个半天的时间把每一天的数据汇总到一张工作表里面,这就扯到蛋了。其实只要写个宏,就可以把所有的数据自动汇总起来。

这个环节在数据挖掘里面算是ETL(包含数据抽取、清洗、转换、加载)的过程,很多时候会出现这种需要的数据是分散的,可能是在同一张工作簿里面,但分散在不同的工作表;也可能是分散在不同的工作簿里面。

很多工具都可以对数据做ETL,我接触过的比较专业的工具应该是kattle。我们一般用不到专门做ETL的工具,像MySQL等数据库是自带这块功能的,Excel里面也有数据库,Excel Power BI的成员之一:POWERPIVOT。

POWERPIVOT是工作簿的外挂,当我们工作簿放不下数据的时候(Excel2013 是有1048576*16384的数据量),就可以使用POWERPIVOT,而且相同的数据量下,放在POWERPIVOT里面占用的空间要小很多,而且运算速度也快很多,如果不会用SQL的朋友,可以考虑使用POWERPIVOT来处理大量的数据。

一个不小心,又扯远了,我们回来。

今天先解决上面的简单问题,一次讲太多这篇文章就白写了,没人看%>_<%。

首先文章使用到的示例数据集在我网盘里面,有需要的自己找。

先观察一下数据,这里假定每一张工作表的格式都一致,如果有做到记录的数据每张工作表都不一样的格式的话,那我也是醉了……

image.png

上面的数据是我用RAND()函数生成的,字段也是随便设置的。

下面我们打开Visual Basic,打开【开发工具】选项卡的方法就不累述了,还不会的可以在公众号回复【112】

image.png

进入Visual Basic后,可以看到左上角的资源管理器。

image.png

我们可以观察到,有8张表,从Sheet1(4月1日)开始,按次序到Sheet8,原因是我在操作的过程中是按次序新建工作表,没有删除过工作表,你们自己的文件就可能不是按这个次序的。括号前面的是表的对象名称,不可以乱取,一般都不改的,要改也是在工程里面改动。括号里面是工作表对外的名字,是自己可以随便重命名的。两个名字在调用的时候只是写法不同,但因为括号里面的名字是随时可以改动,所以一般在VB里面调用的时候不用括号里面的名字。

第一步先插入一个模块。

image.png

然后写入下列代码

==============================

Sub hz()

Sheets.Add(Sheets(1)).Name = "工作簿汇总"'在第一张工作表的前面新建一张工作表,名字设定为【工作簿汇总】

i = Sheets.Count'获取工作表的数量

l = 1

m = 1

For j = 2 To i'j=2代表从第二张工作表开始到最后一张工作表

k = Sheets(j).[A65536].End(xlUp).Row

Sheets(j).Rows(l & ":" & k).Copy Sheets("工作簿汇总").Cells(m, 1)'复制数据

Sheets("工作簿汇总").Range("L" & m & ":" & "L" & m + k - 1) = Sheets(j).Name

m = Sheets("工作簿汇总").[A65536].End(xlUp).Row + 1

l = 2

Next j

Sheets("工作簿汇总").Cells(1, 12) = "日期"

End Sub

=========================

写好代码后,在开发工具里面运行宏

image.png

image.png

运行后就可以得到结果

image.png

这里并不涉及数据结构的变换,因为用的是【copy】方法

Sheets(j).Rows(l & ":" & k).Copy Sheets("工作簿汇总").Cells(m, 1)'复制数据

这条语句跟我们手动操作的复制粘贴是一样的效果的。

如果需要变换结构的话,就不能用copy方法。

比如下面这种结构

image.png

不同的结构在做分析的时候便捷程度不同,如果是要用统计方法或者数据挖掘的方式,则需要根据算法要求的格式去变换。一般使用比较频繁的就是以上两种,第一种是扁平结构,每个维度都是独立的字段,是做数据挖掘的时候常用的结构。第二种的字段是固定的,会随着数据的增加而增加观测值,在用数据透视表的时候会方便一些。

下面附上把扁平型结构的数据变换成窄长型的数据结构的代码

=======================

Sub 修改格式()

i = Sheet9.[A65536].End(xlUp).Row'Sheet9里面是扁平结构的数据

j = Sheet9.[IV1].End(xlToLeft).Column - 1

c = 2

Sheet10.Cells(1, 1) = "宝贝"

Sheet10.Cells(1, 2) = "数据"

Sheet10.Cells(1, 3) = "维度"

Sheet10.Cells(1, 4) = "时间"

For a = 2 To j

For b = 2 To i

Sheet10.Cells(c, 1) = Sheet9.Cells(b, 1)

Sheet10.Cells(c, 2) = Sheet9.Cells(b, a)

Sheet10.Cells(c, 3) = Sheet9.Cells(1, a)

Sheet10.Cells(c, 4) = Sheet9.Cells(b, 12)

c = c + 1

Next b

Next a

End Sub

=======================

下一篇会跟大家讲如何用EXCEL的POWERPIVOT来分析“大”数据。


PS:回复【文章】二字, 可以查看零一历史发布过的文章和分享的资料。

关注零一,请扫描二维码

推荐 0
本文由 零一老师 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册