数据分析第三次课随堂作业 - 0725

感谢Dr.fish的耐心讲解和细致回答。

本次课的随堂作业如下:

基于HRSalaries.csv数据回答问题:

  1. 计算HRSalaries数据中评分Review_Score的均值和中位数,并判断其偏度是左偏还是右偏;
  2. Review_Score的IQR值是多少?并绘制该数据的box图;
  3. Review_Score的标准差是多少?
  4. 在Review_Score中,求落在两个标准差内的数据占总数的百分比;
  5. 对于DoIT部门,计算其收入和评分的相关系数。

先导入要用的计算包们:

# 导入所有要用的分析库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

from __future__ import division # 导入精确除法

%matplotlib inline
%config InlineBackend.figure_format = 'retina' 

然后导入数据并看一眼!~

# 导入数据并查看

df = pd.read_csv('HRSalaries.csv')
df.head()
数据分析第三次课随堂作业 - 0725_第1张图片
查看数据
# 查看整体数据(主要看是否存在缺失值)

df.info()
数据分析第三次课随堂作业 - 0725_第2张图片
查看数据整体信息

** 小结:**

  1. 数据表共5个字段,30284条数据
  2. 未存在缺失值,可直接使用

** Q1.计算HRSalaries数据中评分Review_Score的均值和中位数,并判断其偏度是左偏还是右偏**

# 计算review_score均值
score = df.Review_Score
score.mean()

6.4558908994849205

# 计算review_score中位数
score.median()

6.5

** 答:**Review_Score字段均值6.46,中位数6.5,因为 中位数>均值 ,所以数据呈左偏状态,整体样本score偏小。

** Q2.Review_Score的IQR值是多少?并绘制该数据的box图**

# 1.计算review_score的IQR值

sort = score.sort_values() #排序
Q1 = score.quantile(0.25)
Q3 = score.quantile(0.75)
score.quantile(0.5)
IOR = Q3 - Q1

Q1:5.8
Q3:7.2
IOR:1.4000000000000004

** 备注: **
pandas可以直接输出中位数,使用.median()函数实现

score.median() #验证中位数 

6.5
# 2.绘制IQR的box图

score.plot(kind = 'box', vert = False, figsize = (15,5))
plt.show()
数据分析第三次课随堂作业 - 0725_第3张图片
IQR box图

绘制正态分布图验证一下

#绘制正态分布柱图

mu = score.mean() #正态分布均值
sigma = score.std() #标准差
x = score

num_bins = 200 #柱子的数量
plt.hist(x, num_bins, normed = 1,facecolor = '#00bfff')  # normed 概率密度,和为1

plt.xlabel('Review_Score')
plt.ylabel('Probability')
plt.title('SCORE NORMAL DISTRIBUTION' )

plt.show()
数据分析第三次课随堂作业 - 0725_第4张图片
score normal distribution

** 答:**通过观察图形,发现score数据呈右偏态分布,大部分数据分布在 5.8 - 7.2 之间。

** Q3.Review_Score的标准差是多少?**

# 计算标准差
std = score.std()

1.030404588021642

# 验证一下
mean = score.mean()
np.sqrt(np.sum(((score - mean) ** 2) / (len(score) - 1)))

1.0304045880216568

** 答:**score标准差约为1.03,利用两种计算方法得到的结果基本一致(.std()仅给出小数点后15位)。

** Q4.在Review_Score中,求落在两个标准差内的数据占总数的百分比 **

# 落在两个标准差内的数据占总体的百分比

section = score[(score > score.mean() - score.std() * 2) & (score < (score.mean() + score.std() * 2))] # 过滤两个标准差之间的数据
section.count() / len(score) # 计算占比

0.96179500726456213

# 另一种方法

len(score[score.between(mean - std * 2, mean + std * 2)]) / len(score)

0.9617950072645621

** 答:**约有96.2%的数据落在2个标准差之间。

** Q5.对于DoIT部门,计算其收入和评分的相关系数**

# 计算DoIT部门收入和评分的相关系数
department = df[df.Department == 'DoIT']
print(np.corrcoef(department.Annual_Salary, department.Review_Score)[1,0])

0.00602457101049

出个散点图看一下

# DoIT部门收入和评分散点图
plt.scatter(department.Review_Score, department.Annual_Salary, c = ('#00bfff'), alpha = 0.6)

plt.show()
数据分析第三次课随堂作业 - 0725_第5张图片
DoIT部门收入和评分散点图

** 答:**DoIT部门收入和评分的相关系数为0.006,不相关。

你可能感兴趣的:(数据分析第三次课随堂作业 - 0725)