欢迎来真孝善网,为您提供真孝善正能量书籍故事!

揭秘企业数据背后的秘密:专业数据分析师的职业之路

时间:11-08 神话故事 提交错误

如何重命名df:

方法一:r_cx.columns=["Frequency"] 这种重命名方法是直接修改原来的dataframe。但所有列名都需要重命名。

方法二: df.rename(columns={"oldName1": "newName1", "oldName2": "newName2"})

s_r=s.reset_index(drop=False)#.reset_index保留索引并对索引重新排序

1、分布分析

1、数量领域分布分析

第一步:极差:值越小,越稳定;值越大,越不稳定。

第二步:频数分布:分组区间pd.cut,确定每个区间的频数、频数、累积频数、累积频数

r_zj["累计频率%"]=r_zj["累计频率"].apply(lambda x:"%.2f%%" %(x*100))

r_zj.style.bar(subset=["频率","累计频率"])#表格样式

第三步:绘制直方图(区间)

x=len(r_zj) y=r_zj["频率"] m=r_zj["频率"]

for i,j,k in zip(range(x),y,m):#zip 可以有两个以上的值

plt.text(i-0.1,j+0.01,"%i"%k,颜色="k")

2. 定性字段分布分析

定性字段:除了与定量字段相同外,我们还需要制作饼图。

2. 对比分析

1、绝对值的比较:减法——相互比较的大小差异不能太大(1)折线图的比较(2)多系列条形图的比较(3)堆积图中正负数的比较

2、相对值比较:除法

(1)结构比较:也可以体现“强度”两个性质不同但有一定联系的总量指标的比较,用来说明“强度”、“密度”和“普遍程度”。例如:GDP“元/人”、人口密度“人/平方公里”

一个。各组在整体中所占的比例,反映整体的内部结构,b折线图

(2)比例比较:在分组的基础上比较整体不同部分的指标值,a消费/工资B.面积图

(3)空间比较(同时横向比较):同时比较不同空间内相似现象的指标值,反映不同空间内相似现象的差异程度以及现象发展的不平衡程度。一个。一个月四种产品内部销量对比b条形图

(4)纵向比较(不同时间):a计算累计增长、逐期增长,固定基数增长率=累计增长/基期水平-1,环比增长率=报告期/上期水平-1

b.折线图:比较同一现象在不同时间的指标值,反映现象数量随时间发展变化的程度和趋势。

# 最基本的方法,计算动态相对数发展速度

# 动态相对数(发展速度)=某现象报告期值/同一现象基期值

# 基期:用于比较的基期

# 报告期:要研究的期间,也称为计算期

3.统计分析:张密度图

定量数据的统计描述,从集中趋势和离散趋势两个方面:均值、众数、中位数、四分位数、方差

1.集中趋势:算术平均数、平均数、加权平均数、众数、中位数

2. 离散趋势:极差、分位数差.describe、方差、标准差.var

4. 帕累托分析

(1)首先将数值从大到小排序并绘制直方图

(2)计算累计比例data.cumsum()/data.sum()并绘制副轴折线图

(3)找到第一个大于80%的指数,即这个指数之前一直是80%。

(4) 找出该索引是哪个索引

5.正态分布

正态分布:均值决定位置,标准差决定分布幅度——越胖越离散,越瘦越集中;当平均值=0 时,标准分布

#浓度:峰值位于中心,即平均值所在的位置;对称性:以均值为中心,左右对称;均匀变异性:中间是主要分布点,周围区域会均匀减少;总面积=1

第一步:初步检查直方图:密度图,直方图+密度图

图=plt.figure(figsize=(10,6))

ax1=Fig.add_subplot(2,1,1)

ax1.scatter(s.index,s.values)

ax2=Fig.add_subplot(2,1,2)

s.hist(bins=20,ax=ax2)

s.plot(kind="kde",secondary_y=True,ax=ax2)

