数据描述性分析——Python

该文展示了使用Python中的numpy,scipy,sklearn等库进行基本统计量计算,包括算术、几何、调和平均数、中位数、众数等;数据转换如中心化、归一化、Box-Cox变换;距离计算如闵氏距离、余弦相似度;矩阵计算如行列式、特征值;以及描述性分析和可视化方法,如直方图、箱型图、相关性分析和热力图。最后,文中还涵盖了最小二乘法的应用。
摘要由CSDN通过智能技术生成

1.基本统计量

import numpy as np
from scipy.stats import gmean,hmean
#举例:
s=[2,3,4,9,5,6,7,8,8]

#算数平均数
mean1=sum(s)/len(s)

#几何平均数
mean2=np.power(np.prod(s),1/len(s))
mean3=gmean(s)

#调和平均数
mean4=hmean(s)
mean5=len(s)/sum([1/i for i in s])

#平方平均数/二范数
mean6=np.sqrt(sum(i*i for i in s)/len(s))

#中位数
mean7=sorted(s)[(len(s)-1)//2] if len(s)%2==1 else (sorted(s)[(len(s)-1)//2]+sorted(s)[(len(s)-1)//2+1])/2

#众数
mode = max(s,key=s.count)

#极差
range=np.ptp(s)

#方差
variance=np.var(s)

#变异系数
cv=np.std(s)/np.mean(s)

#协方差
cov=np.cov(np.array(s),np.array(s)*2)

#相关系数
corrcoef=np.corrcoef(np.array(s),np.array(s)*2)

2.数据转换

import numpy as np
from scipy.special import boxcox
from sklearn.preprocessing import MinMaxScaler
data=[1,3,7,9,4,6,3,8]

#中心化
data1=data-np.mean(data)

#min-max标准化/归一化
data2=MinMaxScaler().fit_transform(np.array(data).reshape(-1,1))

#Box-Cox转换:改善数据正态性
data3=boxcox(data, 0.25)

#log函数转换
data4=np.log10(data)/np.log10(max(data))

#z-score标准化
data5=(np.array(data)-np.mean(data))/np.var(data)

3.距离计算

import numpy as np
x=np.array([1,3,4,6,7,8])
y=np.array([2,7,4,12,7,9])

#闵氏距离
args=3#参数可调
dist1=np.power(np.sum(np.power(abs(x-y),args)),1/args)

#余弦相似度
args=2
dist2=x.dot(y)/(np.power(np.sum(np.power(abs(x-0),args)),1/args)*np.power(np.sum(np.power(abs(y-0),args)),1/args))

4.矩阵计算

import numpy as np
#计算行列式
a=np.array([[1,2,3],[4,3,2],[9,7,3]])
det=np.linalg.det(a)

#特征值和特征向量
lamda,x=np.linalg.eig(a)

5.描述性分析

#读取数据查看
path = "./Filename.xls"
data_df=pd.read_excel(path)
data_df.head(10)
data_df.describe()

#可视化
import matplotlib.pyplot as plt
%matplotlib inline
#中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#箱型图
data_df[['feature']].boxplot()
#直方图
data_df[['feature']].hist(figsize = (6,6))
#相关性系数
data_df[['feature1', 'feature2', 'feature3']].corr()
#热力图
import seaborn as sns
fig, axes = plt.subplots(figsize = (7, 6))
sns.heatmap(data_df[['feature1', 'feature2', 'feature3']].corr(), ax=axes, annot=True,fmt= '.2f', linewidths=0.03, cmap="magma")
plt.savefig("heatmap.png")
#两两关系图
sns.pairplot(data=data_df,hue='Research')

6.最小二乘

\bg_white \large min||Ax-y||^2_2\\ x\in R^n,A\in R^{m\times n},y\in R^m\\x=(A^TA)^{-1}A^Ty

A = part_data_df[['feature1', 'feature2']]
y = part_data_df[['result']]
x=np.dot(np.dot(np.matrix(np.dot(A.T, A)).I,A.T),y)
#x=np.dot(np.linalg.inv(np.dot(A.T,A)),np.dot(A.T,b))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值