当前位置: 首页 > news >正文

零基础学习做网站重庆设计网站

零基础学习做网站,重庆设计网站,中国菲律宾南海开战,网站建设 知识库1. 离散分布分析示例 相关库: pandas详细用法 numpy详细用法 1.1 引入算法库 # 引入 pandas库 import pandas as pd # 引入 numpy库 import numpy as np# 读取数据 dfpd.read_csv("data/HR.csv")# 查看数据 df Out[6]: satisfaction_level last_eval…

1. 离散分布分析示例

相关库:

pandas详细用法

numpy详细用法

1.1 引入算法库

# 引入 pandas库
import pandas as pd # 引入 numpy库
import numpy as np# 读取数据
df=pd.read_csv("data/HR.csv")# 查看数据
df
Out[6]: satisfaction_level  last_evaluation  ...  department  salary
0                    0.38             0.53  ...       sales     low
1                    0.80             0.86  ...       sales  medium
2                    0.11             0.88  ...       sales  medium
3                    0.72             0.87  ...       sales     low
4                    0.37             0.52  ...       sales     low...              ...  ...         ...     ...
14997                0.11             0.96  ...     support     low
14998                0.37             0.52  ...     support     low
14999                 NaN             0.52  ...     support     low
15000                 NaN        999999.00  ...        sale     low
15001                0.70             0.40  ...        sale     nme
[15002 rows x 10 columns]

1.2 Satisfaction Level的分析

(1)分析满意度

过滤异常值

# 创建新变量
[15002 rows x 10 columns]
sl_s=df["satisfaction_level"]# 判断是否有异常值
sl_s.isnull()
Out[8]: 
0        False
1        False
2        False
3        False
4        False...  
14997    False
14998    False
14999     True
15000     True
15001    False
Name: satisfaction_level, Length: 15002, dtype: bool# 查询异常值
sl_s[sl_s.isnull()]
Out[9]: 
14999   NaN
15000   NaN
Name: satisfaction_level, dtype: float64# 列出异常值信息
df[df["satisfaction_level"].isnull()]
Out[10]: satisfaction_level  last_evaluation  ...  department  salary
14999                 NaN             0.52  ...     support     low
15000                 NaN        999999.00  ...        sale     low
[2 rows x 10 columns]# 丢弃异常值
sl_s=sl_s.dropna()# 再次查看是否有异常值
sl_s.isnull()
Out[12]: 
0        False
1        False
2        False
3        False
4        False...  
14995    False
14996    False
14997    False
14998    False
15001    False
Name: satisfaction_level, Length: 15000, dtype: bool
# 都是False,没有问题

基础分析:

# 均值
sl_s.mean()
Out[13]: 0.6128393333333333# 最大值
sl_s.max()
Out[14]: 1.0# 最小值
sl_s.min()
Out[15]: 0.09# 中位数
sl_s.median()
Out[16]: 0.64# 分位数
sl_s.quantile(q=0.25)
Out[17]: 0.44# 分位数
sl_s.quantile(q=0.75)
Out[18]: 0.82# 偏度
sl_s.skew()
Out[19]: -0.47643761717258093# 峰度
sl_s.kurt()
Out[20]: -0.6706959323886252

离散化分布分析:

np.histogram(sl_s.values,bins=np.arange(0.0, 1.1, 0.1))
Out[21]: 
(array([ 195, 1214,  532,  974, 1668, 2146, 1973, 2074, 2220, 2004],dtype=int64),array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]))

上述代码,使用了NumPy的np.histogram()函数来计算数据的直方图。

具体而言,np.histogram(sl_s.values, bins=np.arange(0.0, 1.1, 0.1))的含义是:

  • sl_s.values是一个Series对象,表示满意度(satisfaction_level)的数据。
  • np.arange(0.0, 1.1, 0.1)用于指定直方图的边界范围,从0.0到1.0,步长为0.1。
  • np.histogram()函数将根据指定的边界范围对数据进行分组,并返回每个分组中数据的频数和边界值。

输出结果中的第一个数组表示每个分组中数据的频数,第二个数组表示分组的边界值。