第二步:QQ图测试:即散点图。将值从小到大排序。横坐标为每个数据对应的百分位p(百分位p[i],p[i]=(i-0.5)/n);纵坐标为对应值;散点图是否在一条直线上(第三个四分位数- 第一个四分位数)。纵坐标也可以是(值-平均值)/标准差的q值,它是每个值标准化的结果;

st=s["值"].describe()

x1,y1=0.25,st["25%"] x2,y2=0.75,st["25%"]

ax3=图.add_subplot(3,1,3)

ax3.plot(s_r["p"],s_r["value"],"k.",alpha=0.1)--不指定图形,直接使用xy来绘制

ax1.plot([x1,x2],[y1,y2],"-r",color="R")

步骤3:K-s 检验

K_S检验:将样本数据的累积频率分布f(x)与理论分布g(x)(如正态分布)进行比较,f(x)-g(x)为最大值,p值0.05接受f(x), p0。 05拒绝f(x)并接受g(x)

1.#推导过程:(1)累积频数分布:次数、累积次数、累积频数(2)标准化值-将非正态分布转为正态分布:(值-均值u)/std标准差(3)检查标准正态分布,对应理论值(4) D=累积频率- 理论分布最大值(5) 将得到的最大值与显着性比较表进行比较,看p 值是否大于0.05。如果更大,则满足g(x)

2.#Direct K-s检验算法:(1)求均值和标准差(2)导入stats模块,stats.kstest(df["value"],"norm",(u,std))(3)统计是D值,pvalue是p值

从scipy 导入统计数据

stats.kstest(df["值"],"范数",(u,std))

6. 相关分布

1.相关性分析: (1)首先用简单散点法看相关性:两个变量:正相关、负相关b多变量相关分析:散点矩阵(二)

2.皮尔逊相关系数:必须满足正态分布。如果通过公式得到系数0.5,那就是相关的了。

(1)检验正态分布——K_S检验(2)如果符合正态分布,求系数:r=data["(x-u1)*(y-u2)"].sum()/(np.sqrt (data["(x-u1)**2"].sum() * data["(y-u2)**2"].sum()))--xy是多个变量的值( 3)通过r得到相关性

#pearson相关系数算法:data.corr()

3.sperman相关系数:适合非正态分布

(1) 将多个变量的列从小到大排序并列出“等级” (2) 求d=等级1 - 等级2 以及d 的平方(3) rs=1-6*(data[ "d2" ].sum())/(n*(n**2-1))其中n=len(数据)

Spearman相关系数算法:data.corr(method="spearman")

7. 数据处理

1.缺失值处理:删除记录、数据插值、不处理

(1)判断是否存在缺失值:isnull notnull 返回Boolean类型

(2)删除缺失值dropna

(3)填写缺失数据:fillna(method="pad"/"ffill"填充前=backfill/bfill填充后)

(4) 替换缺失数据:replace(old list, new, inplace)

2. 缺失值插补

(1)均值、中位数、众数插值

(2) 邻近值填充:fillna(method="pad"/"ffill" 填充前一个值=backfill/bfill 填充后一个值)

(3)拉格朗日插值法:数学知识平面上的n个点可以用多项式表示:y=a0+a1x1+a2x2+.+a(n-1)x(n-1),只求其值a0,a1.可以是

从scipy.interpolate 导入拉格朗日

x=[3, 6, 9] y=[10, 8, 4]

print(lagrange(x,y))#得到多项式方程,三个值为a0,a1,a2

打印(拉格朗日(x,y)(10))

df=pd.DataFrame({"x":np.arange(15)})

df["y"]=lagrange(x,y)(df["x"])#根据(x,y)的值插值新x的新y值

plt.plot(df["x"],df["y"],linestyle="--",color="k")

示例:#lagrange 实际应用

一个。用中位数填充缺失值并绘制密度图

b.不处理,绘制密度图——绘图时自动排除缺失值

c.lagerand插值:只对缺失值位置的前5个和后5个数据进行插值

