19
19
输出:
20
20
21
21
```
22
- 语文 数学 英语
23
- 1001 69 80 79
24
- 1002 71 60 100
25
- 1003 94 81 93
26
- 1004 88 88 67
27
- 1005 82 66 60
22
+ 语文 数学 英语
23
+ 1001 69 80 79
24
+ 1002 71 60 100
25
+ 1003 94 81 93
26
+ 1004 88 88 67
27
+ 1005 82 66 60
28
28
```
29
29
30
30
#### 通过字典创建DataFrame对象
@@ -244,31 +244,31 @@ emp2_df = pd.read_sql_table('tb_emp2', engine, index_col='eno')
244
244
```
245
245
dname dloc
246
246
dno
247
- 10 会计部 北京
248
- 20 研发部 成都
249
- 30 销售部 重庆
250
- 40 运维部 深圳
247
+ 10 会计部 北京
248
+ 20 研发部 成都
249
+ 30 销售部 重庆
250
+ 40 运维部 深圳
251
251
```
252
252
253
253
员工表(` emp_df ` ),其中` eno ` 是员工编号,` ename ` 、` job ` 、` mgr ` 、` sal ` 、` comm ` 和` dno ` 分别代表员工的姓名、职位、主管编号、月薪、补贴和部门编号。
254
254
255
255
```
256
256
ename job mgr sal comm dno
257
257
eno
258
- 1359 胡一刀 销售员 3344.0 1800 200.0 30
259
- 2056 乔峰 分析师 7800.0 5000 1500.0 20
260
- 3088 李莫愁 设计师 2056.0 3500 800.0 20
261
- 3211 张无忌 程序员 2056.0 3200 NaN 20
262
- 3233 丘处机 程序员 2056.0 3400 NaN 20
263
- 3244 欧阳锋 程序员 3088.0 3200 NaN 20
264
- 3251 张翠山 程序员 2056.0 4000 NaN 20
265
- 3344 黄蓉 销售主管 7800.0 3000 800.0 30
266
- 3577 杨过 会计 5566.0 2200 NaN 10
267
- 3588 朱九真 会计 5566.0 2500 NaN 10
268
- 4466 苗人凤 销售员 3344.0 2500 NaN 30
269
- 5234 郭靖 出纳 5566.0 2000 NaN 10
270
- 5566 宋远桥 会计师 7800.0 4000 1000.0 10
271
- 7800 张三丰 总裁 NaN 9000 1200.0 20
258
+ 1359 胡一刀 销售员 3344.0 1800 200.0 30
259
+ 2056 乔峰 分析师 7800.0 5000 1500.0 20
260
+ 3088 李莫愁 设计师 2056.0 3500 800.0 20
261
+ 3211 张无忌 程序员 2056.0 3200 NaN 20
262
+ 3233 丘处机 程序员 2056.0 3400 NaN 20
263
+ 3244 欧阳锋 程序员 3088.0 3200 NaN 20
264
+ 3251 张翠山 程序员 2056.0 4000 NaN 20
265
+ 3344 黄蓉 销售主管 7800.0 3000 800.0 30
266
+ 3577 杨过 会计 5566.0 2200 NaN 10
267
+ 3588 朱九真 会计 5566.0 2500 NaN 10
268
+ 4466 苗人凤 销售员 3344.0 2500 NaN 30
269
+ 5234 郭靖 出纳 5566.0 2000 NaN 10
270
+ 5566 宋远桥 会计师 7800.0 4000 1000.0 10
271
+ 7800 张三丰 总裁 NaN 9000 1200.0 20
272
272
```
273
273
274
274
> ** 说明** :在数据库中` mgr ` 和` comm ` 两个列的数据类型是` int ` ,但是因为有缺失值(空值),读取到` DataFrame ` 之后,列的数据类型变成了` float ` ,因为我们通常会用` float ` 类型的` NaN ` 来表示空值。
@@ -335,12 +335,12 @@ emp_df.head()
335
335
336
336
```
337
337
ename job mgr sal comm dno
338
- eno
339
- 1359 胡一刀 销售员 3344 1800 200 30
340
- 2056 乔峰 分析师 7800 5000 1500 20
341
- 3088 李莫愁 设计师 2056 3500 800 20
342
- 3211 张无忌 程序员 2056 3200 NaN 20
343
- 3233 丘处机 程序员 2056 3400 NaN 20
338
+ eno
339
+ 1359 胡一刀 销售员 3344 1800 200 30
340
+ 2056 乔峰 分析师 7800 5000 1500 20
341
+ 3088 李莫愁 设计师 2056 3500 800 20
342
+ 3211 张无忌 程序员 2056 3200 NaN 20
343
+ 3233 丘处机 程序员 2056 3400 NaN 20
344
344
```
345
345
346
346
### 操作数据
@@ -422,13 +422,13 @@ emp_df.loc[2056:3344]
422
422
```
423
423
ename job mgr sal comm dno
424
424
eno
425
- 2056 乔峰 分析师 7800.0 5000 1500.0 20
426
- 3088 李莫愁 设计师 2056.0 3500 800.0 20
427
- 3211 张无忌 程序员 2056.0 3200 NaN 20
428
- 3233 丘处机 程序员 2056.0 3400 NaN 20
429
- 3244 欧阳锋 程序员 3088.0 3200 NaN 20
430
- 3251 张翠山 程序员 2056.0 4000 NaN 20
431
- 3344 黄蓉 销售主管 7800.0 3000 800.0 30
425
+ 2056 乔峰 分析师 7800.0 5000 1500.0 20
426
+ 3088 李莫愁 设计师 2056.0 3500 800.0 20
427
+ 3211 张无忌 程序员 2056.0 3200 NaN 20
428
+ 3233 丘处机 程序员 2056.0 3400 NaN 20
429
+ 3244 欧阳锋 程序员 3088.0 3200 NaN 20
430
+ 3251 张翠山 程序员 2056.0 4000 NaN 20
431
+ 3344 黄蓉 销售主管 7800.0 3000 800.0 30
432
432
```
433
433
434
434
#### 数据筛选
@@ -444,10 +444,10 @@ emp_df[emp_df.sal > 3500]
444
444
```
445
445
ename job mgr sal comm dno
446
446
eno
447
- 2056 乔峰 分析师 7800.0 5000 1500.0 20
448
- 3251 张翠山 程序员 2056.0 4000 NaN 20
449
- 5566 宋远桥 会计师 7800.0 4000 1000.0 10
450
- 7800 张三丰 总裁 NaN 9000 1200.0 20
447
+ 2056 乔峰 分析师 7800.0 5000 1500.0 20
448
+ 3251 张翠山 程序员 2056.0 4000 NaN 20
449
+ 5566 宋远桥 会计师 7800.0 4000 1000.0 10
450
+ 7800 张三丰 总裁 NaN 9000 1200.0 20
451
451
```
452
452
453
453
当然,我们也可以组合多个条件来进行数据筛选,例如从` emp_df ` 中筛选出月薪超过` 3500 ` 且部门编号为` 20 ` 的员工,代码如下所示。
@@ -461,9 +461,9 @@ emp_df[(emp_df.sal > 3500) & (emp_df.dno == 20)]
461
461
```
462
462
ename job mgr sal comm dno
463
463
eno
464
- 2056 乔峰 分析师 7800.0 5000 1500.0 20
465
- 3251 张翠山 程序员 2056.0 4000 NaN 20
466
- 7800 张三丰 总裁 NaN 9000 1200.0 20
464
+ 2056 乔峰 分析师 7800.0 5000 1500.0 20
465
+ 3251 张翠山 程序员 2056.0 4000 NaN 20
466
+ 7800 张三丰 总裁 NaN 9000 1200.0 20
467
467
```
468
468
469
469
除了使用布尔索引,` DataFrame ` 对象的` query ` 方法也可以实现数据筛选,` query ` 方法的参数是一个字符串,它代表了筛选数据使用的表达式,而且更符合 Python 程序员的使用习惯。下面我们使用` query ` 方法将上面的效果重新实现一遍,代码如下所示。
0 commit comments