数据分析与挖掘建模实战-单因子探索分析与可视化

2019-01-06  本文已影响0人  志䦀zy
first
在这里插入图片描述

理论铺垫:

在这里插入图片描述 exp2

编码实现

type(df)
Out[10]: pandas.core.frame.DataFrame
type(df["satisfaction_level"])
Out[11]: pandas.core.series.Series
#平均数
df.mean()
Out[12]: 
satisfaction_level         0.612839
last_evaluation           67.373732
number_project             3.802693
average_monthly_hours    201.041728
time_spend_company         3.498067
Work_accident              0.144581
left                       0.238235
promotion_last_5years      0.021264
dtype: float64
type(df.mean())
Out[13]: pandas.core.series.Series
df["satisfaction_level"].mean()
Out[14]: 0.6128393333333343
#中位数
df.median()
Out[15]: 
satisfaction_level         0.64
last_evaluation            0.72
number_project             4.00
average_monthly_hours    200.00
time_spend_company         3.00
Work_accident              0.00
left                       0.00
promotion_last_5years      0.00
dtype: float64
df["satisfaction_level"].median()
Out[16]: 0.64
#四分位数
df.quantile(q=0.25)
Out[17]: 
satisfaction_level         0.44
last_evaluation            0.56
number_project             3.00
average_monthly_hours    156.00
time_spend_company         3.00
Work_accident              0.00
left                       0.00
promotion_last_5years      0.00
Name: 0.25, dtype: float64
df["satisfaction_level"].quantile(q=0.25)
Out[18]: 0.44
#众数 表示出现最多的两个数字都显示
df.mode()
Out[19]: 
   satisfaction_level  last_evaluation   ...    department  salary
0                 0.1             0.55   ...         sales     low
1                 NaN              NaN   ...           NaN     NaN
[2 rows x 10 columns]
df["satisfaction_level"].mode()
Out[20]: 
0    0.1
dtype: float64
df["department"].mode()
Out[21]: 
0    sales
dtype: object
#类型 series
type(df["department"].mode())
Out[22]: pandas.core.series.Series

#离中趋势
df.std()
Out[23]: 
satisfaction_level          0.248623
last_evaluation          8164.407524
number_project              1.232733
average_monthly_hours      49.941815
time_spend_company          1.460053
Work_accident               0.351689
left                        0.426018
promotion_last_5years       0.144267
dtype: float64
df["satisfaction_level"].std()
Out[24]: 0.24862338135945417
#variance
df["satisfaction_level"].var()
Out[25]: 0.06181358575860858

#sum

df.sum()
Out[26]: 
satisfaction_level                                                 9192.59
last_evaluation                                                1.01074e+06
number_project                                                       57048
average_monthly_hours                                              3016028
time_spend_company                                                   52478
Work_accident                                                         2169
left                                                                  3574
promotion_last_5years                                                  319
department               salessalessalessalessalessalessalessalessaless...
salary                   lowmediummediumlowlowlowlowlowlowlowlowlowlowl...
dtype: object
#离散数据将其连接起来了
df["satisfaction_level"].sum()
Out[27]: 9192.59

#偏态系数 skew
df.skew()
Out[28]: 
satisfaction_level        -0.476438
last_evaluation          122.482652
number_project             0.337774
average_monthly_hours      0.053225
time_spend_company         1.853530
Work_accident              2.021481
left                       1.229057
promotion_last_5years      6.637677
dtype: float64
# 负偏 平均值高于
df["satisfaction_level"].skew()
Out[29]: -0.47643761717258093
#峰态系数 kurt -0.67比正态系数稍微平缓一些
df["satisfaction_level"].kurt()
Out[30]: -0.6706959323886252

#分布函数 scipy
import scipy.stats as ss
ss.norm
Out[32]: <scipy.stats._continuous_distns.norm_gen at 0x23ed69af550>
ss.norm.stats(moments="mvsk")
Out[33]: (array(0.), array(1.), array(0.), array(0.))
# mean var skew kurt 对应的四个值显示

#输入横坐标 输出纵坐标的值 分布函数在0上面的值
ss.norm.pdf(0.0)
Out[34]: 0.3989422804014327
# ppf: input [0-1] 的累计值  
ss.norm.ppf(0.9)
Out[35]: 1.2815515655446004
#表示 从-无穷 到 1.28累计的值为0.9