在这个例子中,结果显示了从0.0到1.0的10个分组,并给出了每个分组的频数。例如,频数为195的分组包含了满意度在0.0到0.1之间的数据。

这样的直方图可以帮助我们了解满意度数据的分布情况,以及各个区间内的数据数量。

1.3 LastEvaluation的分析

le_s=df["last_evaluation"]le_s[le_s.isnull()]
Out[25]: Series([], Name: last_evaluation, dtype: float64)  # 没有异常的值le_s.mean()
Out[26]: 67.37373216904412        # le_s.max()
Out[28]: 999999.0   # 最大值过大,可能有问题le_s.min()
Out[29]: 0.36     # 最小值太小,可能有问题le_s.median()
Out[30]: 0.72  # 当前中位数正常le_s.std()
Out[31]: 8164.407523745649le_s.skew()
Out[32]: 122.48265175204614  # 偏度,说明均值比大部分值都大很多le_s.kurt()
Out[33]: 15001.999986807796  # 峰度,说明该分布形变非常大# 获取大于1的值
le_s[le_s>1]
Out[34]: 
15000    999999.0    # 只有这个值大于1,说明这个值有问题,需要抛弃掉
Name: last_evaluation, dtype: float64  # 偏离太多的异常值,会对均值和方差造成影响# 过滤异常值
le_s=le_s[le_s<=1]
le_s[le_s>1]
Out[36]: Series([], Name: last_evaluation, dtype: float64)

提取正常值信息

le_s=df["last_evaluation"]
q_low=le_s.quantile(q=0.25)
q_high=le_s.quantile(q=0.75)
q_interval=q_high-q_low
k=1.5
le_s=le_s[le_s<q_high+k*q_interval][le_s>q_low-k*q_interval]
le_s
Out[49]: 
0        0.53
1        0.86
2        0.88
3        0.87
4        0.52... 
14996    0.53
14997    0.96
14998    0.52
14999    0.52
15001    0.40
Name: last_evaluation, Length: 15001, dtype: float64# 获取数量
len(le_s)
Out[50]: 15001# 获取分布图
np.histogram(le_s.values,bins=np.arange(0.0, 1.1, 0.1))
Out[51]: 
(array([   0,    0,    0,  179, 1390, 3396, 2234, 2062, 2752, 2988],dtype=int64),array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]))

去掉异常值后重新计算

le_s.max()
Out[52]: 1.0  # 正常,在0~1区域内le_s.min()
Out[53]: 0.36  # 正常,在0~1区域内le_s.mean()
Out[54]: 0.7160675954936337  # 均值不是太大le_s.median()
Out[55]: 0.72        # 中位数不是太大,且接近均值,说明差异性低le_s.std()
Out[56]: 0.17118464250786233        le_s.skew()
Out[57]: -0.02653253746872579    # 偏度小于0,没有异常le_s.kurt()
Out[58]: -1.2390454655108427     # 峰度小于0,没有异常

1.4 NumberProject的分析

静态结构分析:

np_s=df["number_project"]
np_s[np_s.isnull()]
Out[60]: Series([], Name: number_project, dtype: int64)np_s.mean()
Out[61]: 3.8026929742700974np_s.std()
Out[62]: 1.232732779200601np_s.median()
Out[63]: 4.0np_s.max()
Out[64]: 7np_s.min()
Out[65]: 2np_s.skew()
Out[66]: 0.3377744235231047np_s.kurt()
Out[67]: -0.49580962709450604np_s.value_counts()
Out[68]: 
number_project
4    4365
3    4055
5    2761
2    2391
6    1174
7     256
Name: count, dtype: int64np_s.value_counts(normalize=True)
Out[70]: 
number_project
4    0.290961
3    0.270297
5    0.184042
2    0.159379
6    0.078256
7    0.017064
Name: proportion, dtype: float64np_s.value_counts(normalize=True).sort_index()
Out[71]: 
number_project
2    0.159379
3    0.270297
4    0.290961
5    0.184042
6    0.078256
7    0.017064
Name: proportion, dtype: float64

在上述分析代码中,静态结构分析的内容主要体现在对"number_project"列数据的描述统计部分,包括以下代码段:

np_s.mean()  # 平均值
np_s.std()  # 标准差
np_s.median()  # 中位数
np_s.max()  # 最大值
np_s.min()  # 最小值
np_s.skew()  # 偏度
np_s.kurt()  # 峰度
np_s.value_counts()  # 频数统计
np_s.value_counts(normalize=True)  # 频率统计
np_s.value_counts(normalize=True).sort_index()  # 按索引排序的频率统计

这些统计指标可以帮助我们了解"number_project"列数据的分布和特征,从而进行静态结构分析。例如,通过计算平均值、标准差、偏度和峰度等指标,你可以了解该列数据的集中趋势、离中趋势、偏态和峰态情况。而频数统计和频率统计可以提供不同取值的出现次数和占比,进一步展示数据的分布情况。

1.5 AverageMonthlyHours的分析

amh_s=df["average_monthly_hours"]
amh_s.mean()
Out[75]: 201.0417277696307  # 均值比较高amh_s.std()
Out[76]: 49.94181527437925  # 标准差,比较正常amh_s.max()
Out[77]: 310amh_s.min()
Out[78]: 96amh_s.skew()
Out[79]: 0.05322458779916304  # 偏度,稍微振偏amh_s.kurt()
Out[80]: -1.1350158577565719   # 峰度,比较平缓# 用异常值公式剔除异常值
amh_s=amh_s[amh_s<amh_s.quantile(0.75)+1.5*(amh_s.quantile(0.75)-amh_s.quantile(0.25))][amh_s>amh_s.quantile(0.25)-1.5*(amh_s.quantile(0.75)-amh_s.quantile(0.25))]len(amh_s)
Out[82]: 15002  # 原数量就是15002,说明没有异常值# 查看分布
np.histogram(amh_s.values, bins=np.arange(amh_s.min(),amh_s.max()+10, 10))
Out[84]: 
(array([ 168,  171,  147,  807, 1153, 1234, 1075,  824,  818,  758,  751,738,  856,  824,  987, 1002, 1045,  935,  299,  193,  131,   86],dtype=int64),array([ 96, 106, 116, 126, 136, 146, 156, 166, 176, 186, 196, 206, 216,226, 236, 246, 256, 266, 276, 286, 296, 306, 316], dtype=int64))

1.6 TimeSpendCompany的分析

tsc_s=df["time_spend_company"]
tsc_s.value_counts().sort_index()
Out[86]: 
time_spend_company
2     3245
3     6445
4     2557
5     1473
6      718
7      188
8      162
10     214
Name: count, dtype: int64
tsc_s.mean()
Out[87]: 3.498066924410079

上述数据中,根据sort_index()结果可以得知,没有存在异常数。

1.7 WorkAccident的分析

wa_s=df["Work_accident"]
wa_s.value_counts()
Out[89]: Work_accident
0    12833
1     2169
Name: count, dtype: int64# 均值
wa_s.mean()
Out[90]: 0.14458072257032395 #说明事故率是百分之十四点四

1.8 Left的分析

l_s=df["left"]# 分布
l_s.value_counts()
Out[95]: 
left
0    11428
1     3574
Name: count, dtype: int64  # 离职率高

1.9 PromotionLast5Years的分析

pl5_s=df["promotion_last_5years"]
pl5_s.value_counts()
Out[97]: 
promotion_last_5years
0    14683
1      319
Name: count, dtype: int64  # 晋升数为319,说明只有少部分得到晋升 

1.10 Salary的分析

s_s=df["salary"]s_s.where(s_s!="nme").dropna().value_counts()
Out[103]: 
salary
low       7318
medium    6446
high      1237
Name: count, dtype: int64   # 说明高收入人群是极少数,低收入人群是半数,部分人群中等收入

1.11 Department的分析

d_s=df["department"]
d_s.value_counts(normalize=True)  # 查询分布比例
Out[105]: 
department
sales          0.275963
technical      0.181309
support        0.148647
IT             0.081789
product_mng    0.060125
marketing      0.057192
RandD          0.052460
accounting     0.051127
hr             0.049260
management     0.041994
sale           0.000133
Name: proportion, dtype: float64# 移除异常值   
d_s=d_s.where(d_s!="sale").dropna()d_s.value_counts(normalize=True)
Out[108]: 
proportion
0.276000    0.1
0.181333    0.1
0.148667    0.1
0.081800    0.1
0.060133    0.1
0.057200    0.1
0.052467    0.1
0.051133    0.1
0.049267    0.1
0.042000    0.1
Name: proportion, dtype: float64

