第三次尝试

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

%matplotlib inline
%config InlineBackend.figure_format = 'retina'
df = pd.read_csv('HRSalaries.csv')
df.head()
len(df)
30284
df.Department.value_counts()
POLICE                   12461
FIRE                      4798
SANITATION                2092
WATER MGMT                1796
AVIATION                  1252
TRANSPORTATION            1196
EMERGENCY MGMT            1182
GENERAL SERVICES           922
PUBLIC LIBRARY             874
FAMILY & SUPPORT           719
HEALTH                     568
FINANCE                    533
LAW                        455
CITY COUNCIL               265
BUILDINGS                  261
COMMUNITY DEVELOPMENT      216
BUSINESS AFFAIRS           177
DoIT                        97
MAYOR'S OFFICE              96
PROCUREMENT                 77
CULTURAL AFFAIRS            76
HUMAN RESOURCES             61
ANIMAL CONTRL               57
DISABILITIES                29
TREASURER                   24
Name: Department, dtype: int64
len(df.Department.unique())
25
salary = df.Annual_Salary
salary.sum() / len(salary)
60836.98560295866
salary.mean()
60836.98560295866
np.mean(salary)
60836.98560295866
df.groupby('Department').Annual_Salary.mean().sort_values(ascending=False)
Department
DoIT                     73831.979381
BUILDINGS                72137.885057
FIRE                     69383.989996
MAYOR'S OFFICE           68953.677083
WATER MGMT               64760.186526
COMMUNITY DEVELOPMENT    64262.597222
GENERAL SERVICES         63747.808026
TREASURER                63497.500000
POLICE                   63127.904984
TRANSPORTATION           62947.504181
PROCUREMENT              61452.584416
HEALTH                   61213.503521
CULTURAL AFFAIRS         61181.894737
DISABILITIES             58058.586207
BUSINESS AFFAIRS         57216.067797
HUMAN RESOURCES          57108.163934
LAW                      55917.958242
AVIATION                 55816.200479
SANITATION               55555.813576
FINANCE                  54286.375235
ANIMAL CONTRL            47604.473684
PUBLIC LIBRARY           44241.731121
EMERGENCY MGMT           42845.754653
CITY COUNCIL             38046.547170
FAMILY & SUPPORT         31193.307371
Name: Annual_Salary, dtype: float64
len(salary)
30284
sorted_salary = salary.sort_values()
sorted_salary
16629      3128
2247       3132
20961      3133
13423      3135
25422      3135
16451      3136
1732       3136
2215       3140
23454      3144
12291      3149
25959      3151
19186      3153
9905       3156
1752       3182
25170      3188
4739       3188
4858       3190
3688       3193
6947       3209
20065      3215
17837      3219
24322      3230
5840       3232
25971      3236
8175       3244
22631      3253
22602      3257
15958      3263
5194       3265
18713      3266
          ...  
23452    128174
27353    130023
14122    130788
18022    131070
17173    131461
7333     132249
20450    132283
11322    135289
14042    135623
14386    136798
6491     136806
17347    137121
7565     137153
13217    137300
12748    137305
10283    137574
16910    137583
4165     137584
29829    137669
1260     138506
14746    138546
15059    138760
2866     138826
8904     144240
3246     144914
20222    146247
11657    146776
3486     157054
27879    167858
6724     201448
Name: Annual_Salary, Length: 30284, dtype: int64
(sorted_salary.iloc[15141] + sorted_salary.iloc[15142]) / 2
61836.0
salary.median()
61836.0
plt.hist(salary, bins=50, rwidth=0.9)
plt.show()
output_14_0.png
plt.hist(salary, bins=25, rwidth=0.9, range=(100000, 210000))
plt.show()
output_15_0.png
salary.mean() > salary.median()
False
fire_salary = df[df.Department == 'FIRE'].Annual_Salary
plt.hist(fire_salary, bins=50, rwidth=0.9)
plt.show()
output_17_0.png
fire_salary.mean()