#cdf 从-无穷到2 累计概率为输出值
ss.norm.cdf(2)
Out[36]: 0.9772498680518208

# [-2S , +2S] 累计概率 标准差
ss.norm.cdf(2) - ss.norm.cdf(-2)
Out[37]: 0.9544997361036416
#n个符合正态分布的数字
ss.norm.rvs(size=20)
Out[38]: 
array([ 1.18630174,  0.64605501,  1.49520852,  0.57141885, -1.19143881,
        1.21875141,  0.40884864,  0.32411045,  1.59943188, -1.29002259,
       -0.23528032, -0.30643705,  0.61237353,  1.27531641, -0.54063283,
        1.23197941,  1.3667812 , -0.36843242,  0.37077125, -1.10467065])

# k^2分布

# t分布

#f分布
ss.chi2
Out[39]: <scipy.stats._continuous_distns.chi2_gen at 0x23ed69d10b8>
ss.t
Out[40]: <scipy.stats._continuous_distns.t_gen at 0x23ed6a42cf8>
ss.f
Out[41]: <scipy.stats._continuous_distns.f_gen at 0x23ed69e1940>


#抽样
df.sample(n=10)
Out[42]: 
       satisfaction_level  last_evaluation   ...     department  salary
8281                 0.21             0.55   ...      technical     low
9649                 0.47             0.65   ...             hr     low
4390                 0.93             0.76   ...      technical  medium
10068                0.87             0.66   ...    product_mng     low
14199                0.49             0.49   ...    product_mng    high
7347                 0.30             0.47   ...          sales     low
10073                0.23             0.87   ...     accounting    high
10017                0.89             0.84   ...          sales  medium
14409                0.10             0.89   ...      technical     low
7897                 0.78             0.87   ...      technical  medium
[10 rows x 10 columns]
#frac = 0.001 抽样比例
df.sample(frac=0.001)
Out[44]: 
       satisfaction_level  last_evaluation   ...     department  salary
14319                0.71             0.87   ...             hr  medium
3719                 0.57             0.45   ...      technical  medium
2638                 0.69             0.61   ...      technical  medium
13826                0.87             0.89   ...      marketing     low
4412                 0.55             0.93   ...     management     low
3567                 0.53             0.85   ...      technical  medium
6082                 0.80             0.40   ...        support    high
11682                0.58             0.67   ...      technical  medium
8142                 0.90             0.74   ...        support  medium
4939                 0.69             0.59   ...        support  medium
6995                 0.18             0.46   ...        support  medium
13304                0.45             0.63   ...     management  medium
14695                0.38             0.52   ...          sales     low
8362                 0.76             0.94   ...      technical  medium
1440                 0.82             0.93   ...    product_mng  medium
[15 rows x 10 columns]

#series 也可以抽样
df["satisfaction_level"].sample(15)
Out[45]: 
170      0.81
14508    0.40
5922     0.64
6839     0.64
14231    0.11
8370     0.23
3000     0.24
2972     0.22
9851     0.67
7634     0.75
14174    0.90
1412     0.46
5797     0.21
13864    0.65
12813    0.59
Name: satisfaction_level, dtype: float64

建议打开官网 随用随查

数据分类

单属性分析

1.异常值分析:离散异常值 连续异常值 常识异常值

连续异常值

离散异常值

知识异常值

2.对比分析:绝对数与相对数,时间、空间、理论维度比较(通过对比达到认识与了解数据的事实的方法) 对比分析是宽范围的分析方法 有简单的复合因子分析

1.比什么

2.怎么比

image.png

3.结构分析:各组成部分的分布于规律(可看作比例相对数的比较 重点研究一个物体的总体结构的相关与差异性)

image.png

4.分布分析:数据分布频率的显式分析

satisfaction_level的分析

#判断异常值
sl_s = df["satisfaction_level"]
sl_s.isnull()
Out[7]: 
0        False
1        False
2        False
3        False
.....

sl_s[sl_s.isnull()]
Out[8]: 
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]
上一篇 下一篇

猜你喜欢

热点阅读