‘壹’ 如何学习数据分析
首先我说说这两种方向共同需要的技术面,当然以下只是按照数据分析入门的标准来写:
1. SQL(数据库),我们都知道数据分析师每天都会处理海量的数据,这些数据来源于数据库,那么怎么从数据库取数据?如何建立两表、三表之间的关系?怎么取到自己想要的特定的数据?等等这些数据选择问题就是你首要考虑的问题,而这些问题都是通过SQL解决的,所以SQL是数据分析的最基础的技能,零基础学习SQL可以阅读这里:SQL教程_w3cschool
2. 统计学基础,数据分析的前提要对数据有感知,数据如何收集?数据整体分布是怎样的?如果有时间维度的话随着时间的变化是怎样的?数据的平均值是什么?数据的最大值最小值指什么?数据相关与回归、时间序列分析和预测等等,这些在网易公开课上倒是有不错的教程:哈里斯堡社区大学公开课:统计学入门_全24集_网易公开课
3.Python或者R的基础,这一点是必备项也是加分项,在数据挖掘方向是必备项,语言相比较工具更加灵活也更加实用。至于学习资料:R语言我不太清楚,Python方向可以在廖雪峰廖老师的博客里看Python教程,面向零基础。
再说说两者有区别的技能树:
1.数据挖掘向
我先打个前哨,想要在一两个月内快速成为数据挖掘向的数据分析师基本不可能,做数据挖掘必须要底子深基础牢,编程语言基础、算法、数据结构、统计学知识样样不能少,而这些不是你自习一两个月就能完全掌握的。
所以想做数据挖掘方向的,一定要花时间把软件工程专业学习的计算机基础课程看完,这些课程包括:数据结构、算法,可以在这里一探究竟:如何学习数据结构?
在此之后你可以动手用Python去尝试实现数据挖掘的十八大算法:数据挖掘18大算法实现以及其他相关经典DM算法
2.产品经理向
产品经理向需要你对业务感知能力强,对数据十分敏感,掌握常用的一些业务分析模型套路,企业经常招聘的岗位是:商业分析、数据运营、用户研究、策略分析等等。这方面的学习书籍就很多,看得越多掌握的方法越多,我说几本我看过的或者很多人推荐的书籍:《增长黑客》、《网站分析实战》、《精益数据分析》、《深入浅出数据分析》、《啤酒与尿布》、《数据之魅》、《Storytelling with Data》
‘贰’ 录入好的调查问卷,该如何进行数据分析
SPSS分析调查问卷数据的方法
当我们的调查问卷在把调查数据拿回来后,我们该做的工作就是用相关的统计软件进行处理,在此,我们以spss为处理软件,来简要说明一下问卷的处理过程,它的过程大致可分为四个过程:定义变量﹑数据录入﹑统计分析和结果保存.下面将从这四个方面来对问卷的处理做详细的介绍.
Spss处理:
第一步:定义变量
大多数情况下我们需要从头定义变量,在打开SPSS后,我们可以看到和excel相似的界面,在界面的左下方可以看到Data View, Variable View两个标签,只需单击左下方的Variable View标签就可以切换到变量定义界面开始定义新变量。在表格上方可以看到一个变量要设置如下几项:name(变量名)、type(变量类型)、width(变量值的宽度)、decimals(小数位) 、label(变量标签) 、Values(定义具体变量值的标签)、Missing(定义变量缺失值)、Colomns(定义显示列宽)、Align(定义显示对齐方式)、Measure(定义变量类型是连续、有序分类还是无序分类).
我们知道在spss中,我们可以把一份问卷上面的每一个问题设为一个变量,这样一份问卷有多少个问题就要有多少个变量与之对应,每一个问题的答案即为变量的取值.现在我们以问卷第一个问题为例来说明变量的设置.为了便于说明,可假设此题为:
1.请问你的年龄属于下面哪一个年龄段( )?
A:20—29 B:30—39 C:40—49 D:50--59
那么我们的变量设置可如下: name即变量名为1,type即类型可根据答案的类型设置,答案我们可以用1、2、3、4来代替A、B、C、D,所以我们选择数字型的,即选择Numeric, width宽度为4,decimals即小数位数位为0(因为答案没有小数点),label即变量标签为“年龄段查询”。Values用于定义具体变量值的标签,单击Value框右半部的省略号,会弹出变量值标签对话框,在第一个文本框里输入1,第二个输入20—29,然后单击添加即可.同样道理我们可做如下设置,即1=20—29、2=30—39、3=40—49、4=50--59;Missing,用于定义变量缺失值, 单击missing框右侧的省略号,会弹出缺失值对话框, 界面上有一列三个单选钮,默认值为最上方的“无缺失值”;第二项为“不连续缺失值”,最多可以定义3个值;最后一项为“缺失值范围加可选的一个缺失值”,在此我们不设置缺省值,所以选中第一项如图;Colomns,定义显示列宽,可自己根据实际情况设置;Align,定义显示对齐方式,有居左、居右、居中三种方式;Measure,定义变量类型是连续、有序分类还是无序分类。
以上为问卷中常见的单项选择题型的变量设置,下面将对一些特殊情况的变量设置也作一下说明.
1.开放式题型的设置:诸如你所在的省份是_____这样的填空题即为开放题,设置这些变量的时候只需要将Value 、Missing两项不设置即可.
2.多选题的变量设置:这类题型的设置有两种方法即多重二分法和多重分类法,在这里我们只对多重二分法进行介绍.这种方法的基本思想是把该题每一个选项设置成一个变量,然后将每一个选项拆分为两个选项项,即选中该项和不选中该项.现在举例来说明在spss中的具体操作.比如如下一例:
请问您通常获取新闻的方式有哪些( )
1 报纸 2 杂志 3 电视 4 收音机 5 网络
在spss中设置变量时可为此题设置五个变量,假如此题为问卷第三题,那么变量名分别为3_1、3_2、3_3、3_4、3_5,然后每一个选项有两个选项选中和不选中,只需在Value一项中为每一个变量设置成1=选中此项、0=不选中此项即可.
使用该窗口,我们可以把一个问卷中的所有问题作为变量在这个窗口中一次定义。
到此,我们的定义变量的工作就基本上可以结束了.下面我们要作就是数据的录入了.首先,我们要回到数据录入窗口,这很简单,只要我们点击软件左下方的Data View标签就可以了.
第二步:数据录入
Spss数据录入有很多方式,大致有一下几种:
1.读取SPSS格式的数据
2.读取Excel等格式的数据
3.读取文本数据(Fixed和Delimiter)
4.读取数据库格式数据(分如下两步)
(1)配置ODBC (2)在SPSS中通过ODBC和数据库进行
但是对于问卷的数据录入其实很简单,只要在spss的数据录入窗口中直接输入就可以了,只是在这里有几点注意的事项需要说明一下.
1. 在数据录入窗口,我们可以看到有一个表格,这个表格中的每一行代表一份问卷,我们也称为一个个案.
2. 在数据录入窗口中,我们可以看到表格上方出现了1、2、3、4、5…….的标签名,这其实是我们在第一步定义变量中,我们为问卷的每一个问题取的变量名,即1代表第一题,2代表第二题.以次类推.我们只需要在变量名下面输入对应问题的答案即可完成问卷的数据录入.比如上述年龄段查询的例题,如果问卷上勾选了A答案,我们在1下面输入1就行了(不要忘记我们通常是用1、2、3、4来代替A、B、C、D的).
3.我们知道一行代表一份问卷,所以有几分问卷,就要有几行的数据.
在数据录入完成后,我们要做的就是我们的关键部分,即问卷的统计分析了,因为这时我们已经把问卷中的数据录入我们的软件中了.
第三步:统计分析
有了数据,可以利用SPSS的各种分析方法进行分析,但选择何种统计分析方法,即调用哪个统计分析过程,是得到正确分析结果的关键。这要根据我们的问卷调查的目的和我们想要什么样的结果来选择.SPSS有数值分析和作图分析两类方法.
1.作图分析:
在SPSS中,除了生存分析所用的生存曲线图被整合到Analyze菜单中外,其他的统计绘图功能均放置在graph菜单中。该菜单具体分为以下几部分::
(1)Gallery:相当于一个自学向导,将统计绘图功能做了简单的介绍,初学者可以通过它对SPSS的绘图能力有一个大致的了解。
(2)Interactive:交互式统计图。
(3)Map:统计地图。
(4)下方的其他菜单项是我们最为常用的普通统计图,具体来说有:
条图
散点图
线图
直方图
饼图
面积图
箱式图
正态Q-Q图
正态P-P图
质量控制图
Pareto图
自回归曲线图
高低图
交互相关图
序列图
频谱图
误差线图
作图分析简单易懂,一目了然,我们可根据需要来选择我们需要作的图形,一般来讲,我们较常用的有条图,直方图,正态图,散点图,饼图等等,具体操作很简单,大家可参阅相关书籍,作图分析更多情况下是和数值分析相结合来对试卷进行分析的,这样的效果更好.
2.数值分析:
SPSS 数值统计分析过程均在Analyze菜单中,包括:
(1)、Reports和Descriptive Statistics:又称为基本统计分析.基本统计分析是进行其他更深入的统计分析的前提,通过基本统计分析,用户可以对分析数据的总体特征有比较准确的把握,从而选择更为深入的分析方法对分析对象进行研究。Reports和Descriptive Statistics命令项中包括的功能是对单变量的描述统计分析。
Descriptive Statistics包括的统计功能有:
Frequencies(频数分析):作用:了解变量的取值分布情况
Descriptives(描述统计量分析):功能:了解数据的基本统计特征和对指定的变量值进行标准化处理
Explore(探索分析):功能:考察数据的奇异性和分布特征
Crosstabs(交叉分析):功能:分析事物(变量)之间的相互影响和关系
Reports包括的统计功能有:
OLAP Cubes(OLAP报告摘要表):功能: 以分组变量为基础,计算各组的总计、均值和其他统计量。而输出的报告摘要则是指每个组中所包含的各种变量的统计信息。
Case Summaries(观测量列表):察看或打印所需要的变量值
Report Summaries in Row:行形式输出报告
Report Summaries in Columns:列形式输出报告
(2)、Compare Means(均值比较与检验):能否用样本均值估计总体均值?两个变量均值接近的样本是否来自均值相同的总体?换句话说,两组样本某变量均值不同,其差异是否具有统计意义?能否说明总体差异?这是各种研究工作中经常提出的问题。这就要进行均值比较。
以下是进行均值比较及检验的过程:
MEANS过程:不同水平下(不同组)的描述统计量,如男女的平均工资,各工种的平均工资。目的在于比较。术语:水平数(指分类变量的值数,如sex变量有2个值,称为有两个水平)、单元Cell(指因变量按分类变量值所分的组)、水平组合
T test 过程:对样本进行T检验的过程
单一样本的T检验:检验单个变量的均值是否与给定的常数之间存在差异。
独立样本的T检验:检验两组不相关的样本是否来自具有相同均值的总体(均值是否相同,如男女的平均收入是否相同,是否有显着性差异)
配对T检验:检验两组相关的样本是否来自具有相同均值的总体(前后比较,如训练效果,治疗效果)
one-Way ANOVA:一元(单因素)方差分析,用于检验几个(三个或三个以上)独立的组,是否来自均值相同的总体。
(3)、ANOVA Models(方差分析):方差分析是检验多组样本均值间的差异是否具有统计意义的一种方法。例如:医学界研究几种药物对某种疾病的疗效;农业研究土壤、肥料、日照时间等因素对某种农作物产量的影响;不同饲料对牲畜体重增长的效果等,都可以使用方差分析方法去解决
(4)、Correlate(相关分析):它是研究变量间密切程度的一种常用统计方法,常用的相关分析有以下几种:
1、线性相关分析:研究两个变量间线性关系的程度。用相关系数r来描述。
2、偏相关分析:它描述的是当控制了一个或几个另外的变量的影响条件下两个变量间的相关性,如控制年龄和工作经验的影响,估计工资收入与受教育水平之间的相关关系
3、相似性测度:两个或若干个变量、两个或两组观测量之间的关系有时也可以用相似性或不相似性来描述。相似性测度用大值表示很相似,而不相似性用距离或不相似性来描述,大值表示相差甚远
(5)、Regression(回归分析):功能:寻求有关联(相关)的变量之间的关系在回归过程中包括:Liner:线性回归;Curve Estimation:曲线估计;Binary Logistic:二分变量逻辑回归;Multinomial Logistic:多分变量逻辑回归;Ordinal 序回归;Probit:概率单位回归;Nonlinear:非线性回归;Weight Estimation:加权估计;2-Stage Least squares:二段最小平方法;Optimal Scaling最优编码回归;其中最常用的为前面三个.
(6)、Nonparametric Tests(非参数检验):是指在总体不服从正态分布且分布情况不明时,用来检验数据资料是否来自同一个总体假设的一类检验方法。由于这些方法一般不涉及总体参数故得名。
非参数检验的过程有以下几个:
1.Chi-Square test 卡方检验
2.Binomial test 二项分布检验
3.Runs test 游程检验
4.1-Sample Kolmogorov-Smirnov test 一个样本柯尔莫哥洛夫-斯米诺夫检验
5.2 independent Samples Test 两个独立样本检验
6.K independent Samples Test K个独立样本检验
7.2 related Samples Test 两个相关样本检验
8.K related Samples Test 两个相关样本检验
(7)、Data Rection(因子分析)
(8)、Classify(聚类与判别)等等
以上就是数值统计分析Analyze菜单下几项用于分析的数值统计分析方法的简介,在我们的变量定义以及数据录入完成后,我们就可以根据我们的需要在以上几种分析方法中选择若干种对我们的问卷数据进行统计分析,来得到我们想要的结果.
第四步:结果保存
我们的spss软件会把我们统计分析的多有结果保存在一个窗口中即结果输出窗口(output),由于spss软件支持复制和粘贴功能,这样我们就可以把我们想要的结果复制﹑粘贴到我们的报告中,当然我们也可以在菜单中执行file->save来保存我们的结果,一般情况下,我们建议保存我们的数据,结果可不保存.因为只要有了数据,如果我们想要结果的,我们可以随时利用数据得到结果.
总结:
以上便是spss处理问卷的四个步骤,四个步骤结束后,我们需要spss软件做的工作基本上也就结束了,接下来的任务就是写我们的统计报告了.值得一提的是.spss是一款在社会统计学应用非常广泛的统计类软件,学好它将对我们以后的工作学习产生很大的意义和作用.
SPSS的问卷分析中一份问卷是一个案,首先要根据问卷问题的不同定义变量。定义变量值得注意的两点:一区分变量的度量,Measure的值,其中Scale是定量、Ordinal是定序、Nominal是指定类;二 注意定义不同的数据类型Type
各色各样的问卷题目的类型大致可以分为单选、多选、排序、开放题目四种类型,他们的变量的定义和处理的方法各有不同,我们详细举例介绍如下:
1 单选题:答案只能有一个选项
例一 当前贵组织机构是否设有面向组织的职业生涯规划系统?
A有 B 正在开创 C没有 D曾经有过但已中断
编码:只定义一个变量,Value值1、2、3、4分别代表A、B、C、D 四个选项。
录入:录入选项对应值,如选C则录入3
2 多选题:答案可以有多个选项,其中又有项数不定多选和项数定多选。
(1)方法一(二分法):
例二 贵处的职业生涯规划系统工作涵盖哪些组群?画钩时请把所有提示
考虑在内。
A月薪员工 B日薪员工 C钟点工
编码:把每一个相应选项定义为一个变量,每一个变量Value值均如下定义:“0” 未选,“1” 选。
录入:被调查者选了的选项录入1、没选录入0,如选择被调查者选AC,则三个变量分别录入为1、0、1。
(2)方法二:
例三 你认为开展保持党员先进性教育活动的最重要的目标是那三项:
1( ) 2 ( ) 3( )
A、提高党员素质 B、加强基层组织 C、坚持发扬民主
D、激发创业热情 E、服务人民群众 F、促进各项工作
编码:定义三个变量分别代表题目中的1、2、3三个括号,三个变量Value值均同样的以对应的选项定义,即:“1” A,“2”B,“3” C,“4” D,“5” E,“6” F
录入:录入的数值1、2、3、4、5、6分别代表选项ABCDEF,相应录入到每个括号对应的变量下。如被调查者三个括号分别选ACF,则在三个变量下分别录入1、3、6。
注:能用方法二编码的多选题也能用方法编码,但是项数不定的多选只能用二分法,即方法一是多选题一般处理方法。
3 排序题: 对选项重要性进行排序
例四 您购买商品时在 ①品牌 ②流行 ③质量 ④实用 ⑤价格 中对它们的关注程度先后顺序是(请填代号重新排列)
第一位 第二位 第三位 第四位 第五位
编码:定义五个变量,分别可以代表第一位 第五位,每个变量的Value都做如下定义:“1” 品牌,“2” 流行,“3” 质量,“4” 实用,“5” 价格
录入:录入的数字1、2、3、4、5分别代表五个选项,如被调查者把质量排在第一位则在代表第一位的变量下输入“3“。
4 选择排序题:
例五 把例三中的问题改为“你认为开展保持党员先进性教育活动的最重
的目标是那三项,并按重要性从高到低排序”,选项不变。
编码:以ABCDEF6个选项分别对应定义6个变量,每个变量的Value都做同样的如下定义:“1” 未选,“2” 排第一,“3” 排第二,“4” 排第三。
录入:以变量的Value值录入。比如三个括号里分别选的是 ECF,则该题的6个变量的值应该分别录入:1(代表A选项未选)、1、 3(代表C选项排在第二)、1、2、4。
注:该方法是对多选题和排序题的方法结合的一种方法,对一般排序题(例四)也同样适用,只是两者用的分析方法不同(例四用频数分析、例五用描述分析),输出结果从不同的侧面反映问题的重要性(前一种方法从位次从变量的频数看排序,后一种方法从变量出发看排序)。
5 开放性数值题和量表题:这类题目要求被调查者自己填入数值,或者打分
例六 你的年龄(实岁):______
编码:一个变量,不定义Value值
录入:即录入被调查者实际填入的数值。
6开放性文字题:
如果可能的话可以按照含义相似的答案进行编码,转换成为封闭式选项进行分析。如果答案内容较为丰富、不容易归类的,应对这类问题直接做定性分析。
三 问卷一般性分析
下面具体介绍SPSS中问卷的一般处理方法,操作以版本spss13.0为例,以下提到的菜单项均在Analyze主菜单下
1频数分析:Frequencies过程可以做单变量的频数分布表;显示数据文件中由用户指定的变量的特定值发生的频数;获得某些描述统计量和描述数值范围的统计量。
适用范围:单选题(例一),排序题(例四),多选题的方法二(例三)
频数分析也是问卷分析中最常用的方法。
实现: Descriptive statistics……Frequencies
2 描述分析:Descriptives:过程可以计算单变量的描述统计量。这些述统计量有平均值、算术和、标准差,最大值、最小值、方差、范围和平均数标准误等。
适用范围:选择并排序题(例五)、开放性数值题(例六)。
实现: Descriptive statistics……Descriptives,需要的统计量点击按钮Statistics…中选择
3 多重反应下的频次分析:
适用范围:多选题的二分法(例二)
实现:第一步在Multiple Response……Define Sets把一道多选问题中定义了的所有变量集合在一起,给新的集合变量取名,在Dichotomies Counted value中输入1。第二步在Multiple Response……Frequencies中做频数分析。
4 交叉频数分析:解决对多变量的各水平组合的频数分析的问题
适用范围:,适用于由两个或两个以上变量进行交叉分类形成的列联表,对变量之间的关联性进行分析。比如要知道不同工作性质的人上班使用交通工具的情况,可以通过交叉分析得到一个二维频数表则一目了然。
实现:第一步根据分析的目的来确定交叉分析的选项,确定控制变量和解释变量(如上例中不同工作性质的人是控制变量,使用交通工具是解释变量)。第二步选择Descriptive statistics……Crosstabs
四 简单图形描述介绍
在做上述频数分析、描述分析等分析时就可以直接做出图形,简单方便,同时也可以另外作图。SPSS的作图功能在菜单Graphs下,功能强大,图形清晰优美。现在把常用图简单介绍如下
1饼图:又称圆图,是以圆的面积代表被研究对象的总体,按各构成部分占总体比重的大小把圆面积分割成若干扇形,用以表示现象的部分对总体的比例关系的统计图。频数分析的结果宜用饼图表示。
2曲线图:是用线段的升降来说明数据变动情况的一种统计图。它主要表示现象在时间上的变化趋势、现象的分配情况和2个现象的依存关系等。
3面积图:用线段下的阴影面积来强调现象变化的统计图。
4条形图:利用相同宽度条形的长短或高低表现统计数据大小及变化的统计图。
五 问卷深入分析
除了以上简单的分析,spss强大的功能还可以对问卷进行深入分析,比如常用的有聚类分析、交叉分析、因子分析、均值比分析(参数检验)、相关分析、回归分析等。因为涉及到很专业的统计知识,下面只将个人觉得比较有用的方法的适用范围和分析目的简单做介绍:
1聚类分析
样本聚类,可以将被调查者分类,并按照这些属性计算各类的比例,以便明确研究所关心的群体。比如按消费特征对被调查者的进行聚类。
2 相关分析
相关分析是针对两变量或者多变量之间是否存在相关关系的分析方法,要根据变量不同特征选择不同的相关性的度量方式。问卷分析中的多数用的变量都属于分类变量,要采用斯皮尔曼相关系数。
其中可以用卡方检验,其是对两变量之间是否具有显着性影响的分析方法
3均值的比较与检验
(1)Means过程:对指定变量综合描述分析,分组计算计算均值再比较。比如可以按性别变量分为男和女来研究二者收入是否存在差距。
(2)T 检验:
独立样本t检验用于不相关的样本是否开来自具有相同均值的总体的检验。比如,研究购买该产品的顾客和不购买的顾客的收入是否有明显差异。
如果样本不独立则要用配对t检验。比如研究参加职业培训后 工作效率是否提高。
4 回归分析
问卷分析中的回归分析常采用的是用离散回归模型,一般是逻辑斯蒂模型,解释一个变量对另一变量的影响具体有多大。比如,研究对某商品的消费受收入的影响程度。
问卷调查表
可以进行很多种统计分析的,包含描述性分析,信度,效度分析,差异性分析,相关性分析,回归分析等等
分析方法太多了
我替别人做这类的数据分析蛮多的
把你问卷发一份过来[email protected]
首先你可以计算每个部门每个工作职责满意不满意度,然后看那个业务在这个部门中不满意度最高,满意度最高,需要加强哪一个业务,需要表扬哪一个业务;然后部门之间进行比较,看看哪个部门满意度最高,哪个部门满意度最低,需要表扬需要批评的都知道了。
数据分析最重要的思维就是,不断确定业务中两组变量之间的关系,用以解释业务。
收入、转化、用户规模、用户活跃等,我们称为现象。而只有通过数据量化的现象,我们才能精准感知。所以,数据是用来描述现象的,是被量化的现象。
关于数据,有两种常见的情况。从腾讯出来的一个朋友曾告诉我“腾讯的数据太多,都不知道怎么看”,而另一个在创业公司工作的朋友告诉我“老板为了省开发资源,数据给的少得可怜”。这两种情况都有点走极端,那么,怎样看数据比较合理呢?答案是:需要想清楚3个问题。 1、我为什么要看数据? 看数据的理由有很多,有不少PM看数据纯粹为了在吵架中能占上风,也有的人是为了炫技,还有一些人是因为老板要他们这样做。但我认为,看数据最好的理由是“你真的渴望持续改进自己的产品,而数据能给你客观的建议 ”。如果你没有这个渴望,觉得“我已经做的很好了,没有几个人能比我做得更好”,不但可以不看数据,连用户都可以不要。 2、数据的由哪些成分组成?这些成分每天/周/月都发生了什么变化? 分析数据的构成可以更精确的知道是哪些产品、运营方案发挥作用,数据的变化可以知道某个方案起了多大的作用。 拿PV来说,分析PV的地域结构,可以知道适合的推广渠道;分析用户的年龄结构可以知道活动策划偏向什么主题;分析用户的职业结构可以知道用户的使用习惯。 3、这些数据为什么发生了这些变化? 分析数据为什么变化,可以找到关键的原因,或者洞悉用户真正的需求,最终形成产品的改进。
免费的?建议先输入数据,然后按照教程练习以后自行分析吧
如果给钱,楼上估计应该会帮你分析的很好。
不过也有可能你人品大爆发,他不收你钱
首先要清楚spss数据分析软件,对于数据格式的要求。
通常用spss软件进行数据分析时,数据格式要求是横向一行为一份问卷,一列对应问卷中的一个题目,所以有多少份问卷,最终录完后就有多少行,而问卷中有多少个题目,最终就有多少列。
其次在录的时候 可以在excel中录,也可以直接在spss中录入,因为格式是完全一样的,如果对excel很熟悉,就可以现在excel中录,录完再通过spss直接可以打开excel数据就好了。
数据分析是以现有网站的内容为基础,展示用户喜欢的内容,降低网站的跳出率增加网站黏性,具体步骤如下:
1、分析pv、uv、ip、跳出率和平均访问时长
通常情况下uv要大于ip,pv是uv的倍数关系,而pv:uv多少合适呢?要看同行业的平均数据,比如一个知识性网站,pv:uv的比例接近10:1,而如果是企业站,可能3:1或者4:1。
跳出率越高说明网站内容质量越差,平均访问时长也体现网站的内容质量。时长越长说明网站内容质量越高、内链系统越好。
2、分析来源、地域和搜索引擎
从来源分析可以评测外链和推广效果,可以选择效果更好的推广和外链方式,节省时间。地域分析可以帮我我们做地域关键词,搜索引擎分析用于明白用户的搜索习惯。
3、受访页面、着陆页和搜索词
分析受访页面可以看出推广、外链以及内链效果,分析搜索词可以得出现在内容排名效果。
受访页面主要来自于外链、推广链接、排名页面和内链布局。受访页面越高的网页说明展示次数越多,被用户看到的概率越大。
着陆页分数据纯碎的体现外链、推广链接和排名的效果,如果没有关键词排名,可以直接评测推广、外链的效果。
可以通过搜索词得知那些关键词给我们带来了流量,以及访问的页面是哪些,访问页的跳出率是多少,是不是应该推广这个页面帮助它提升排名。
4、分析页面点击图和页面上下游
页面点击图,可以根据页面点击图调整网站首页布局。颜色越深的内容放置的位置越靠近左上角,颜色越浅的内容位置越靠近右下角。点击很少或者没有点击的内容可以从首页移除,或者放置在栏目页。
页面上下游是体现用户浏览网页的轨迹,从上下游的数据可以统计布局的内链用户点击最多的文章是哪一篇,以及哪些页面的跳出率高。页面上下游数据最能说明内链布局效果。
注意:数据分析的魅力是常人无法感受的,如果你的网站在中后期还是凭证感觉做,那么你就相当于盲人摸象,你的网站排名只能看运气了。
‘叁’ 数据分析员用python做数据分析是怎么回事,需要用到python中的那些内容,具体是怎么操作的
最近,Analysis with Programming加入了Planet Python。我这里来分享一下如何通过Python来开始数据分析。具体内容如下:
数据导入
导入本地的或者web端的CSV文件;
数据变换;
数据统计描述;
假设检验
单样本t检验;
可视化;
创建自定义函数。
数据导入
1
这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "https://raw.githubusercontent.com/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。
数据变换
1
既然在工作空间有了数据,接下来就是数据变换。统计学家和科学家们通常会在这一步移除分析中的非必要数据。我们先看看数据(下图)
对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行,以及通过print(tail(df))来打印数据的后6行。当然Python中,默认打印是5行,而R则是6行。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理
9
plt.show(sns.lmplot("Benguet", "Ifugao", df))
创建自定义函数
在Python中,我们使用def函数来实现一个自定义函数。例如,如果我们要定义一个两数相加的函数,如下即可:
def add_2int(x, y):
return x + y
print add_2int(2, 2)
# OUTPUT
4
顺便说一下,Python中的缩进是很重要的。通过缩进来定义函数作用域,就像在R语言中使用大括号{…}一样。这有一个我们之前博文的例子:
产生10个正态分布样本,其中和
基于95%的置信度,计算和;
重复100次; 然后
计算出置信区间包含真实均值的百分比
Python中,程序如下:
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代码读起来很简单,但是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了Python专家
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
‘肆’ 如何用python写 数据分析工具
数据导入
导入本地的或者web端的CSV文件;
数据变换;
数据统计描述;
假设检验
单样本t检验;
可视化;
创建自定义函数。
数据导入
这是很关键的一步,为了后续的分析我们首先需要导入数据。通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。在Python中,我们的操作如下:
Python
1
2
3
4
5
6
7
8
import pandas as pd
# Reading data locally
df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv')
# Reading data from web
data_url = "t/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"
df = pd.read_csv(data_url)
为了读取本地CSV文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。
数据变换
既然在工作空间有了数据,接下来就是数据变换。统计学家和科学家们通常会在这一步移除分析中的非必要数据。我们先看看数据:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Head of the data
print df.head()
# OUTPUT
0 12432934148330010553
1 41589235 4287806335257
2 17871922 19551074 4544
317152 14501 3536 1960731687
4 12662385 25303315 8520
# Tail of the data
print df.tail()
# OUTPUT
74 2505 20878 3519 1973716513
7560303 40065 7062 1942261808
76 63116756 3561 1591023349
7713345 38902 2583 1109668663
78 2623 18264 3745 1678716900
对R语言程序员来说,上述操作等价于通过print(head(df))来打印数据的前6行,以及通过print(tail(df))来打印数据的后6行。当然Python中,默认打印是5行,而R则是6行。因此R的代码head(df, n = 10),在Python中就是df.head(n = 10),打印数据尾部也是同样道理。
在R语言中,数据列和行的名字通过colnames和rownames来分别进行提取。在Python中,我们则使用columns和index属性来提取,如下:
Python
1
2
3
4
5
6
7
8
9
10
11
# Extracting column names
print df.columns
# OUTPUT
Index([u'Abra', u'Apayao', u'Benguet', u'Ifugao', u'Kalinga'], dtype='object')
# Extracting row names or the index
print df.index
# OUTPUT
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], dtype='int64')
数据转置使用T方法,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Transpose data
print df.T
# OUTPUT
01 23 45 67 89
Abra1243 41581787171521266 5576 927215401039 5424
Apayao2934 92351922145012385 7452109917038138210588
Benguet148 42871955 353625307712796 24632592 1064
Ifugao3300
... 69 70 71 72 73 74 75 76 77
Abra ...12763 247059094 620913316 250560303 631113345
Apayao ...376251953235126 6335386132087840065 675638902
Benguet... 2354 4045 5987 3530 2585 3519 7062 3561 2583
Ifugao ... 9838171251894015560 774619737194221591011096
Kalinga...
78
Abra2623
Apayao 18264
Benguet 3745
Ifugao 16787
Kalinga16900
Other transformations such as sort can be done using<code>sort</code>attribute. Now let's extract a specific column. In Python, we do it using either<code>iloc</code>or<code>ix</code>attributes, but<code>ix</code>is more robust and thus I prefer it. Assuming we want the head of the first column of the data, we have
其他变换,例如排序就是用sort属性。现在我们提取特定的某列数据。Python中,可以使用iloc或者ix属性。但是我更喜欢用ix,因为它更稳定一些。假设我们需数据第一列的前5行,我们有:
Python
1
2
3
4
5
6
7
8
9
print df.ix[:, 0].head()
# OUTPUT
0 1243
1 4158
2 1787
317152
4 1266
Name: Abra, dtype: int64
顺便提一下,Python的索引是从0开始而非1。为了取出从11到20行的前3列数据,我们有:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print df.ix[10:20, 0:3]
# OUTPUT
AbraApayaoBenguet
109811311 2560
1127366 15093 3039
12 11001701 2382
13 7212 11001 1088
14 10481427 2847
1525679 15661 2942
16 10552191 2119
17 54376461734
18 10291183 2302
1923710 12222 2598
20 10912343 2654
上述命令相当于df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]。
为了舍弃数据中的列,这里是列1(Apayao)和列2(Benguet),我们使用drop属性,如下:
Python
1
2
3
4
5
6
7
8
9
print df.drop(df.columns[[1, 2]], axis = 1).head()
# OUTPUT
AbraIfugaoKalinga
0 1243330010553
1 4158806335257
2 17871074 4544
317152 1960731687
4 12663315 8520
axis参数告诉函数到底舍弃列还是行。如果axis等于0,那么就舍弃行。
统计描述
下一步就是通过describe属性,对数据的统计特性进行描述:
Python
1
2
3
4
5
6
7
8
9
10
11
12
print df.describe()
# OUTPUT
AbraApayaoBenguetIfugao Kalinga
count 79.000000 79.00000079.000000 79.000000 79.000000
mean 12874.37974716860.6455703237.39240512414.62025330446.417722
std16746.46694515448.1537941588.536429 5034.28201922245.707692
min927.000000401.000000 148.000000 1074.000000 2346.000000
25% 1524.000000 3435.5000002328.000000 8205.000000 8601.500000
50% 5790.00000010588.0000003202.00000013044.00000024494.000000
75%13330.50000033289.0000003918.50000016099.50000052510.500000
max60303.00000054625.0000008813.00000021031.00000068663.000000
假设检验
Python有一个很好的统计推断包。那就是scipy里面的stats。ttest_1samp实现了单样本t检验。因此,如果我们想检验数据Abra列的稻谷产量均值,通过零假设,这里我们假定总体稻谷产量均值为15000,我们有:
Python
1
2
3
4
5
6
7
from scipy import stats as ss
# Perform one sample t-test using 1500 as the true mean
print ss.ttest_1samp(a = df.ix[:, 'Abra'], popmean = 15000)
# OUTPUT
(-1.1281738488299586, 0.26270472069109496)
返回下述值组成的元祖:
t : 浮点或数组类型
t统计量
prob : 浮点或数组类型
two-tailed p-value 双侧概率值
通过上面的输出,看到p值是0.267远大于α等于0.05,因此没有充分的证据说平均稻谷产量不是150000。将这个检验应用到所有的变量,同样假设均值为15000,我们有:
Python
1
2
3
4
5
6
print ss.ttest_1samp(a = df, popmean = 15000)
# OUTPUT
(array([ -1.12817385, 1.07053437, -65.81425599,-4.564575, 6.17156198]),
array([2.62704721e-01, 2.87680340e-01, 4.15643528e-70,
1.83764399e-05, 2.82461897e-08]))
第一个数组是t统计量,第二个数组则是相应的p值。
可视化
Python中有许多可视化模块,最流行的当属matpalotlib库。稍加提及,我们也可选择bokeh和seaborn模块。之前的博文中,我已经说明了matplotlib库中的盒须图模块功能。
;
重复100次; 然后
计算出置信区间包含真实均值的百分比
Python中,程序如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy as np
import scipy.stats as ss
def case(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
m = np.zeros((rep, 4))
for i in range(rep):
norm = np.random.normal(loc = mu, scale = sigma, size = n)
xbar = np.mean(norm)
low = xbar - ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
up = xbar + ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
if (mu > low) & (mu < up):
rem = 1
else:
rem = 0
m[i, :] = [xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
上述代码读起来很简单,但是循环的时候就很慢了。下面针对上述代码进行了改进,这多亏了Python专家,看我上篇博文的15条意见吧。
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import numpy as np
import scipy.stats as ss
def case2(n = 10, mu = 3, sigma = np.sqrt(5), p = 0.025, rep = 100):
scaled_crit = ss.norm.ppf(q = 1 - p) * (sigma / np.sqrt(n))
norm = np.random.normal(loc = mu, scale = sigma, size = (rep, n))
xbar = norm.mean(1)
low = xbar - scaled_crit
up = xbar + scaled_crit
rem = (mu > low) & (mu < up)
m = np.c_[xbar, low, up, rem]
inside = np.sum(m[:, 3])
per = inside / rep
desc = "There are " + str(inside) + " confidence intervals that contain "
"the true mean (" + str(mu) + "), that is " + str(per) + " percent of the total CIs"
return {"Matrix": m, "Decision": desc}
更新
那些对于本文ipython notebook版本感兴趣的,请点击这里。这篇文章由Nuttens Claude负责转换成ipython notebook 。
‘伍’ 可以让你快速用Python进行数据分析的10个小技巧
一些小提示和小技巧可能是非常有用的,特别是在编程领域。有时候使用一点点黑客技术,既可以节省时间,还可能挽救“生命”。
一个小小的快捷方式或附加组件有时真是天赐之物,并且可以成为真正的生产力助推器。所以,这里有一些小提示和小技巧,有些可能是新的,但我相信在下一个数据分析项目中会让你非常方便。
Pandas中数据框数据的Profiling过程
Profiling(分析器)是一个帮助我们理解数据的过程,而Pandas Profiling是一个Python包,它可以简单快速地对Pandas 的数据框数据进行 探索 性数据分析。
Pandas中df.describe()和df.info()函数可以实现EDA过程第一步。但是,它们只提供了对数据非常基本的概述,对于大型数据集没有太大帮助。 而Pandas中的Profiling功能简单通过一行代码就能显示大量信息,且在交互式HTML报告中也是如此。
对于给定的数据集,Pandas中的profiling包计算了以下统计信息:
由Pandas Profiling包计算出的统计信息包括直方图、众数、相关系数、分位数、描述统计量、其他信息——类型、单一变量值、缺失值等。
安装
用pip安装或者用conda安装
pip install pandas-profiling
conda install -c anaconda pandas-profiling
用法
下面代码是用很久以前的泰坦尼克数据集来演示多功能Python分析器的结果。
#importing the necessary packages
import pandas as pd
import pandas_profiling
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)
一行代码就能实现在Jupyter Notebook中显示完整的数据分析报告,该报告非常详细,且包含了必要的图表信息。
还可以使用以下代码将报告导出到交互式HTML文件中。
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
Pandas实现交互式作图
Pandas有一个内置的.plot()函数作为DataFrame类的一部分。但是,使用此功能呈现的可视化不是交互式的,这使得它没那么吸引人。同样,使用pandas.DataFrame.plot()函数绘制图表也不能实现交互。 如果我们需要在不对代码进行重大修改的情况下用Pandas绘制交互式图表怎么办呢?这个时候就可以用Cufflinks库来实现。
Cufflinks库可以将有强大功能的plotly和拥有灵活性的pandas结合在一起,非常便于绘图。下面就来看在pandas中如何安装和使用Cufflinks库。
安装
pip install plotly
# Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
用法
#importing Pandas
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
是时候展示泰坦尼克号数据集的魔力了。
df.iplot()
df.iplot() vs df.plot()
右侧的可视化显示了静态图表,而左侧图表是交互式的,更详细,并且所有这些在语法上都没有任何重大更改。
Magic命令
Magic命令是Jupyter notebook中的一组便捷功能,旨在解决标准数据分析中的一些常见问题。使用命令%lsmagic可以看到所有的可用命令。
所有可用的Magic命令列表
Magic命令有两种:行magic命令(line magics),以单个%字符为前缀,在单行输入操作;单元magic命令(cell magics),以双%%字符为前缀,可以在多行输入操作。如果设置为1,则不用键入%即可调用Magic函数。
接下来看一些在常见数据分析任务中可能用到的命令:
% pastebin
%pastebin将代码上传到Pastebin并返回url。Pastebin是一个在线内容托管服务,可以存储纯文本,如源代码片段,然后通过url可以与其他人共享。事实上,Github gist也类似于pastebin,只是有版本控制。
在file.py文件中写一个包含以下内容的python脚本,并试着运行看看结果。
#file.py
def foo(x):
return x
在Jupyter Notebook中使用%pastebin生成一个pastebin url。
%matplotlib notebook
函数用于在Jupyter notebook中呈现静态matplotlib图。用notebook替换inline,可以轻松获得可缩放和可调整大小的绘图。但记得这个函数要在导入matplotlib库之前调用。
%run
用%run函数在notebook中运行一个python脚本试试。
%run file.py
%%writefile
%% writefile是将单元格内容写入文件中。以下代码将脚本写入名为foo.py的文件并保存在当前目录中。
%%latex
%%latex函数将单元格内容以LaTeX形式呈现。此函数对于在单元格中编写数学公式和方程很有用。
查找并解决错误
交互式调试器也是一个神奇的功能,我把它单独定义了一类。如果在运行代码单元时出现异常,请在新行中键入%debug并运行它。 这将打开一个交互式调试环境,它能直接定位到发生异常的位置。还可以检查程序中分配的变量值,并在此处执行操作。退出调试器单击q即可。
Printing也有小技巧
如果您想生成美观的数据结构,pprint是首选。它在打印字典数据或JSON数据时特别有用。接下来看一个使用print和pprint来显示输出的示例。
让你的笔记脱颖而出
我们可以在您的Jupyter notebook中使用警示框/注释框来突出显示重要内容或其他需要突出的内容。注释的颜色取决于指定的警报类型。只需在需要突出显示的单元格中添加以下任一代码或所有代码即可。
蓝色警示框:信息提示
<p class="alert alert-block alert-info">
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes.
If it’s a note, you don’t have to include the word “Note”.
</p>
黄色警示框:警告
<p class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</p>
绿色警示框:成功
<p class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</p>
红色警示框:高危
<p class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
</p>
打印单元格所有代码的输出结果
假如有一个Jupyter Notebook的单元格,其中包含以下代码行:
In [1]: 10+5
11+6
Out [1]: 17
单元格的正常属性是只打印最后一个输出,而对于其他输出,我们需要添加print()函数。然而通过在notebook顶部添加以下代码段可以一次打印所有输出。
添加代码后所有的输出结果就会一个接一个地打印出来。
In [1]: 10+5
11+6
12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19
恢复原始设置:
InteractiveShell.ast_node_interactivity = "last_expr"
使用'i'选项运行python脚本
从命令行运行python脚本的典型方法是:python hello.py。但是,如果在运行相同的脚本时添加-i,例如python -i hello.py,就能提供更多优势。接下来看看结果如何。
首先,即使程序结束,python也不会退出解释器。因此,我们可以检查变量的值和程序中定义的函数的正确性。
其次,我们可以轻松地调用python调试器,因为我们仍然在解释器中:
import pdb
pdb.pm()
这能定位异常发生的位置,然后我们可以处理异常代码。
自动评论代码
Ctrl / Cmd + /自动注释单元格中的选定行,再次命中组合将取消注释相同的代码行。
删除容易恢复难
你有没有意外删除过Jupyter notebook中的单元格?如果答案是肯定的,那么可以掌握这个撤消删除操作的快捷方式。
如果您删除了单元格的内容,可以通过按CTRL / CMD + Z轻松恢复它。
如果需要恢复整个已删除的单元格,请按ESC + Z或EDIT>撤消删除单元格。
结论
在本文中,我列出了使用Python和Jupyter notebook时收集的一些小提示。我相信它们会对你有用,能让你有所收获,从而实现轻松编码!