def f(s,n,k=5):--s值,n缺失值位置,根据前后k个数据进行k插值

y=s[列表(范围(n-k,n+1+k))]

y=y[y.notnull()]

返回拉格朗日(y.index,列表(y))(n)

对于我在范围内(len(数据)):

如果data.isnull()[i]:

数据[i]=f(数据,i)

打印(f(数据,i))

data.dropna(inplace=True)

data.plot(kind="kde",ax=axes[3],style="--k",grid=True,)

3、异常值处理:异常值分析:箱线图/3西格玛原理;异常值处理方式:删除/修正填充

3 sigma 原则:如果数据服从正态分布,则离群值定义为偏离均值超过标准差3 倍的值(符合此规律的正态分布中的p(|x-u|3 sigma)=0.03原则)

步骤:(1)正态分布检验:k-s检验(2)绘制数据的密度曲线和+-3倍标准差的垂直线(3)找出异常值和正常值,并绘制散点图绘图错误=数据[ np.abs(data-u)3*std]data_c=数据[np.abs(data-u)=3*std]

箱线图- 比3 sigma 更准确(1) 绘制箱线图并确定是使用内限还是外限来定义缺失值(示例中使用内限) (2) 计算q1, q3 、iqr、内限(3)误差大于内限(q3+1.5*iqr)且小于内限(q1-1.5*iqr);正常值:(q1-1.5*iqr)和(q3+1.5*iqr)之间(4)绘制散点图

4. 数据标准化

(1)0-1归一化:比z-score更常用;

# 记录数据的最大值和最小值,并以Max-Min为基准对数据进行归一化(即Min=0,Max=1)

# x=(x - 最小值)/(最大值- 最小值)

def f(df,*列):

df_n=df.copy()

对于cols: 中的col

ma=df_n[col].max()

mi=df_n[col].min()

df_n[col+"_n"]=(df_n[col]-mi)/(ma-mi)

返回df_n

df_n=f(df,"值1","值2")

应用:value1的权重为0.6,value2的权重为0.4。确定哪个指标具有最佳的整体状况。

一个。标准化0-1处理b按权重计算综合指数并从大到小排序c绘制折线图

(2) z-score标准化:将样本从服从一般分布标准化为服从正态分布;值越大,离均值越远;在分类和聚类算法中,两个不同数据的相似性:平均水平、与平均趋势的距离

#Z分数(z-score)是分数与均值之差除以标准差的过程z=(x-)/,其中x是具体分数,是均值, 是标准差

#Z值的量表示原始值与平均值之间的距离,以标准差为单位计算。当原始分数低于平均值时,Z为负数,否则为正数。

def f_z(df,*列):

df_n=df.copy()

对于cols: 中的col

u=df_n[col].mean()

std=df_n[col].std()

df_n[col+"_zn"]=(df_n[col]-u)/std

返回df_n

f_z(df,"值1","值2")

5.数据连续属性的离散化

(1)等宽法:pd.cut(数据、划分、左右开闭、标签组名)

cats.codes#leveltags

cats.categories#各个值的范围

pd.value_counts(cats)#每个区间的频率

(2)等频法:pd.qcut()将相同数量的记录放入区间

3. 数学建模

np.random.RandomState 随机数种子。对于随机数生成器来说,只要种子(seed)相同,生成的随机数序列就相同。

监督学习:通过现有数据训练得到模型,样本值x,结果值y,包括回归-线性回归(得到具体的连续值)和分类-KNN最近邻分类(离散值),如:看病医生询问症状:回归是根据5个症状的描述来判断需要吃多少天的药;分类是根据已有的症状来判断你患有什么疾病;

无监督学习:没有结果值y,都是样本值(特征)x;进行聚类或降维- PCA 主成分分析、K 均值聚类

随机算法:蒙特卡罗模拟算法

监督学习-线性回归:指确定两个或多个变量之间相互依赖的定量关系的统计分析方法,分位数线性回归和非线性回归

