前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas系列2_选择数据

pandas系列2_选择数据

作者头像
皮大大
发布2021-03-02 14:47:36
3380
发布2021-03-02 14:47:36
举报
文章被收录于专栏:机器学习/数据可视化

如何从众多数据选择出我们所需要的数据,是数据分析中重点。本文中使用的方法

  • loc:通过标签获取,等同于.at
  • iloc:通过数字索引获取,等同于.iat
总结
  • df.loc[[......]]:可以使用数字索引,也可以使用标签索引,还可以用切片的形式
  • df.iloc[[.....]]:只能使用数字索引,可以是非连续或者连续(等差形式也OK)
  • 布尔索引:df2[df2['E'].isin(['two', 'four'])]
  • 同时指定行和列:
    • df.loc[:, ["A","B"]]
    • df.iloc[[1, 2, 4], [0, 2]]
查看指定的行列数据
代码语言:javascript
复制
# 指定列属性查看数据,多个列属性放在列表中
df[["B","C"]]

B

C

2019-09-24

-0.362323

1.678106

2019-09-25

-2.261810

-1.035994

2019-09-26

-1.472062

1.081443

2019-09-27

0.292800

-0.593975

2019-09-28

0.002751

-0.233792

2019-09-29

1.001527

1.521685

代码语言:javascript
复制
# 通过切片形式,指定行标签查看指定的行数据
df[1:3]   # 默认数字索引

A

B

C

D

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

2019-09-26

1.710651

-1.472062

1.081443

1.109993

代码语言:javascript
复制
df["20190924":"20190927"]     # 使用的是创建的索引

A

B

C

D

2019-09-24

-0.693593

-0.362323

1.678106

-1.180693

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

2019-09-26

1.710651

-1.472062

1.081443

1.109993

2019-09-27

-0.189173

0.292800

-0.593975

-0.171872

loc 标签索引

根据标签(不是自带的数字索引)查看数据

代码语言:javascript
复制
df.loc[dates[0]]
代码语言:javascript
复制
A   -0.693593
B   -0.362323
C    1.678106
D   -1.180693
Name: 2019-09-24 00:00:00, dtype: float64
代码语言:javascript
复制
dates[0]
代码语言:javascript
复制
Timestamp('2019-09-24 00:00:00', freq='D')
代码语言:javascript
复制
# 选择行和列
df.loc[:, ["A","B"]]   # 选择所有行,然后AB两个列

A

B

2019-09-24

-0.693593

-0.362323

2019-09-25

1.438213

-2.261810

2019-09-26

1.710651

-1.472062

2019-09-27

-0.189173

0.292800

2019-09-28

0.561579

0.002751

2019-09-29

-1.037907

1.001527

代码语言:javascript
复制
# 索引通过标签来实现
df.loc['20190924':'20190927', ['A', 'B']]

A

B

2019-09-24

-0.693593

-0.362323

2019-09-25

1.438213

-2.261810

2019-09-26

1.710651

-1.472062

2019-09-27

-0.189173

0.292800

代码语言:javascript
复制
# 指定的行或者列可以是切片形式
df.loc['20190924':'20190927', 'A':'B']

A

B

2019-09-24

-0.693593

-0.362323

2019-09-25

1.438213

-2.261810

2019-09-26

1.710651

-1.472062

2019-09-27

-0.189173

0.292800

iloc数字索引

记忆放法:iloc记为intlocint为整型,表示通过数字来进行索引

代码语言:javascript
复制
df

A

B

C

D

2019-09-24

-0.693593

-0.362323

1.678106

-1.180693

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

2019-09-26

1.710651

-1.472062

1.081443

1.109993

2019-09-27

-0.189173

0.292800

-0.593975

-0.171872

2019-09-28

0.561579

0.002751

-0.233792

1.624140

2019-09-29

-1.037907

1.001527

1.521685

-0.049556

代码语言:javascript
复制
df.iloc[1:3]

A

B

C

D

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

2019-09-26

1.710651

-1.472062

1.081443

1.109993

代码语言:javascript
复制
df.iloc[1:3, 0:2]  # 切片形式,连续性

A

B

2019-09-25

1.438213

-2.261810

2019-09-26

1.710651

-1.472062

