0%

1
2
3
4
5
6
7
8
9
import numpy as np
data = np.random.random((5,4))
print(data)
#求列最大数索引位置,axis=0表示列,为1表示行
ind = data.argmax(axis=0)
print(ind)
#获得最大数
data_max = data[ind,range(data.shape[1])]
print(data_max)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[[0.66992313 0.38898046 0.85090475 0.75138018]
[0.5712647 0.34303314 0.45904951 0.35832093]
[0.64563436 0.55838443 0.82634614 0.99323808]
[0.67713092 0.64573979 0.26588219 0.73057923]
[0.43273003 0.84170913 0.98372659 0.22579551]]
[3 4 4 2]
[0.67713092 0.84170913 0.98372659 0.99323808]
#扩展矩阵
a = np.arange(0,40,10)
print(a)
b = np.tile(a,(2,2))
print(b)
[ 0 10 20 30]
[[ 0 10 20 30 0 10 20 30]
[ 0 10 20 30 0 10 20 30]]
#排序
a = np.array([[3,5,1],[9,2,5]])
print(a)
b = np.sort(a,axis=1)
print(b)
[[3 5 1]
[9 2 5]]
[[1 3 5]
[2 5 9]]
a = np.array([4,2,1,3])
print(a)
#argsort可获取向量从小到大对应的指数
c = np.argsort(a)
print("------")
print(c)
print("------")
#获取排序
print(a[c])
[4 2 1 3]
------
[2 1 3 0]
------
[1 2 3 4]
0

1
2
3
import pandas
java_list = pandas.read_excel('java_list.xlsx')
print(java_list.dtypes)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
姓名              object
工作经历1公司(可筛选) object
工作经历1职位(可筛选) object
手机 object
邮箱 object
工作经历2公司 object
工作经历2职位 object
工作经历3公司 object
工作经历3职位 object
城市 object
教育经历1学校 object
Unnamed: 11 object
Unnamed: 12 object
dtype: object
#head()显示前几条数据,括号中数字表示前几条,为空时默认显示前5条
print(java_list.head(3))
姓名 工作经历1公司(可筛选) 工作经历1职位(可筛选) 手机 邮箱 \
0 王文鹏 绿岸 移动前端架构师 18918297081 NaN
1 徐昱 快钱(南京)信息技术有限公司 iOS工程师 18362957281 3062037039@qq.com
2 颜建光 十九楼网络股份有限公司 java软件工程师 13388616582 NaN

工作经历2公司 工作经历2职位 工作经历3公司 工作经历3职位 城市 教育经历1学校 \
0 NaN NaN NaN NaN 上海 NaN
1 南京大悦网络科技有限公司 iOS项目主管 南京富士通南大软件技术有限公司 java研发实习工程师 江苏 南京邮电大学
2 杭州顺网股份有限公司 项目经理 浙江鸿程计算机系统有限公司 项目管理 浙江 浙江工业大学

Unnamed: 11 Unnamed: 12
0 天津工业大学 NaN
1 浙江万里学院 NaN
2 在东忠人才培训中心 浙江工业大学
#tail()表示显示尾几行
print(java_list.tail(2))
姓名 工作经历1公司(可筛选) 工作经历1职位(可筛选) 手机 邮箱 \
746 张欣 北京中科软有限公司 java软件开发工程师 15010055938 zhangxinys@outlook.com
747 刘金鑫 北京今胜昔科技有限公司 java工程师 13521214507 yydljx@126.com

工作经历2公司 工作经历2职位 工作经历3公司 工作经历3职位 城市 教育经历1学校 Unnamed: 11 \
746 NaN NaN NaN NaN 北京 华北电力大学 NaN
747 石家庄优品捷思科技有限公司 JavaEE软件工程师 NaN NaN 北京 石家庄经济学院华信学院 NaN

Unnamed: 12
746 NaN
747 NaN
#columns 列名
print(java_list.columns)
Index(['姓名', '工作经历1公司(可筛选)', '工作经历1职位(可筛选)', '手机', '邮箱', '工作经历2公司', '工作经历2职位',
'工作经历3公司', '工作经历3职位', '城市', '教育经历1学校', 'Unnamed: 11', 'Unnamed: 12'],
dtype='object')
#shape类似numpy中,表示多少行和列
print(java_list.shape)
(748, 13)
#索引
#loc[num]
java_list.loc[1]
姓名 徐昱
工作经历1公司(可筛选) 快钱(南京)信息技术有限公司
工作经历1职位(可筛选) iOS工程师
手机 18362957281
邮箱 3062037039@qq.com
工作经历2公司 南京大悦网络科技有限公司
工作经历2职位 iOS项目主管
工作经历3公司 南京富士通南大软件技术有限公司
工作经历3职位 java研发实习工程师
城市 江苏
教育经历1学校 南京邮电大学
Unnamed: 11 浙江万里学院
Unnamed: 12 NaN
Name: 1, dtype: object
#loc[num1:num2]数据切片
print(java_list.loc[0:2])
姓名 工作经历1公司(可筛选) 工作经历1职位(可筛选) 手机 邮箱 \
0 王文鹏 绿岸 移动前端架构师 18918297081 NaN
1 徐昱 快钱(南京)信息技术有限公司 iOS工程师 18362957281 3062037039@qq.com
2 颜建光 十九楼网络股份有限公司 java软件工程师 13388616582 NaN

