(二)单一因子简单分析

案例数据:https://cloud.189.cn/t/aYbUv2JbEzUn

一、python数据挖掘相应扩展库

扩展库 简介
NumPy 提供数组支持以及相应的高效的处理函数
SciPy 提供矩阵支持以及矩阵相关的计算模块
Matplotlib 可视化、作图工具
pandas 数据分析、探索工具
scikit-learn 回归、分类、聚类等强大的机器学习库
Keras 深度学习,建立神经网络以及深度学习模型

二、数据特征分析

2.1 统计量分析:用统计指标对定量数据进行统计描述

2.1.1 集中趋势:均值、中位数、众数、分位数

均值 所有数据的平均值
中位数 数值从小到大排列,位于中间的那个
众数 数据集中出现最频繁的值
四分位数 所有值从小到大排列,第一个分割点是下四分位数,第二个分割点是中位数,第三个分割点是上四分位数

2.1.2 离中趋势:数据离散程度的衡量

标准差 衡量数据偏离均值的程度,值越大数据越离散,越小越聚拢
方差 标准差的平方

2.2 数据分布:偏态与峰态

2.2.1 偏度(平均值的偏):统计数据分布偏斜方向程度

正态

(二)单一因子简单分析

正偏

(二)单一因子简单分析

负偏

(二)单一因子简单分析

2.2.2 峰度:反映尖锐度或平坦度 ,以正态分布为零作为标准,正峰度表示相对尖锐的分布,负峰度表示相对平坦的分布

(二)单一因子简单分析

三、常用方法

方法 功能
mean() 算数平均数
sum() 计算样本总和
var() 计算样本方差
std() 计算样本标准差
corr() 计算样本Spearman(Pearson)相关系数矩阵
skew() 计算样本偏度(三阶矩)
kurt() 计算样本峰度(四阶矩)
describe() 样本基本描述
median() 计算中位数
quantile() 求分位数,q=0.25/0.5/0.75
mode() 求众数

四、单一列数值分析

# 导入包
import  pandas as pd
import seaborn as  sns

# 读取数据
df=pd.read_csv("./data/HR.csv")

# 拿到 satisfaction_level 数据
s = df["satisfaction_level"]

# 查看null异常值
s[s.isnull()]


# 查看异常值具体行信息
df[df['satisfaction_level'].isnull()]


# 删除空值
s = s.dropna()
# 填充空值
# s = s.fillna()

s.describe()

# ----------------------
# 拿到 last_evaluation 数据
s2 = df["last_evaluation"]

# 查看描述
s2.describe()

# 正偏:大部分数据比平均数小;负偏:大部分数据比平均数大
s2.skew()

# 正值:比正太分布陡峭;负值:比正太分布平坦
s2.kurt()

# 去除异常值
s2 = s2[s2<1]
s2

# ---------------------

# 或者用四分位数去除离群值
s3 = df['last_evaluation']


q_low = s3.quantile(q=0.25)
q_high = s3.quantile(q=0.75)
q_interval = q_high-q_low
k = 1.5

s3 = s3[s3<q_high+k*q_interval][s3>q_low-k*q_interval]
s3.describe()

# -------------------
# 得到 number_project 数据
s4 = df["number_project"]

# 查看详情
s4.describe()

# 偏度、峰度查看
print("skew",s4.skew())
print("kurt",s4.kurt())

# 统计   参数:normalize=True:出现次数构成比例
s4.value_counts(normalize=True).sort_index()

# 得到 average_monthly_hours
s5 = df["average_monthly_hours"]
s5.describe()

# --------------------------------
# 剔除异常值
s5 = s5[s5<s5.quantile(0.75)+1.5*(s5.quantile(0.75)-s5.quantile(0.25))][s5>s5.quantile(0.25)-1.5*(s5.quantile(0.75)-s5.quantile(0.25))]
s5.describe()

# 某个区间内出现多少次
np.histogram(s5.values,bins=10)

# 自定义间隔
np.histogram(s5,bins=np.arange(s5.min(),s5.max()+10,10))

# ------------------------------
# 对比分析
df.loc[:,["last_evaluation","department"]].groupby("department").mean()

 

上一篇:WIN10系统ThinkPad S5 3D摄像头终极解决方案(实感深度摄像头) 


下一篇:总结3.22