5分钟学会Pandas中iloc/loc/ix区别

早起python

点关注和我一起学Python

 

大家好,在使用pandas进行数据分析过程中,回想一下你是怎么对一个数据集进行数据切片,是不是百度:pandas如何提取第x行数据,然后根据一堆结果找到一个能用的就完事了,那么你一定会迷失在pandas中的切片函数:.iloc().loc().ix()中,本文就是为了解决这个问题,通过一个简单的DataFrame彻底搞明白这三个函数到底有什么区别,又该怎么使用。

  首先我们创建一个DataFrame用于讲解????

data = {'a':[11,22,33,44],
       'b':['aa','bb','cc','dd'],
       'c':[9,8,7,6],
        'd':[1,2,3,4]
       }
df = DataFrame(data)
df

abcd
011aa91
122bb82
233cc73
344dd64

iloc:通过行/列号选取数据

.iloc就是通过行/列号来选取数据,比如我们可以这样来选取第0行数据????

df.iloc[0]
a    11
b    aa
c     9
d     1
Name: 0, dtype: object
也可以按照行号选取多行数据????
df.iloc[0:2]

abcd
011aa91
122bb82

也可按照列号选取某列,如选取第二列

df.iloc[:,[1]]

b
0aa
1bb
2cc
3dd

当然也可以按照行号选取某行某列,比如选取第0行第2列

df.iloc[0:1,[1]]

b
0aa

当然也可以根据行号选取多行多列,比如选取第0-2行第0-2列

df.iloc[0:2,[0,1]]

ab
011aa
122bb

loc通过标签选取数据

.loc()函数是通过标签选取数据,如果搞不懂什么是标签什么是位置????

比如我们选取第1行数据

df.loc[0] #选取第1行 因为第1行的行号是0所以和iloc效果相同
a    11
b    aa
c     9
d     1
Name: 0, dtype: object
再创建一个df1用于示例
data = {'a':[11,22,33,44],
       'b':['aa','bb','cc','dd'],
       'c':[9,8,7,6],
        'd':[1,2,3,4]
       }
df1 = DataFrame(data,index = ['a','b','c','d'])
df1

abcd
a11aa91
b22bb82
c33cc73
d44dd64

按标签选取第b行

df1.loc['b']
a    22
b    bb
c     8
d     2
Name: b, dtype: object

按标签选取多行????

df1.loc['b':]

abcd
b22bb82
c33cc73
d44dd64

按标签选取某列????

df1.loc[:,['a']] #通过标签选取某列

a
a11
b22
c33
d44

按标签选取多列????

df1.loc[:,['a','b']]

ab
a11aa
b22bb
c33cc
d44dd

按标签选取某行某列????

df1.loc['a',['b','c']]
b    aa
c     9
Name: a, dtype: object

ix 简单粗暴 混合使用

ix就是把iloc和loc语法综合了,爱用哪个用哪个,不过在有些版本的pandas中取消了ix函数,我们再看一下df????

df

abcd
011aa91
122bb82
233cc73
344dd64

使用ix可以像iloc通过行号选取????

df.ix[1]
a    22
b    bb
c     8
d     2
Name: 1, dtype: object

也可以像loc通过标签选取????

df1.ix['a']
a    11
b    aa
c     9
d     1
Name: a, dtype: object

可以通过行号选取指定位置的数据????

df1.ix[3,3] #通过行号选取指定位置的数据
4

可以通过标签选取指定位置的数据????

df1.ix['a','a']  #通过标签选取指定位置的数据
11
按照条件选取数据

掌握了上面的方法我们就可以按照条件选取数据,比如通过单个条件选取数据

df1.loc[df1['a']==11]

abcd
a11aa91

也可以通过多个条件选取数据

df1.loc[(df1['a']==11)&(df1['d']==1)]

abcd
a11aa91

以上就是pandas中数据切片函数.loc()、.iloc()、.ix()的区别与用法,学会了吗?更多的pandas学习可以使用Pandas进阶修炼120题,正在更新中。

点击给我留言

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值