工作经历2公司 工作经历2职位 工作经历3公司 工作经历3职位 城市 教育经历1学校 \
0 NaN NaN NaN NaN 上海 NaN
1 南京大悦网络科技有限公司 iOS项目主管 南京富士通南大软件技术有限公司 java研发实习工程师 江苏 南京邮电大学
2 杭州顺网股份有限公司 项目经理 浙江鸿程计算机系统有限公司 项目管理 浙江 浙江工业大学

Unnamed: 11 Unnamed: 12
0 天津工业大学 NaN
1 浙江万里学院 NaN
2 在东忠人才培训中心 浙江工业大学
#loc[[num1,num2,...]]取任意值
print(java_list.loc[[2,5]])
姓名 工作经历1公司(可筛选) 工作经历1职位(可筛选) 手机 邮箱 工作经历2公司 工作经历2职位 \
2 颜建光 十九楼网络股份有限公司 java软件工程师 13388616582 NaN 杭州顺网股份有限公司 项目经理
5 胡恒超 拉卡拉 java工程师 18601730860 NaN NaN NaN

工作经历3公司 工作经历3职位 城市 教育经历1学校 Unnamed: 11 Unnamed: 12
2 浙江鸿程计算机系统有限公司 项目管理 浙江 浙江工业大学 在东忠人才培训中心 浙江工业大学
5 NaN NaN 上海 NaN NaN NaN
#按列名索引数据
print(java_list["姓名"])
0 王文鹏
1 徐昱
2 颜建光
3 叶先生
4 高金涛
5 胡恒超
6 吴欣
7 朱建
8 黄首文
9 詹先生
10 谢辉
11 苗向彬
12 张海波
13 荣卫剑
14 张尔宁
15 张茜
16 徐磊
17 程丁
18 李锦华
19 张磊
20 孔先生
21 罗先生
22 李海彬
23 汪斌
24 赵纪亮
25 李佩龙
26 杨超
27 张庆涛
28 候兆森
29 吴明亮
...
718 严岩
719 李金鹏
720 孙博
721 赵阳
722 蒋建军
723 段开元
724 冯威
725 孟超
726 Rose
727 姜哲
728 王东
729 黄生波
730 刘磊
731 张巧军
732 徐晓伟
733 温晓冰
734 汪喜路
735 佟学强
736 刘文超
737 刘银龙
738 马双辉
739 余永刚
740 郑毅
741 汪荣轩
742 王飞
743 钱新刚
744 陈志成
745 张晓强
746 张欣
747 刘金鑫
Name: 姓名, Length: 748, dtype: object
#索引多个列
#print(java_list[["姓名","手机"]])
#获取列名并转化为list
col_names = java_list.columns.tolist()
print(col_names)
new_list = []
for col in col_names:
if col.endswith("(可筛选)"):
new_list.append(col)
job_df = java_list[new_list]
print(job_df.head())
['姓名', '工作经历1公司(可筛选)', '工作经历1职位(可筛选)', '手机', '邮箱', '工作经历2公司', '工作经历2职位', '工作经历3公司', '工作经历3职位', '城市', '教育经历1学校', 'Unnamed: 11', 'Unnamed: 12']
工作经历1公司(可筛选)
0 绿岸
1 快钱(南京)信息技术有限公司
2 十九楼网络股份有限公司
3 软件
4 杉德巍康企业服务有限公司

1
2
3
4
5
import pandas
import numpy
df_sales = pandas.read_excel("sales.xlsx")
print(df_sales.head())
print(df_sales.shape)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
                  门店  区域         11月总销售        11月总毛利         目标销售     实际完成  \
0 好药师大药房连锁有限公司团结新村店 蔡静 103617.600000 37506.576000 2898.394406 1643.08
1 武汉市好药师文华大药房有限公司 蔡静 136347.184988 46358.042896 3813.907272 3234.51
2 好药师大药房连锁有限公司七里店 蔡静 153700.000000 61480.000000 4299.300699 5682.10
3 好药师大药房连锁有限公司汉城店 蔡静 127200.000000 49544.400000 3558.041958 4836.00
4 好药师大药房连锁有限公司太子水榭店 蔡静 74200.000000 23744.000000 2075.524476 657.38

