Pandas中loc和iloc函数(提取某几列或者行的数据)

loc函数:通过行索引( 列名、行名) 中的具体值来取行数据( 如取”Index”为”A”的行

iloc函数:通过行号( 数字)来取行数据( 如取第二行的数据

需要知道:

data[‘A’] 是选取data表中的列名为A的所有数据,这个只对列有效,对行没有用,因为列有列名,而行没有行名

例如此时,data[‘a’] 就是错的

一、iloc

data.iloc[ A:B ,C:D ]

用法:逗号前面表示的是取哪些行,逗号后面表示取哪些列

例如1:data.iloc[ 0:2 ,1:2 ] # 取第0-2行和1-2列交叉的所有的数据
例如2:data.iloc[ : ,1:2 ] # 取所有行和1-2列交叉的所有的数据
例如3:data.iloc[ : , : ] # 取所有行和所有列的所有的数据
例如4:data.iloc[ : , [1,2,3] ] # 取所有行和第1,2,3列交叉的所有的数据

二、loc

想要得到某行的所有值,只需要data.loc[‘该行的第一个元素’]],这里是一个[]

想要得到某列的所有值,通过data.loc[: , [‘该列的第一个元素’]]

例如1:data.loc[ : ,’A’ ] # 取列名为A的该列的所有数据
例如2:data.iloc[ ‘a’:’c’ ,’A’ ] # 取行号为a、c的列为A的所有数据

data.loc[data[‘A’]==0] # A列中数字为0所在的行数据

  1. 利用loc、iloc提取某一行数据
import numpy as np
import pandas as pd
#创建一个Dataframe
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))

In[1]: data
Out[1]:
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15

#取索引为'a'的行
In[2]: data.loc['a']
Out[2]:
A    0
B    1
C    2
D    3

#取第一行数据,索引为'a'的行就是第一行,所以结果相同
In[3]: data.iloc[0]
Out[3]:
A    0
B    1
C    2
D    3
  1. 利用loc、iloc提取某一列或者几列数据
In[4]:data.loc[:,['A']] #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
Out[4]:
    A
a   0
b   4
c   8
d  12

In[5]:data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]],取第0列和第1列的所有行
Out[5]:
    A
a   0
b   4
c   8
d  12

4.利用loc、iloc提取所有数据

In[8]:data.loc[:,:] #取A,B,C,D列的所有行
Out[8]:
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15

In[9]:data.iloc[:,:] #取第0,1,2,3列的所有行
Out[9]:
    A   B   C   D
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15

5.利用loc函数,根据某个数据来提取数据所在的行

In[10]: data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
Out[10]:
   A  B  C  D
a  0  1  2  3

In[11]: data.loc[(data['A']==0)&(data['B']==2)] #提取data数据(多个筛选条件)
Out[11]:
   A  B  C  D
a  0  1  2  3

利用loc函数的时候,当index相同时,会将相同的Index全部提取出来,

优点是:如果index是人名,数据框为所有人的数据,那么我可以将某个人的多条数据提取出来分析;

缺点是:如果index不具有特定意义,而且重复,那么提取的数据需要进一步处理,可用.reset_index()函数重置index

这里给一个实际场景:

Excel中的某一部分如下所示:

Pandas中loc和iloc函数(提取某几列或者行的数据)

此时我们想取到Excel表格的第2列到倒数第二列所有的数据,那么我使用以下代码:

o_train = pd.read_csv('./dataset/train.csv')
o_test = pd.read_csv('./dataset/test.csv')

print(o_train.shape) #(1314, 81)
print(o_test.shape)  #(146, 81)

### 'MSSubClass':'SaleCondition'是第二列到倒数第二列
all_features = pd.concat((o_train.loc[:, 'MSSubClass':'SaleCondition'], o_test.loc[:, 'MSSubClass':'SaleCondition'])) # [1460 rows x 79 columns]

all_labels   = pd.concat((o_train.loc[:, 'SalePrice'], o_test.loc[:, 'SalePrice'])) # Length: 1460,

得到如下结果:

Pandas中loc和iloc函数(提取某几列或者行的数据)

参考下文:Pandas中loc和iloc函数用法详解(源码+实例)_我是二师兄的博客-CSDN博客_iloc函数用法

【python】pandas中 loc & iloc用法及区别 – 知乎

Original: https://blog.csdn.net/weixin_43135178/article/details/124320736
Author: 马鹏森
Title: Pandas中loc和iloc函数(提取某几列或者行的数据)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/624508/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球