感謝Dr.fish的耐心講解和細(xì)致回答忧陪。
本次課的隨堂作業(yè)如下:
基于HRSalaries.csv數(shù)據(jù)回答問題:
- 計(jì)算HRSalaries數(shù)據(jù)中評(píng)分Review_Score的均值和中位數(shù),并判斷其偏度是左偏還是右偏浆洗;
- Review_Score的IQR值是多少催束?并繪制該數(shù)據(jù)的box圖;
- Review_Score的標(biāo)準(zhǔn)差是多少伏社?
- 在Review_Score中抠刺,求落在兩個(gè)標(biāo)準(zhǔn)差內(nèi)的數(shù)據(jù)占總數(shù)的百分比塔淤;
- 對(duì)于DoIT部門,計(jì)算其收入和評(píng)分的相關(guān)系數(shù)矫付。
先導(dǎo)入要用的計(jì)算包們:
# 導(dǎo)入所有要用的分析庫(kù)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from __future__ import division # 導(dǎo)入精確除法
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
然后導(dǎo)入數(shù)據(jù)并看一眼凯沪!~
# 導(dǎo)入數(shù)據(jù)并查看
df = pd.read_csv('HRSalaries.csv')
df.head()
# 查看整體數(shù)據(jù)(主要看是否存在缺失值)
df.info()
** 小結(jié):**
- 數(shù)據(jù)表共5個(gè)字段,30284條數(shù)據(jù)
- 未存在缺失值买优,可直接使用
** Q1.計(jì)算HRSalaries數(shù)據(jù)中評(píng)分Review_Score的均值和中位數(shù),并判斷其偏度是左偏還是右偏**
# 計(jì)算review_score均值
score = df.Review_Score
score.mean()
6.4558908994849205
# 計(jì)算review_score中位數(shù)
score.median()
6.5
** 答:**Review_Score字段均值6.46挺举,中位數(shù)6.5杀赢,因?yàn)?中位數(shù)>均值 ,所以數(shù)據(jù)呈左偏狀態(tài)湘纵,整體樣本score偏小脂崔。
** Q2.Review_Score的IQR值是多少?并繪制該數(shù)據(jù)的box圖**
# 1.計(jì)算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可以直接輸出中位數(shù)梧喷,使用.median()
函數(shù)實(shí)現(xiàn)
score.median() #驗(yàn)證中位數(shù)
6.5
# 2.繪制IQR的box圖
score.plot(kind = 'box', vert = False, figsize = (15,5))
plt.show()
繪制正態(tài)分布圖驗(yàn)證一下
#繪制正態(tài)分布柱圖
mu = score.mean() #正態(tài)分布均值
sigma = score.std() #標(biāo)準(zhǔn)差
x = score
num_bins = 200 #柱子的數(shù)量
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()
** 答:**通過觀察圖形,發(fā)現(xiàn)score數(shù)據(jù)呈右偏態(tài)分布铺敌,大部分?jǐn)?shù)據(jù)分布在 5.8 - 7.2 之間汇歹。
** Q3.Review_Score的標(biāo)準(zhǔn)差是多少?**
# 計(jì)算標(biāo)準(zhǔn)差
std = score.std()
1.030404588021642
# 驗(yàn)證一下
mean = score.mean()
np.sqrt(np.sum(((score - mean) ** 2) / (len(score) - 1)))
1.0304045880216568
** 答:**score標(biāo)準(zhǔn)差約為1.03偿凭,利用兩種計(jì)算方法得到的結(jié)果基本一致(.std()
僅給出小數(shù)點(diǎn)后15位)产弹。
** Q4.在Review_Score中,求落在兩個(gè)標(biāo)準(zhǔn)差內(nèi)的數(shù)據(jù)占總數(shù)的百分比 **
# 落在兩個(gè)標(biāo)準(zhǔn)差內(nèi)的數(shù)據(jù)占總體的百分比
section = score[(score > score.mean() - score.std() * 2) & (score < (score.mean() + score.std() * 2))] # 過濾兩個(gè)標(biāo)準(zhǔn)差之間的數(shù)據(jù)
section.count() / len(score) # 計(jì)算占比
0.96179500726456213
# 另一種方法
len(score[score.between(mean - std * 2, mean + std * 2)]) / len(score)
0.9617950072645621
** 答:**約有96.2%的數(shù)據(jù)落在2個(gè)標(biāo)準(zhǔn)差之間弯囊。
** Q5.對(duì)于DoIT部門痰哨,計(jì)算其收入和評(píng)分的相關(guān)系數(shù)**
# 計(jì)算DoIT部門收入和評(píng)分的相關(guān)系數(shù)
department = df[df.Department == 'DoIT']
print(np.corrcoef(department.Annual_Salary, department.Review_Score)[1,0])
0.00602457101049
出個(gè)散點(diǎn)圖看一下
# DoIT部門收入和評(píng)分散點(diǎn)圖
plt.scatter(department.Review_Score, department.Annual_Salary, c = ('#00bfff'), alpha = 0.6)
plt.show()
** 答:**DoIT部門收入和評(píng)分的相關(guān)系數(shù)為0.006,不相關(guān)匾嘱。