销售完成率 实际完成.1
0 0.566893 528.70
1 0.848083 1085.40
2 1.321634 1728.18
3 1.359175 2116.98
4 0.316730 4.48
(48, 8)
# 算数运算
#print(df_sales["销售完成率"]*100)
new_column = df_sales["目标销售"]+df_sales["实际完成"]
df_sales['销售'] = new_column
print(df_sales.shape)
(48, 9)
#取最大值
print(df_sales["11月总毛利"]/df_sales["11月总毛利"].max())
0 0.085602
1 0.105803
2 0.140316
3 0.113076
4 0.054191
5 0.047801
6 0.244915
7 1.000000
8 0.027616
9 0.051923
10 0.125299
11 0.156853
12 0.205408
13 0.280382
14 0.205408
15 0.066929
16 0.251054
17 0.116553
18 0.124250
19 0.067784
20 0.057423
21 0.000000
22 0.212081
23 0.064224
24 0.136869
25 0.000000
26 0.693822
27 0.337782
28 0.089752
29 0.000000
30 0.139677
31 0.073400
32 0.198362
33 0.145881
34 0.109551
35 0.035946
36 0.087298
37 0.284832
38 0.240555
39 0.086614
40 0.353353
41 0.077599
42 0.156110
43 0.102704
44 0.077350
45 0.090379
46 0.120506
47 0.048887
Name: 11月总毛利, dtype: float64
#排序
df_sales.sort_values("11月总毛利",inplace=True)
print(df_sales["11月总毛利"])
29 0.000000
25 0.000000
21 0.000000
8 12100.000000
35 15750.000000
5 20944.000000
47 21420.000000
9 22750.000000
4 23744.000000
20 25160.000000
23 28139.925000
15 29325.000000
19 29699.610400
31 32160.400000
44 33891.000000
41 34000.000000
0 37506.576000
39 37950.000000
36 38250.000000
28 39325.000000
45 39600.000000
43 45000.000000
1 46358.042896
34 48000.000000
3 49544.400000
17 51068.000000
46 52800.000000
18 54440.670000
10 54900.080896
24 59969.500000
30 61200.000000
2 61480.000000
33 63918.000000
42 68400.000000
11 68725.552000
32 86912.812541
14 90000.000000
12 90000.192024
22 92923.865784
38 105400.000000
6 107310.000000
16 110000.000000
13 122850.000000
37 124800.000000
27 148000.000000
40 154822.662039
26 304000.000000
7 438152.548219
Name: 11月总毛利, dtype: float64
#降序排列
df_sales.sort_values("11月总毛利",inplace=True,ascending=False)
print(df_sales["11月总毛利"])
7 438152.548219
26 304000.000000
40 154822.662039
27 148000.000000
37 124800.000000
13 122850.000000
16 110000.000000
6 107310.000000
38 105400.000000
22 92923.865784
12 90000.192024
14 90000.000000
32 86912.812541
11 68725.552000
42 68400.000000
33 63918.000000
2 61480.000000
30 61200.000000
24 59969.500000
10 54900.080896
18 54440.670000
46 52800.000000
17 51068.000000
3 49544.400000
34 48000.000000
1 46358.042896
43 45000.000000
45 39600.000000
28 39325.000000
36 38250.000000
39 37950.000000
0 37506.576000
41 34000.000000
44 33891.000000
31 32160.400000
19 29699.610400
15 29325.000000
23 28139.925000
20 25160.000000
4 23744.000000
9 22750.000000
47 21420.000000
5 20944.000000
35 15750.000000
8 12100.000000
21 0.000000
25 0.000000
29 0.000000
Name: 11月总毛利, dtype: float64
#求每个区域当天实际总销售
area_sales = df_sales.pivot_table(index = "区域",values = "实际完成",aggfunc = numpy.sum)
print(area_sales.sort_values("实际完成"))
实际完成
区域
熊红萍 9546.41
廖燕妮 29542.66
胡萍 48549.48
李宁 65614.81
涂梦芸 75627.41
蔡静 78091.85

1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd
import numpy as np
data = pd.read_csv("train.csv")
age = data['Age']
#print(data.head())
#print(data['Age'])
#isnull()判断值是否为NaN
age_is_null = pd.isnull(age)
age_null_true = age[age_is_null]
#print(age_is_null)
#print(age_null_true)
print(len(age_null_true))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
177
#缺失值处理
#求年龄平均值
good_ages = age[age_is_null==False]
#print(good_ages)
mean_age = sum(good_ages)/len(good_ages)
print(mean_age)

#另外一种求平均值方法
print(good_ages.mean())
29.69911764705882
29.69911764705882
#求不同船舱等级的票价平均值
fares_for_class = {}
Pclass = [1,2,3]
for unit in Pclass:
pclass_rows = data[data['Pclass'] == unit]
pclass_fares = pclass_rows['Fare']
fare_for_class = pclass_fares.mean()
fares_for_class[unit] = fare_for_class