监督学习-KNN近邻分类:在距离空间中,如果一个样本的K个近邻中的大多数属于某个类别,那么该样本也属于这个类别

无监督学习-PCA主成分分析:无监督算法+基本降维算法,将原始数据通过线性变换转化为一组各维度线性独立的表示,用于提取数据的主要特征成分

主成分分析:(是统计分析的中间步骤,但实际上是降维的结果)

降维:如果有100个维度降为10个维度,主要考虑的是如何提取核心特征,并通过核心特征来描述新的特征。

比如你现在做线性回归,你会发现有100个参数。如果直接进行回归拟合,曲线会非常复杂,甚至过拟合。

现在我们需要将100个参数改为10个参数作为回归量,需要用到主成分分析。

无监督学习-K-means聚类:典型的基于距离的聚类算法

K-means:一种基于原型和分区的距离技术,用于查找用户指定数量(k) 的簇

使用欧几里德距离作为相似性度量

随机算法——蒙特卡罗模拟:又称随机抽样、统计实验方法,一种利用随机数解决计算问题的方法。

将要解决的问题与一定的概率模型联系起来,利用计算机实施统计模拟或抽样,得到问题的相似解。

1.回归

#导入线性回归模块

从sklearn. Linear_model 导入LinearRegression

回归分为线性回归和非线性回归

1. 线性回归

np.random.RandomState(1) 随机数种子

x=[1,2,3]

将x改为3*1:x[:np.newaxis]

得到:[[1],

[2],

[3] ]

将x改为1*3:x[np.newaxis,]

获取:[[1,2,3]]

1.单变量线性回归https://www.cnblogs.com/nxld/p/6123239.htmlhttps://www.cnblogs.com/magle/p/5881170.html

(1)建立回归模型:model=LinearRegression()

(2)输入自变量x和因变量y:model.fit(xtrain[:np.newaxis],ytrain)--以矩阵形式传入

(3) 拟合结果:斜率model.coef_截距model.intercept_

(4)拟合曲线:xtest=np.linespace(0,10,1000) ytest=model.prdeict(xtest[:np.newaxis]) --预测方法

(5)绘制散点图和拟合直线

**错误:#错误:拟合线与实际值之间的差异符合均值为0且具有标准差的正态分布。

xtrain、ytrain:散点图; xtest、ytest:直线;

2. 多元线性回归

np.dot(a,b):如果ab是一维,则内积法求x1y1+x2y2+x3y3

若ab是多维,则用矩阵乘法求

3. 线性回归模型的评估

从sklearn 导入指标计算均方误差

#SSE和方差:拟合数据与原始数据之间的平方误差之和。越接近0,拟合越完全(回归线无法解释的偏差)

#MSE均方误差:拟合数据与原始数据之间的平均误差平方和mse=metrics.mean_absolute_error(ytrain,ytest)

#RMSE均方根:MSE的平方根rmse=np.sqrt(mse)

#R平方决定系数: (1) SSR拟合数据与原始数据均值之差的平方和(2) SST原始数据与均值之差的平方和(反映因变量值的整体波动)

#SST=SSE+SSR R-square=SSR/SST 取值范围[0,1]越接近1,拟合越好

R 平方: r 2=model.score(xtrain[:np.newaxis],ytrain)

#Summary:r2接近1(大于0.8就很好了),mse更小(哪个最适合多元回归模型)

#主成分分析中:如果回归模型1有10个参数,则r2=0.85;将10个参数降维为3个参数,成为三元回归模型2,r2=0.93,因此主成分分析后的回归模型比之前更好

应用示例: # 给定建筑面积和物业费,预测总价:总价=影响因子1*建筑面积+影响因子2*物业费+回归系数-截距

2.KNN最近邻分类

基于分类数据构建模型,对未分类数据进行分类。分类问题是用来给事物贴标签的,标签是离散值。