1.12 简单对比分析操作

(1)对比分析

剔除异常值

# 移除异常值,这里移除的是isNull()查出来的异常值
df=df.dropna(axis=0,how="any")# 移除异常值,这里根据规则,移除不符合规范的值
df=df[df["last_evaluation"]<=1][df["salary"]!="name"][df["department"]!="sale"]# 清洗后的值
df
Out[110]: satisfaction_level  last_evaluation  ...  department  salary
0                    0.38             0.53  ...       sales     low
1                    0.80             0.86  ...       sales  medium
2                    0.11             0.88  ...       sales  medium
3                    0.72             0.87  ...       sales     low
4                    0.37             0.52  ...       sales     low...              ...  ...         ...     ...
14995                0.37             0.48  ...     support     low
14996                0.37             0.53  ...     support     low
14997                0.11             0.96  ...     support     low
14998                0.37             0.52  ...     support     low
15001                0.70             0.40  ...        sale     nme

根据部门分组,生成新表

df.loc[:,["satisfaction_level","last_evaluation","number_project","department"]].groupby("department").mean()
Out[131]: satisfaction_level  last_evaluation  number_project
department                                                      
IT                     0.618142         0.716830        3.816626
RandD                  0.619822         0.712122        3.853875
accounting             0.582151         0.717718        3.825293
hr                     0.598809         0.708850        3.654939
management             0.621349         0.724000        3.860317
marketing              0.618601         0.715886        3.687646
product_mng            0.619634         0.714756        3.807095
sales                  0.614447         0.709717        3.776329
support                0.618300         0.723109        3.803948
technical              0.607897         0.721099        3.877941

上述数据中,根据 satisfaction_level 的平均值可以看出对HR的满意度是比较低的。其他的数据也可以反映出相应的情况。

脚本解析:

注意,在这个示例中,使用了.loc来选择多个列,并通过列表传递给.groupby()函数。然后,调用.mean()函数来计算平均值。执行该代码将会输出每个部门的各项指标的平均值。
http://www.yayakq.cn/news/801029/

相关文章:

  • 响应式商业网站开发实训报告品牌网络授权书
  • 衡水网站推广公司城乡建设部官方网站
  • 网站建设与管理 答案荣成城市规划建设局网站
  • xp做网站签证网站建设
  • 一级a做爰片免播放器网站厦门哪里有做网站
  • 石家庄网站设计公司排名浙江省建设监理协会管网站
  • 百度联盟的网站怎么做网站 沙盒
  • 可以做文档赚钱的网站张雪峰谈广告学专业
  • 百度建站个人wordpress 主题
  • 网站开发的开题报告引言做网站被捉
  • 微信网站模板下载优化大师是什么
  • 安徽建设学校网站wordpress企业免费模板下载
  • 邢台做wap网站价格长腿蜘蛛wordpress
  • 成都网站建设推广学网络营销
  • 网站制作架构无锡市网站搭建
  • 网站搭建外贸wordpress项目展示设置
  • 网站后台关键词一个人看的免费视频高清直播
  • 河南建设厅网站首页wordpress 去掉阅读
  • 国外网站流量网上找客户有哪些网站
  • 电商网站建设选迅法网景德镇网站制作公司
  • 学校网站建设会议讲话稿电子商务网站建设用什么语言
  • 朱能源做网站高端大气企业网站源码
  • 付第三期网站建设费的账务处理用深度liunx做网站
  • 学校招办网站怎么做长春网站排名优化报价
  • 来宾住房和建设局网站ps做网站宽度
  • 运营个网站需要什么条件域名可以做网站
  • seo网站管理招聘备案号网站下边
  • 福州建网站公司龙湖什么网站做宣传
  • 龙岗网站制作效果东莞市住房和城乡建设局网站
  • 北京 成品网站网站seo排名优化方法