print(fares_for_class)
{1: 84.15468749999992, 2: 20.66218315217391, 3: 13.675550101832997}
#用pivot_table求不同船舱获救平均比例
passager_survival = data.pivot_table(index="Pclass",values = "Survived",aggfunc = np.mean)
print(passager_survival)
Survived
Pclass
1 0.629630
2 0.472826
3 0.242363
#用pivot_table求不同船舱平均票价
mean_fares = data.pivot_table(index = "Pclass",values = "Fare",aggfunc = np.mean)
print(mean_fares)
Fare
Pclass
1 84.154687
2 20.662183
3 13.675550
#用pivot_table求不同等级船舱平均年龄
mean_ages = data.pivot_table(index = "Pclass",values = "Age",aggfunc = np.mean)
print(mean_ages.sort_values("Age"))
Age
Pclass
3 25.140620
2 29.877630
1 38.233441
#用pivot_table求不同登船点与船票和获救人数的关系
port_stat = data.pivot_table(index="Embarked",values = ["Fare","Survived"],aggfunc = np.sum)
print(port_stat)
Fare Survived
Embarked
C 10072.2962 93
Q 1022.2543 30
S 17439.3988 217
#dropna()
dropna_columns = data.dropna(axis=1)
new_data = data.dropna(axis=0,subset=["Age","Sex"])
new_data
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th… female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
6 7 0 1 McCarthy, Mr. Timothy J male 54.0 0 0 17463 51.8625 E46 S
7 8 0 3 Palsson, Master. Gosta Leonard male 2.0 3 1 349909 21.0750 NaN S
8 9 1 3 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0 0 2 347742 11.1333 NaN S
9 10 1 2 Nasser, Mrs. Nicholas (Adele Achem) female 14.0 1 0 237736 30.0708 NaN C
10 11 1 3 Sandstrom, Miss. Marguerite Rut female 4.0 1 1 PP 9549 16.7000 G6 S
11 12 1 1 Bonnell, Miss. Elizabeth female 58.0 0 0 113783 26.5500 C103 S
12 13 0 3 Saundercock, Mr. William Henry male 20.0 0 0 A/5. 2151 8.0500 NaN S
13 14 0 3 Andersson, Mr. Anders Johan male 39.0 1 5 347082 31.2750 NaN S
14 15 0 3 Vestrom, Miss. Hulda Amanda Adolfina female 14.0 0 0 350406 7.8542 NaN S
15 16 1 2 Hewlett, Mrs. (Mary D Kingcome) female 55.0 0 0 248706 16.0000 NaN S
16 17 0 3 Rice, Master. Eugene male 2.0 4 1 382652 29.1250 NaN Q
18 19 0 3 Vander Planke, Mrs. Julius (Emelia Maria Vande… female 31.0 1 0 345763 18.0000 NaN S
20 21 0 2 Fynney, Mr. Joseph J male 35.0 0 0 239865 26.0000 NaN S
21 22 1 2 Beesley, Mr. Lawrence male 34.0 0 0 248698 13.0000 D56 S
22 23 1 3 McGowan, Miss. Anna “Annie” female 15.0 0 0 330923 8.0292 NaN Q
23 24 1 1 Sloper, Mr. William Thompson male 28.0 0 0 113788 35.5000 A6 S
24 25 0 3 Palsson, Miss. Torborg Danira female 8.0 3 1 349909 21.0750 NaN S
25 26 1 3 Asplund, Mrs. Carl Oscar (Selma Augusta Emilia… female 38.0 1 5 347077 31.3875 NaN S
27 28 0 1 Fortune, Mr. Charles Alexander male 19.0 3 2 19950 263.0000 C23 C25 C27 S
30 31 0 1 Uruchurtu, Don. Manuel E male 40.0 0 0 PC 17601 27.7208 NaN C
33 34 0 2 Wheadon, Mr. Edward H male 66.0 0 0 C.A. 24579 10.5000 NaN S
34 35 0 1 Meyer, Mr. Edgar Joseph male 28.0 1 0 PC 17604 82.1708 NaN C
35 36 0 1 Holverson, Mr. Alexander Oskar male 42.0 1 0 113789 52.0000 NaN S
37 38 0 3 Cann, Mr. Ernest Charles male 21.0 0 0 A./5. 2152 8.0500 NaN S
38 39 0 3 Vander Planke, Miss. Augusta Maria female 18.0 2 0 345764 18.0000 NaN S
856 857 1 1 Wick, Mrs. George Dennick (Mary Hitchcock) female 45.0 1 1 36928 164.8667 NaN S
857 858 1 1 Daly, Mr. Peter Denis male 51.0 0 0 113055 26.5500 E17 S
858 859 1 3 Baclini, Mrs. Solomon (Latifa Qurban) female 24.0 0 3 2666 19.2583 NaN C
860 861 0 3 Hansen, Mr. Claus Peter male 41.0 2 0 350026 14.1083 NaN S
861 862 0 2 Giles, Mr. Frederick Edward male 21.0 1 0 28134 11.5000 NaN S
862 863 1 1 Swift, Mrs. Frederick Joel (Margaret Welles Ba… female 48.0 0 0 17466 25.9292 D17 S
864 865 0 2 Gill, Mr. John William male 24.0 0 0 233866 13.0000 NaN S
865 866 1 2 Bystrom, Mrs. (Karolina) female 42.0 0 0 236852 13.0000 NaN S
866 867 1 2 Duran y More, Miss. Asuncion female 27.0 1 0 SC/PARIS 2149 13.8583 NaN C
867 868 0 1 Roebling, Mr. Washington Augustus II male 31.0 0 0 PC 17590 50.4958 A24 S
869 870 1 3 Johnson, Master. Harold Theodor male 4.0 1 1 347742 11.1333 NaN S
870 871 0 3 Balkic, Mr. Cerin male 26.0 0 0 349248 7.8958 NaN S
871 872 1 1 Beckwith, Mrs. Richard Leonard (Sallie Monypeny) female 47.0 1 1 11751 52.5542 D35 S
872 873 0 1 Carlsson, Mr. Frans Olof male 33.0 0 0 695 5.0000 B51 B53 B55 S
873 874 0 3 Vander Cruyssen, Mr. Victor male 47.0 0 0 345765 9.0000 NaN S
874 875 1 2 Abelson, Mrs. Samuel (Hannah Wizosky) female 28.0 1 0 P/PP 3381 24.0000 NaN C
875 876 1 3 Najib, Miss. Adele Kiamie “Jane” female 15.0 0 0 2667 7.2250 NaN C
876 877 0 3 Gustafsson, Mr. Alfred Ossian male 20.0 0 0 7534 9.8458 NaN S
877 878 0 3 Petroff, Mr. Nedelio male 19.0 0 0 349212 7.8958 NaN S
879 880 1 1 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson) female 56.0 0 1 11767 83.1583 C50 C
880 881 1 2 Shelley, Mrs. William (Imanita Parrish Hall) female 25.0 0 1 230433 26.0000 NaN S
881 882 0 3 Markun, Mr. Johann male 33.0 0 0 349257 7.8958 NaN S
882 883 0 3 Dahlberg, Miss. Gerda Ulrika female 22.0 0 0 7552 10.5167 NaN S
883 884 0 2 Banfield, Mr. Frederick James male 28.0 0 0 C.A./SOTON 34068 10.5000 NaN S
884 885 0 3 Sutehall, Mr. Henry Jr male 25.0 0 0 SOTON/OQ 392076 7.0500 NaN S
885 886 0 3 Rice, Mrs. William (Margaret Norton) female 39.0 0 5 382652 29.1250 NaN Q
886 887 0 2 Montvila, Rev. Juozas male 27.0 0 0 211536 13.0000 NaN S
887 888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.0000 B42 S
889 890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.0000 C148 C
890 891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.7500 NaN Q

714 rows × 12 columns

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
#通过行和列定位
data.loc[83,"Name"]
'Carrau, Mr. Francisco M'
#sort_values排序
new_data = data.sort_values('Age',ascending=False)
print(new_data[0:10])
print("------")
#对序号重新生成
new_reindexed = new_data.reset_index(drop=True)
print(new_reindexed[0:10])
PassengerId Survived Pclass Name \
630 631 1 1 Barkworth, Mr. Algernon Henry Wilson
851 852 0 3 Svensson, Mr. Johan
493 494 0 1 Artagaveytia, Mr. Ramon
96 97 0 1 Goldschmidt, Mr. George B
116 117 0 3 Connors, Mr. Patrick
672 673 0 2 Mitchell, Mr. Henry Michael
745 746 0 1 Crosby, Capt. Edward Gifford
33 34 0 2 Wheadon, Mr. Edward H
54 55 0 1 Ostby, Mr. Engelhart Cornelius
280 281 0 3 Duane, Mr. Frank

Sex Age SibSp Parch Ticket Fare Cabin Embarked
630 male 80.0 0 0 27042 30.0000 A23 S
851 male 74.0 0 0 347060 7.7750 NaN S
493 male 71.0 0 0 PC 17609 49.5042 NaN C
96 male 71.0 0 0 PC 17754 34.6542 A5 C
116 male 70.5 0 0 370369 7.7500 NaN Q
672 male 70.0 0 0 C.A. 24580 10.5000 NaN S
745 male 70.0 1 1 WE/P 5735 71.0000 B22 S
33 male 66.0 0 0 C.A. 24579 10.5000 NaN S
54 male 65.0 0 1 113509 61.9792 B30 C
280 male 65.0 0 0 336439 7.7500 NaN Q
------
PassengerId Survived Pclass Name Sex \
0 631 1 1 Barkworth, Mr. Algernon Henry Wilson male
1 852 0 3 Svensson, Mr. Johan male
2 494 0 1 Artagaveytia, Mr. Ramon male
3 97 0 1 Goldschmidt, Mr. George B male
4 117 0 3 Connors, Mr. Patrick male
5 673 0 2 Mitchell, Mr. Henry Michael male
6 746 0 1 Crosby, Capt. Edward Gifford male
7 34 0 2 Wheadon, Mr. Edward H male
8 55 0 1 Ostby, Mr. Engelhart Cornelius male
9 281 0 3 Duane, Mr. Frank male

Age SibSp Parch Ticket Fare Cabin Embarked
0 80.0 0 0 27042 30.0000 A23 S
1 74.0 0 0 347060 7.7750 NaN S
2 71.0 0 0 PC 17609 49.5042 NaN C
3 71.0 0 0 PC 17754 34.6542 A5 C
4 70.5 0 0 370369 7.7500 NaN Q
5 70.0 0 0 C.A. 24580 10.5000 NaN S
6 70.0 1 1 WE/P 5735 71.0000 B22 S
7 66.0 0 0 C.A. 24579 10.5000 NaN S
8 65.0 0 1 113509 61.9792 B30 C
9 65.0 0 0 336439 7.7500 NaN Q
# 结合apply()使用自定义函数
def hundredth_row(column):
hundredth_item = column.loc[99]
return hundredth_item

hundredth_row = data.apply(hundredth_row)
print(hundredth_row)
PassengerId 100
Survived 0
Pclass 2
Name Kantor, Mr. Sinai
Sex male
Age 34
SibSp 1
Parch 0
Ticket 244367
Fare 26
Cabin NaN
Embarked S
dtype: object
def not_null_count(column):
column_null = pd.isnull(column)
null = column[column_null]
return len(null)
not_null_counts = data.apply(not_null_count)
print(not_null_counts)
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
def which_class(row):
pclass = row['Pclass']
if pd.isnull(pclass):
return "Unknow"
if pclass == 1:
return "一等舱"
if pclass == 2:
return "二等舱"
if pclass == 3:
return "三等舱"

pclass = data.apply(which_class,axis=1)
print(pclass)
0 三等舱
1 一等舱
2 三等舱
3 一等舱
4 三等舱
5 三等舱
6 一等舱
7 三等舱
8 三等舱
9 二等舱
10 三等舱
11 一等舱
12 三等舱
13 三等舱
14 三等舱
15 二等舱
16 三等舱
17 二等舱
18 三等舱
19 三等舱
20 二等舱
21 二等舱
22 三等舱
23 一等舱
24 三等舱
25 三等舱
26 三等舱
27 一等舱
28 三等舱
29 三等舱
...
861 二等舱
862 一等舱
863 三等舱
864 二等舱
865 二等舱
866 二等舱
867 一等舱
868 三等舱
869 三等舱
870 三等舱
871 一等舱
872 一等舱
873 三等舱
874 二等舱
875 三等舱
876 三等舱
877 三等舱
878 三等舱
879 一等舱
880 二等舱
881 三等舱
882 三等舱
883 二等舱
884 三等舱
885 三等舱
886 二等舱
887 一等舱
888 三等舱
889 一等舱
890 三等舱
Length: 891, dtype: object
def generate_age_lable(row):
age = row['Age']
if pd.isnull(age):
return "Unknown"
elif age <18:
return "未成年人"
else:
return "成年人"

age_lable = data.apply(generate_age_lable,axis = 1)
print(age_lable)
data['age_lable'] = age_lable
age_group_survival = data.pivot_table(index="age_lable", values = "Survived",aggfunc=np.mean)
print(age_group_survival)
0 成年人
1 成年人
2 成年人
3 成年人
4 成年人
5 Unknown
6 成年人
7 未成年人
8 成年人
9 未成年人
10 未成年人
11 成年人
12 成年人
13 成年人
14 未成年人
15 成年人
16 未成年人
17 Unknown
18 成年人
19 Unknown
20 成年人
21 成年人
22 未成年人
23 成年人
24 未成年人
25 成年人
26 Unknown
27 成年人
28 Unknown
29 Unknown
...
861 成年人
862 成年人
863 Unknown
864 成年人
865 成年人
866 成年人
867 成年人
868 Unknown
869 未成年人
870 成年人
871 成年人
872 成年人
873 成年人
874 成年人
875 未成年人
876 成年人
877 成年人
878 Unknown
879 成年人
880 成年人
881 成年人
882 成年人
883 成年人
884 成年人
885 成年人
886 成年人
887 成年人
888 Unknown
889 成年人
890 成年人
Length: 891, dtype: object
Survived
age_lable
Unknown 0.293785
成年人 0.381032
未成年人 0.539823
# 性别与获救比例的关系
sex_survival = data.pivot_table(index = "Sex",values="Survived",aggfunc = np.mean)
print(sex_survival)
Survived
Sex
female 0.742038
male 0.188908

1
2
3
4
5
6
7
8
9
10
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_excel("2017.12.01-2018.12.01日销售汇总.xls")
sales = data[365:501]["实收金额"]
date = data[365:501]["日期"]
print(date)
plt.plot(date,sales)
plt.xticks(rotation=45)
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
365   2017-12-03
366 2017-12-04
367 2017-12-05
368 2017-12-06
369 2017-12-07
370 2017-12-08
371 2017-12-09
372 2017-12-10
373 2017-12-11
374 2017-12-12
375 2017-12-13
376 2017-12-14
377 2017-12-15
378 2017-12-16
379 2017-12-17
380 2017-12-18
381 2017-12-19
382 2017-12-20
383 2017-12-21
384 2017-12-22
385 2017-12-23
386 2017-12-24
387 2017-12-25
388 2017-12-26
389 2017-12-27
390 2017-12-28
391 2017-12-29
392 2017-12-30
393 2017-12-31
394 2018-01-01
...
471 2018-03-19
472 2018-03-20
473 2018-03-21
474 2018-03-22
475 2018-03-23
476 2018-03-24
477 2018-03-25
478 2018-03-26
479 2018-03-27
480 2018-03-28
481 2018-03-29
482 2018-03-30
483 2018-03-31
484 2018-04-01
485 2018-04-02
486 2018-04-03
487 2018-04-04
488 2018-04-05
489 2018-04-06
490 2018-04-07
491 2018-04-08
492 2018-04-09
493 2018-04-10
494 2018-04-11
495 2018-04-12
496 2018-04-13
497 2018-04-14
498 2018-04-15
499 2018-04-16
500 NaT
Name: 日期, Length: 136, dtype: datetime64[ns]

png

# matplotlib

1
2
3
4
5
6
7
import pandas as pd
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,4)
plt.show()

png

1
2
3
4
5
6
7
import numpy as np
fig = plt.figure(figsize=(10,10))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
fig.show()
/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py:459: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure
"matplotlib is currently using a non-GUI backend, "

png

# matplotlib

1
2
3
4
5
import pandas as pd
import numpy as np
data = pd.read_excel("12sales.xlsx")
sales = data["TC12月销售目标"].head(46)
print(sales)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
0      135000.0
1 70000.0
2 140000.0
3 121176.0
4 2100000.0
5 390000.0
6 30000.0
7 130000.0
8 83000.0
9 100000.0
10 120000.0
11 80000.0
12 90000.0
13 195000.0
14 315000.0
15 140000.0
16 20000.0
17 440940.0
18 310000.0
19 108666.0
20 183206.0
21 240000.0
22 270000.0
23 85000.0
24 357628.0
25 350000.0
26 75000.0
27 147600.0
28 133676.0
29 160000.0
30 280000.0
31 40000.0
32 170000.0
33 160000.0
34 180000.0
35 110000.0
36 50000.0
37 185000.0
38 1700000.0
39 410000.0
40 120000.0
41 90000.0
42 225000.0
43 180000.0
44 115000.0
45 65000.0
Name: TC12月销售目标, dtype: float64
import matplotlib.pyplot as plt
bar_height = sales.values
bar_weight = np.arange(46)
fig,ax = plt.subplots()
ax.bar(bar_weight,sales,0.75)
plt.title("target sales")
plt.show()

png

1
2
3
4
5
6
7
#横着的树状图
bar_height = sales.values
bar_weight = np.arange(46)
fig,ax = plt.subplots()
ax.barh(bar_weight,bar_height,0.75)
plt.title("target sales")
plt.show()

png

1
2
3
4
5
6
7
#散点图
bar_height = sales.values
bar_weight = np.arange(46)
fig,ax = plt.subplots()
ax.scatter(bar_weight,bar_height)
plt.title("target sales")
plt.show()

png

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
bar_height = sales.values
bar_weight = np.arange(46)
fig,ax = plt.subplots()
#ax.hist(sales)
ax.hist(bar_height,bins=20)
plt.title("target sales")
plt.show()

png

1
2
3
4
fig,ax = plt.subplots()
ax.boxplot(sales)
ax.set_ylim(20000,100000)
plt.show()

png

# matplotlib

1
2
3
4
5
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
1
2
3
4
5
def sinplot(flip=1):
x=np.linspace(0,14,100)
for i in range(1,7):
plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)
sinplot()