(1)导入KNN模块并定义模型(2)输入自变量x和因变量y(3)预测

KNN:将样本分为N类。每个类别在空间中都有一个点。查看新样本最接近哪个类别,并且属于该类别。

例如:打架次数x,接吻次数y,新样本xy分析其所属电影类型

a=[18,90]

knn.预测(a)

报告错误:ValueError: 需要2D 数组,却得到1D 数组: 数组=[18 90]。

如果数据具有单个特征,则使用array.reshape(-1, 1) 重塑数据;如果数据包含单个样本,则使用array.reshape(1, -1) 重塑数据。

答:https://www.jianshu.com/p/60596270e94e

新sklearn中的所有数据都必须是二维矩阵,即使是单行或单列,也必须使用reshape进行转换。

a=np.array(a).reshape(1,-1) #reshape 将数组重组为数组

1.从sklearn导入knn模块导入neighbors

进口警告

warnings.filterwarnings("忽略")

#忽略发出的警告

构建knn模型导入neighbors.KNeighborsClassifier()

knn.fit(x,y)

获取预测值:knn.predict() 注意:这里sklearn需要是二维矩阵

2.植物分类(算法模型中有很多数据库,比如植物、房价等)

从sklearn导入数据集

iris=datasets.load_iris() 花卉属性库

knn=neighbors.KNeighborsClassifier()

knn.fit(x,y)

knn.predict()

3.合并合并方法:

合并(左,右,如何="内部",上,左_上,右_上)

方式:内交集、外并集、左连接、右连接

on:要添加的索引或列,在left和right中找到

left_on: 左

科普:http://datahref.com/archives/169iris是一个鸢尾花数据集,其中包含150个样本,对应于数据集的每一行。每个样本包含四个特征和样本的类别。

3.PCA主成分分析

示例:1000 个样本的100 个(x1, x2.x100) 维度减少为10 个(a1, a1.a10) 维度

10个变量a1-a10各由100个变量组成,关系为a1b1+a2b2+.+a10b10

a1=e11x1+e12x2+.+e1100x100

a1 是新变量x1 是旧变量

这里e11是由100个原始变量x组成的变量a1的特征向量

b1 是a1 的新特征值

核心:这里的e11是由100个原始变量x组成的变量a1的特征向量。在降维之前,有几个维度的特征向量。

核心:b1是新a1的特征值,对应几个维度

b1.b10从大到小排序,并做累加和。当贡献率达到85%后,前几个就是主成分。

1.加载主成分分析模块PCA from sklearn.decomposition import PCA

2、降维n为:pca=PCA(n_components=1)

3.构建模型:pca.fit(原始数据)pca.explained_variance输出特征值b,pca.components_output特征向量e1,pca.n_components输出分量编号

4.返回降维后的数据:x_pca=pca.transform(df)

5、如果特征值b很多,则筛选出85%以上的主成分:

s=pca.explained_variance_

df=pd.DataFrame({"b":s,"b_sum":s.cumsum()/s.sum()})

4. 聚类K 均值

https://blog.csdn.net/kevinelstri/article/details/52622960

1、根据现有样本的距离划分,首先需要确定样本大致分为多少类(簇)。

例如:已有4个点,位于簇内;再添加几个点,根据它们的位置将它们划分在簇周围,并重新计算簇的位置;重复步骤2,直到所有簇不再发生变化;

缺点:需要提前决定划分多少个簇

2.from sklearn.datasets.samples_generator import make_blobs:make_blobs聚类数据生成器

