① 数据分析员用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}
② 怎样用Excel做数据分析
前言
最近松懈了,花了很多时间在玩游戏看视频上,把学习计划耽搁了,总说要自律,但光说不做是没用的,最主要是自控能力太差了,得承认自己和大多数人一样,爱玩、不愿意迈出舒适区,“知行合一”,只四个字,大道至简,却超过99%的人都做不到。在前进的路上,希望自己能克服惰性,提升自控力,按计划耐心学习并践行。
1、数据分析步骤:
提出问题→理解数据→数据清洗→构建模型→数据可视化
2、实践案例:
利用一份招聘网站的数据作为实战案例。
第一步提出问题:
1)在哪些城市找到数据分师工作的机会比较大?
2)数据分师的薪水如何?
3)根据工作经验的不同,薪酬是怎样变化的?
第二步理解数据:
初始数据有6875条,14项内容。
设置表格列宽(步骤如下图),显示全部内容,方便后续操作,最后保存。
第三步清洗数据:
这一步需要花费的时间占大部分,把数据处理成自己想要的样子。
1、选择子集:选择公司全名和公司ID两列并隐藏(取消隐藏方法:全选表格→开始→格式→隐藏和取消隐藏→取消隐藏列)
2、列名重命名:双击列名可以修改成自己想要的列名。
3、删除重复值:选择职位ID将其重复值删除(步骤如下图)
4、缺失值处理:选择职位ID列计数5032,选择城市列计数5030,城市列缺失两个数据。
查找并定位城市列的缺失值(步骤如下图),缺失值填上海。
缺失值处理的4种方法,根据情况灵活使用:
1)通过人工手动补全;
2)删除缺失的数据;
3)用平均值代替缺失值;
4)用统计模型计算出的值去代替缺失值。
5、一致化处理:对“公司所属领域”进行一致化处理(步骤如下图)
将原来的“公司所属领域”列隐藏,并将复制的列进行分列:
6、数据排序:
7、异常值处理:
第四步构建模型
第五步数据可视化
通过上面的分析,我们可以得到的以下分析结论有:
1)数据分析这一岗位,有大量的工作机会集中在北上广深以及新一线城市,如果你将来去这些城市找工作,可以提高你成功的条件概率。
2)从待遇上看,数据分析师留在深圳发展是个不错的选择,其次是北京、上海。
3)数据分析是个年轻的职业方向,大量的工作经验需求集中在1-3年。
对于数据分析师来说,5年似乎是个瓶颈期,如果在5年之内没有提升自己的能力,大概以后的竞争压力会比较大。
4)随着经验的提升,数据分析师的薪酬也在不断提高,10年以上工作经验的人,能获得相当丰厚的薪酬。
3、划重点:
1)分列功能会覆盖掉右列单元格,所以我们记得先要复制这一列到最后一个空白列的地方,再进行分列操作。
2)上面图片中的函数:IF(COUNT(FIND({"数据运营","数据分析","分析师"},L2)),"是","否")。
3)Ctrl+Eneter快捷键,在不连续的单元格中同时输入同一个数据或公式时很好用。
4)精确查找和近似查找(模糊查找)的区别
(1)精确查找是指从第一行开始往最后一行逐个查找。一找到匹配项就停止查询,所以返回找到的第一个值。
(2)当你要近似查找的时候,它就会苦逼地查遍所有的数据,返回的是最后一个匹配到的值。
5)在使用vlookup函数时,在很多情况下使用的是精确匹配,而在进行分组时需要用模糊匹配,所以这里要输入“1”来进行模糊匹配。
6)Excel设置了快捷键F4帮助用户迅速切换相对引用、绝对引用和混合引用,步骤如下:
(1)选定包含该公式的单元格;
(2)在编辑栏中选择要更改的公式内容,并按 F4 键;
(3)以引用单元格A1为例,每次按 F4 键时,Excel会依次在以下组合间切换:
按一次F4是绝对引用
按两次、三次F4是混合引用
按四次F4是相对引用
7)使用这个函数过程中,如果出现错误标识“#N/A”,一般是3个原因导致:
(1)第2个参数:查找范围里第一列的值必须是要查找的值。
比如这个案例里第2个参数选定的的范围里第一列是姓名,是要查找值的列。
(2)数据存在空格,此时可以嵌套使用TRIM函数将空格批量删除。
(3)数据类型或格式不一致,此时将数据类型或格式转为一致即可。