png

1
2
sns.set()
sinplot()

png

1
2
3
4
sns.set_style("ticks")
data = np.random.normal(size=(20,6))+np.arange(6)/2
sns.boxplot(data=data)
<matplotlib.axes._subplots.AxesSubplot at 0x1a1d097668>

png

1
2
sns.set_style("white")
sinplot()

png

1
2
sinplot()
sns.despine()

png

1
2
sns.violinplot(data)
sns.despine(offset=10)

png

1
2
3
4
5
with sns.axes_style("darkgrid"):
plt.subplot(2,1,1)
sinplot()
plt.subplot(2,1,2)
sinplot(-1)

png

1
2
3
4
sns.set()
sns.set_context("paper")
plt.figure(figsize=(8,6))
sinplot()

png

1
2
3
sns.set_context("talk")
plt.figure(figsize=(8,6))
sinplot()

png

1
2
3
sns.set_context("poster")
plt.figure(figsize=(8,6))
sinplot()

png

1
2
3
sns.set_context("notebook",font_scale=2.5,rc={'lines.linewidth':4.5})
plt.figure(figsize=(8,6))
sinplot()

png

# seaborn

1
2
3
4
5
6
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
sns.set(rc={'figure.figsize':(6,6)})
1
2
current_palette = sns.color_palette()
sns.palplot(current_palette)