x,y_true=make_blobs(n_samples=300, #创建XX条数据

center=4, #生成4类数据,类别数

cluster_std=0.5, #每个类别的方差,方差越小,越聚集,方差越大,越分散=[0.2,0.2,0.4,0.7]

random_state=0, #随机数种子

n_features=2)#默认每个样本特征数为2 #x生成数据值,y生成数据对应的类别标签(0,1,2,3) 3.导入K-means模型:from sklearn.cluster import KMeans 4.构建模型: kmeans = KMeans(n_cluster=4)分为多少类/簇 5.kmeans.fit(x)  y_kmeans=kmeans.predict(x)生成每个数据聚类后的类别值0,1,2,3 6.cen = kmeans.cluster_centers获取几个不同簇的中心点 总结:#K-means聚类样本数据需要知道本身有多少类(簇n_clusters)才能K-Means分析,便于以后回归或分类

5.随机算法:蒙特卡洛模拟

np.where(condition,xy,)当condition为true,返回x;否则返回y 1. π的计算-xy离中心点的距离是否下雨1,若小于就在园内,不小于在圆外:正方形面积4r方,圆面积πr平方,比值=4π;正方形随机点的数量/圆随机点的数量求出π (1)np.random.uniform(min,max,n)最小值,最大值,随机个数均匀分布 (2)判断xy是否在正方形内还是圆内:计算xy的点和中心点(0,0)的距离是否小于1 d = np.sqrt((x-a)**2+(y-b)**2) res = sum(np.where(d (3)#导入circle模块 from matplotlib.patches import Circle circle = Circle(xy=(a,b),radius=r,alpha=0.5,color="gray") #xy圆心 radius半径 axes.add_patch(circle) plt.grid(True,linestyle="--",linewidth="0.8") 2.积分问题:# 积分的计算:落到灰色领域多少个点 函数y=x的平方,所以只要值小于y=x的平方就可以 xi = np.linspace(0,1,100) yi = xi**2 plt.plot(xi,yi,"--k") plt.fill_between(xi,yi,0,color="gray",alpha=0.5,label="area") #填充图表

用户评论

淡淡の清香

数据分析师的工作听起来很有意思!

    有13位网友表示赞同!

哥帅但不是蟋蟀

想知道数据分析师每天都在做些什么?

    有20位网友表示赞同!

古巷青灯

最近一直在想学习数据分析,感觉很有挑战性。

    有7位网友表示赞同!

|赤;焰﹏゛

做好数据分析师需要很强的逻辑思维能力吧?

    有15位网友表示赞同!

执念,爱

数据分析师在科技行业应该非常受欢迎啊!

    有18位网友表示赞同!

惦着脚尖摘太阳

学习数据分析可以帮我在工作中更胜一筹吗?

    有19位网友表示赞同!

封锁感觉

有没有一些好的资料推荐,可以入门学习数据分析呢?

    有9位网友表示赞同!

纯真ブ已不复存在

数据世界这么复杂,数据分析师们真是太厉害了!

    有12位网友表示赞同!

青墨断笺み

数据分析师是不是需要编程能力呀?

    有18位网友表示赞同!

别悲哀

希望未来有一天我能成为一名优秀的データ分析師!

    有19位网友表示赞同!

陌然淺笑

学习数据分析需要时间和精力付出吗?

    有20位网友表示赞同!

减肥伤身#

听起来数据分析能让你帮助公司做出更好的决策。

    有18位网友表示赞同!

暮光薄凉

数据分析师的工作环境应该很现代吧?

    有17位网友表示赞同!

挽手余生ら

想认识一些数据分析师,问问他们工作体验。

    有16位网友表示赞同!

浅巷°

我比较好奇数据分析应用在不同的行业的情况。

    有8位网友表示赞同!

墨染天下

数据分析是不是一个非常热门的专业?

    有11位网友表示赞同!

生命一旅程

有没有什么技能可以帮助我在数据分析方面的学习里加分?

    有6位网友表示赞同!

肆忌

数据分析师需要对很多工具很熟悉吗?

    有12位网友表示赞同!

tina

感觉做数据分析,自己也得喜欢看数字吧?

    有17位网友表示赞同!

笑叹★尘世美

数据分析的未来发展趋势是什么呢?

    有12位网友表示赞同!

【揭秘企业数据背后的秘密:专业数据分析师的职业之路】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活