ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

(二)单一因子简单分析

2021-03-12 11:31:17  阅读:246  来源: 互联网

标签:df s2 describe s5 因子 峰度 简单 数据 单一


案例数据: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()

 

标签:df,s2,describe,s5,因子,峰度,简单,数据,单一
来源: https://blog.csdn.net/qq_29644709/article/details/114667497

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有