数据分析之常用数据

理论铺垫

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

均值用于衡量连续值,分布较为规律连续值

中位数用于存在异常值较大或较小的数据

众数主要用于离散值集中趋势衡量

分位数从小到大排列 每几个一组

四分位数:

Q1的位置=(n+1)*0.25

Q2的位置=(n+1)*0.5

Q3的位置=(n+1)*0.75

例如:

1 2 3 4 5 6 7

1 2 2.5 3 4 5 6 7 7.5 8 9

离中趋势:标准差、方差

 

数据分布:偏态与峰态、正态分布与三大分布

平均值的偏

偏态分布:

偏态系数:为正为正偏 均值较大 为负为负偏 均值较小

峰态系数:数据分布集中强度

越集中 峰值越高

正态分布与三大分布:

正态分布公式:

卡方分布

T分布:

 

F分布:

抽样理论:抽样误差、抽样精度

抽样平均误差计算公式:

重复(有放回)不重复(无放回)

估计总体时抽样数目的确定:

例子:

从鱼塘不同部位(有放回抽样)

2-2*0.07~2+2*0.07

1.86~2.14

 

也是有放回抽样,这里的Z是2

代码实现:

import pandas as pd 引入pandas

df=pd.read_csv("./data/HR.csv")导入数据

type(df)

<class 'pandas.core.frame.DataFrame'>

type(df["satisfaction_level"])查看某数据列类型

<class 'pandas.core.series.Series'>

df.mean() 求均值

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())查看均值类型

<class 'pandas.core.series.Series'>

df["satisfaction_level"].mean() 直接利用数据列求均值

0.6128393333333333

 

df.median() 查看中位数

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() 查看某列数据中位数

0.64

 

df.quantile(q=0.25) 查看分位数 q=0.25为四分位数

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) 查看某列数据四分位数

0.44

df.mode() 查看众数(有可能有缺省值)因为众数可能不唯一

   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() 查看某列数据众数

0    0.1

dtype: float64

 

type(df["department"].mode()) 查看众数数据类型

<class 'pandas.core.series.Series'>

df.std() 查看标准差

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() 查看某列标准差

0.24862338135944925

df.var() 查看方差

satisfaction_level       6.181359e-02

last_evaluation          6.665755e+07

number_project           1.519630e+00

average_monthly_hours    2.494185e+03

time_spend_company       2.131754e+00

Work_accident            1.236854e-01

left                     1.814911e-01

promotion_last_5years    2.081307e-02

dtype: float64

df["satisfaction_level"].var() 查看某列数据方差

0.061813585758606134

 

df.sum() 求和

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() 某列数据求和

9192.59

 

df.skew() 查看偏态系数

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() 查看某列数据偏态系数

-0.47643761717258093

 

如果偏态系数为负值,则均值偏小

 

df.kurt() 查看峰态系数

satisfaction_level          -0.670696

last_evaluation          15001.999987

number_project              -0.495810

average_monthly_hours       -1.135016

time_spend_company           4.774353

Work_accident                2.086664

left                        -0.489485

promotion_last_5years       42.064357

dtype: float64

df["satisfaction_level"].kurt() 查看某列数据峰态系数

-0.6706959323886252

 

比正太分布较为平坦

 

import scipy.stats as ss 导入统计包

ss.norm 正态分布 是一个对象

<scipy.stats._continuous_distns.norm_gen object at 0x000001CF06E8F748>

ss.norm.stats(moments="mvsk") 同时查看 均值 方差 偏态系数 峰态系数

(array(0.), array(1.), array(0.), array(0.))

ss.norm.pdf(0.0) 查看横坐标为0时的坐标系中对应的纵坐标的值

0.3989422804014327

ss.norm.ppf(0.9) 从负无穷到几积分为0.9时的值 在坐标轴上

1.2815515655446004

ss.norm.cdf(2) 从负无穷积分为2累计概率为几

0.9772498680518208

ss.norm.cdf(2)-ss.norm.cdf(-2) 正2倍标准差减去负2倍标准差 中间的累计概率

0.9544997361036416

ss.norm.rvs(size=10) 得到10个符合正态分布的数

array([-0.03231961,  0.22159262,  0.15233949, -0.04985474, -1.29952828,

        0.49948724, -0.27321615,  0.25641671, -1.42843903, -0.58849264])

ss.chi2 得到卡方分布

<scipy.stats._continuous_distns.chi2_gen object at 0x000001CF06EEE128>

ss.t 得到t分布

<scipy.stats._continuous_distns.t_gen object at 0x000001CF06F5C780>

ss.f 得到f分布

<scipy.stats._continuous_distns.f_gen object at 0x000001CF06EF4860>

 

df.sample(10) 抽样10条

       satisfaction_level  last_evaluation  ...   department  salary

2309                 0.62             0.60  ...        sales     low

7605                 0.96             0.95  ...      support  medium

10525                0.75             0.53  ...  product_mng     low

7733                 0.92             0.80  ...        sales     low

1146                 0.80             0.95  ...      support     low

752                  0.37             0.57  ...  product_mng     low

2792                 0.96             0.92  ...    technical  medium

6591                 0.80             0.91  ...   accounting  medium

4369                 0.84             0.97  ...        sales     low

3085                 0.63             0.76  ...           hr     low

[10 rows x 10 columns]

 

df.sample(frac=0.001) 抽样占数据比0.001

       satisfaction_level  last_evaluation  ...  department  salary

4199                 0.98             0.51  ...   marketing  medium

4498                 0.85             0.58  ...          IT  medium

2831                 0.49             0.96  ...   marketing  medium

14138                0.58             0.76  ...       sales     low

9835                 0.51             0.85  ...          IT    high

8200                 0.21             0.49  ...          hr     low

8682                 0.33             0.51  ...     support  medium

10409                0.40             0.58  ...  accounting     low

3670                 0.49             0.92  ...   marketing     low

11366                0.76             0.80  ...       sales  medium

8059                 0.84             0.73  ...     support     low

9640                 0.64             0.55  ...       sales     low

12365                0.91             0.87  ...   technical     low

12619                0.43             0.51  ...       sales     low

11753                0.50             0.73  ...          IT  medium

[15 rows x 10 columns]

课程学习地址:https://coding.imooc.com/class/185.html

统计数据:HR.csv   提取码: ys2t

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值