69383.9899958316
fire_salary.median()
66260.0
fire_salary.mean() > fire_salary.median()
True
salary.max() 
201448
salary.min()
3128
salary.max() - salary.min()
198320
Q1 = salary.quantile(0.25)
Q3 = salary.quantile(0.75)
Q3
68558.5
IQR = Q3 - Q1
IQR
12886.75
salary.quantile(0.5)
61836.0
salary.median()
61836.0
salary.plot(kind='box', vert=False, figsize=(15, 5))
plt.show()
output_29_0.png
doit_salary = df[df.Department == 'DoIT'].Annual_Salary.tolist()
plt.boxplot(doit_salary)
plt.show()
output_30_0.png
build_salary = df[df.Department == 'BUILDINGS'].Annual_Salary.tolist()
plt.boxplot([build_salary, doit_salary], labels=['BUILDINGS', 'DoIT'])
plt.show()
output_31_0.png
import seaborn as sns

sns.boxplot(data=df, y='Department', x='Annual_Salary')
plt.show()
output_32_0.png
mean = salary.mean()
np.sum((salary - mean)**2) / (len(salary) - 1)
271490393.4177519
var = salary.var()
var
271490393.4177519
np.sqrt(np.sum((salary - mean)**2) / (len(salary) - 1))
16476.965540346071
std = salary.std()
std
16476.96554034607
len(salary[salary.between(mean - std, mean + std)]) / len(salary)
0.7666094307224938
len(salary[salary.between(mean - 2*std, mean + 2*std)]) / len(salary)
0.933364152687888
score = df.Review_Score
np.sum((salary - salary.mean()) * (score - score.mean())) / (len(salary)-1)
7.747599921809748
np.cov(salary, score)
array([[  2.71490393e+08,   7.74759992e+00],
       [  7.74759992e+00,   1.06173362e+00]])
cov = np.cov(salary, score)[0,1]
cov
7.7475999218100222
np.cov(salary, score)[0,1] / (salary.std() * score.std())
0.00045633330757004046
np.corrcoef(salary, score)[0,1]
0.00045633330757003586
plt.scatter(score, salary, alpha=0.3)
plt.show()
output_45_0.png
position = df[df.Position_Title == 'FIREFIGHTER']
print(np.corrcoef(position.Annual_Salary, position.Review_Score)[1,0])
plt.scatter(position.Review_Score, position.Annual_Salary)
plt.show()
0.0571267765462
output_46_1.png
#第三课作业
#1、计算 HRSalaries 数据中评分Review_Score 的均值和中位数,并判断其偏度是左偏还是右偏?
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline
%config InlineBackend.figure_format = 'retina'
df = pd.read_csv('HRSalaries.csv')
df.head()
salary = df.Review_Score
salary.sum() / len(salary)
6.4558908994849205
df.groupby('Department').Review_Score.mean().sort_values(ascending=False)
Department
MAYOR'S OFFICE           6.711458
ANIMAL CONTRL            6.575439
BUSINESS AFFAIRS         6.509605
AVIATION                 6.504073
COMMUNITY DEVELOPMENT    6.493519
HEALTH                   6.493486
HUMAN RESOURCES          6.480328
BUILDINGS                6.474330
GENERAL SERVICES         6.472234
WATER MGMT               6.464310
POLICE                   6.463117
FIRE                     6.461171
EMERGENCY MGMT           6.452369
DISABILITIES             6.441379
LAW                      6.439121
SANITATION               6.433987
FINANCE                  6.420450
FAMILY & SUPPORT         6.413908
PROCUREMENT              6.406494
PUBLIC LIBRARY           6.399542
TRANSPORTATION           6.395234
CITY COUNCIL             6.383019
DoIT                     6.342268
CULTURAL AFFAIRS         6.261842
TREASURER                6.258333
Name: Review_Score, dtype: float64
len(score)
30284
salary.mean() > salary.median()
False
fire_salary.mean() > fire_salary.median()
True
#2、 Review_Score 的IQR是多少?并绘制该数据的box图。
Q1 = salary.quantile(0.25)
Q1
5.8
Q3 = salary.quantile(0.75)
Q3
7.2
IQR = Q3 - Q1
IQR
1.4000000000000004
salary.plot(kind='box', vert=False, figsize=(15, 5))
plt.show()
output_61_0.png
#3、Review_Score的标准差是多少?
np.sqrt(np.sum((salary - mean)**2) / (len(salary) - 1))
60831.534080120342
std = salary.std()
std
1.030404588021642
#4、在Review_Score中,求落在两个标准差内的数据占总数的百分比。
#  这一课感觉完全看不懂了,大概能理解到最前面的一些东西,导入什么库,和读取文件。
#这些公式表示看不懂。下次再来研究它。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容