代码语言:javascript
复制
df.iloc[[1, 2, 4], [0, 2]]  # 行索引是离散的值

A

C

2019-09-25

1.438213

-1.035994

2019-09-26

1.710651

1.081443

2019-09-28

0.561579

-0.233792

代码语言:javascript
复制
df.iloc[:, 1:3]

B

C

2019-09-24

-0.362323

1.678106

2019-09-25

-2.261810

-1.035994

2019-09-26

-1.472062

1.081443

2019-09-27

0.292800

-0.593975

2019-09-28

0.002751

-0.233792

2019-09-29

1.001527

1.521685

获取具体位置的元素
代码语言:javascript
复制
df.iloc[1,2]
代码语言:javascript
复制
-1.035993773960585
代码语言:javascript
复制
df.iat[1,2]    # 等同上面
代码语言:javascript
复制
-1.035993773960585
布尔索引
代码语言:javascript
复制
df

A

B

C

D

2019-09-24

-0.693593

-0.362323

1.678106

-1.180693

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

2019-09-26

1.710651

-1.472062

1.081443

1.109993

2019-09-27

-0.189173

0.292800

-0.593975

-0.171872

2019-09-28

0.561579

0.002751

-0.233792

1.624140

2019-09-29

-1.037907

1.001527

1.521685

-0.049556

代码语言:javascript
复制
df[df.A > 0]  # 将属性A中大于0的行全部选择出出来

A

B

C

D

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

2019-09-26

1.710651

-1.472062

1.081443

1.109993

2019-09-28

0.561579

0.002751

-0.233792

1.624140

代码语言:javascript
复制
df[df > 0]   # 满足bool条件的DF中选取值

A

B

C

D

2019-09-24

NaN

NaN

1.678106

NaN

2019-09-25

1.438213

NaN

NaN

0.433404

2019-09-26

1.710651

NaN

1.081443

1.109993

2019-09-27

NaN

0.292800

NaN

NaN

2019-09-28

0.561579

0.002751

NaN

1.624140

2019-09-29

NaN

1.001527

1.521685

NaN

isin方法过滤
代码语言:javascript
复制
df2 = df.copy()
代码语言:javascript
复制
df2['E'] = ['one', 'one', 'two', 'three', 'four', 'three']
df2

A

B

C

D

E

2019-09-24

-0.693593

-0.362323

1.678106

-1.180693

one

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

one

2019-09-26

1.710651

-1.472062

1.081443

1.109993

two

2019-09-27

-0.189173

0.292800

-0.593975

-0.171872

three

2019-09-28

0.561579

0.002751

-0.233792

1.624140

four

2019-09-29

-1.037907

1.001527

1.521685

-0.049556

three

代码语言:javascript
复制
df2['E'].isin(['two', 'four'])    # 得到bool值
代码语言:javascript
复制
2019-09-24    False
2019-09-25    False
2019-09-26     True
2019-09-27    False
2019-09-28     True
2019-09-29    False
Freq: D, Name: E, dtype: bool
代码语言:javascript
复制
df2[df2['E'].isin(['two', 'four'])]

A

B

C

D

E

2019-09-26

1.710651

-1.472062

1.081443

1.109993

two

2019-09-28

0.561579

0.002751

-0.233792

1.624140

four

生成新的列属性
代码语言:javascript
复制
df2['F'] = df2['A'] + df['B']    # 只能通过类似字典的形式,不能通过对象的属性形式
代码语言:javascript
复制
df2

A

B

C

D

E

F

2019-09-24

-0.693593

-0.362323

1.678106

-1.180693

one

-1.055915

2019-09-25

1.438213

-2.261810

-1.035994

0.433404

one

-0.823597

2019-09-26

1.710651

-1.472062

1.081443

1.109993

two

0.238589

2019-09-27

-0.189173

0.292800

-0.593975

-0.171872

three

0.103627

2019-09-28

0.561579

0.002751

-0.233792

1.624140

four

0.564329

2019-09-29

-1.037907

1.001527

1.521685

-0.049556

three

-0.036380

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总结
  • 查看指定的行列数据
  • loc 标签索引
  • iloc数字索引
  • 获取具体位置的元素
  • 布尔索引
  • isin方法过滤
  • 生成新的列属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档