png

1
sns.palplot(sns.color_palette("hls",8))

png

1
2
3
data = np.random.normal(size=(20,6))+np.arange(6)/2
sns.boxplot(data=data,palette=sns.color_palette("hls",8))
<matplotlib.axes._subplots.AxesSubplot at 0x1a2397bc18>

png

1
#sns.palplot(sns.hls_palette(8,l=5,s=9))

sns.palplot(sns.color_palette(“Paired”,20))

1
sns.palplot(sns.color_palette("Blues"))

png

1
sns.palplot(sns.color_palette("BuGn_r"))

png

1
2
#线性调色板
sns.palplot(sns.color_palette("cubehelix",8))

png

1
sns.palplot(sns.light_palette("green"))

png

1
sns.palplot(sns.dark_palette("green"))

png

1
2
#由深到浅
sns.palplot(sns.light_palette("green",reverse=True))

png

1
2
3
4
x,y=np.random.multivariate_normal([0,0],[[1,-0.5],[-0.5,1]],size=300).T
pal = sns.dark_palette("green",as_cmap=True)
sns.kdeplot(x,y,cmap=pal)
<matplotlib.axes._subplots.AxesSubplot at 0x1a25409eb8>

png

# seaborn

1
2
3
4
5
6
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats,integrate
%matplotlib inline
1
2
3
4
5
6
7
8
9
10
11
sns.set(color_codes = True)
x = np.random.normal(size=100)
sns.distplot(x,kde=False)
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "





<matplotlib.axes._subplots.AxesSubplot at 0x1a1510af28>

png

1
2
3
4
5
6
7
8
9
sns.distplot(x,bins=20,kde=False)
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "





<matplotlib.axes._subplots.AxesSubplot at 0x1a1505f860>

png

1
2
3
4
5
6
7
8
9
10
x = np.random.gamma(6,size=200)
sns.distplot(x,kde=False,fit=stats.gamma)
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "





<matplotlib.axes._subplots.AxesSubplot at 0x1a153a0240>

png

1
2
3
4
mean,cov = [0,1],[(1,.5),(.5,1)]
data = np.random.multivariate_normal(mean,cov,200)
df = pd.DataFrame(data,columns=["x","y"])
df
x y
0 -0.174087 1.795256
1 -0.416757 0.638361
2 -1.188138 -0.331589
3 -0.609992 0.435072
4 -1.839588 1.710629
5 -0.636881 0.890326
6 -0.833977 0.792370
7 1.789158 2.060371
8 1.156777 0.663219
9 0.423476 0.673290
10 -0.412169 0.751990
11 -1.126475 0.535133
12 1.323243 1.533676
13 -0.023044 -0.599542
14 0.691180 0.879479
15 1.478605 2.477569
16 -1.637043 -0.499630
17 -0.094884 2.142044
18 -0.989239 1.218270
19 1.420987 1.013807
20 0.360396 2.465208
21 1.358501 1.184887
22 2.339145 1.285469
23 1.282484 2.062299
24 0.854708 0.706735
25 -0.223393 -0.172632
26 -0.513652 0.535946
27 1.207449 1.181039
28 -1.219564 -1.178302
29 -0.855500 0.167194
170 1.022425 1.816807
171 0.344980 0.766577
172 1.043292 0.955718
173 0.765037 2.321773
174 0.683540 0.501221
175 1.188854 0.022803
176 -0.287907 -0.166137
177 -0.778977 0.036364
178 -1.875389 0.689938
179 0.183550 1.683339
180 0.220839 1.396213
181 0.660952 1.921363
182 -2.357542 1.145418
183 0.521454 0.304456
184 -0.321098 -1.072025
185 -0.265391 1.166742
186 1.182235 2.652254
187 0.920143 1.772478
188 0.620841 1.806727
189 -0.892951 0.177710
190 -0.463518 2.034266
191 -0.031959 0.967620
192 -0.412957 0.324511
193 -0.021698 0.949692
194 1.897446 2.806375
195 -0.346429 0.899780
196 -0.320803 -0.144683
197 -0.332870 0.751261
198 -0.579072 0.318083
199 -0.889261 0.091241

200 rows × 2 columns

观察两个变量之间的分布关系最好用散点图

1
2
3
4
5
6
7
8
9
10
11
sns.jointplot(x="x",y="y",data=df)
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "





<seaborn.axisgrid.JointGrid at 0x1a22fb1cf8>

png

1
2
3
4
5
6
7
x,y = np.random.multivariate_normal(mean,cov,1000).T
with sns.axes_style("white"):
sns.jointplot(x=x,y=y,data=df,kind="hex",color='k')
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "
/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.
warnings.warn("The 'normed' kwarg is deprecated, and has been "

png

1
2
3
iris = sns.load_dataset("iris")
sns.pairplot(iris)
<seaborn.axisgrid.PairGrid at 0x1a23d144e0>

png

# seaborn