소연이의 메모장

[Pandas] 열과 행 단위로 데이터 추출하기(loc, iloc) 본문

Programming/Python

[Pandas] 열과 행 단위로 데이터 추출하기(loc, iloc)

xoyeon 2022. 10. 24. 23:37
반응형

데이터는 kaggel의 creditcard 데이터를 활용하였다.

 

열 단위의 데이터 추출

# 하나의 열 데이터 추출
v1 = data['V1']

type(v1)
> pandas.core.series.Series

v1.head()
> 0   -1.359807
1    1.191857
2   -1.358354
3   -0.966272
4   -1.158233
Name: V1, dtype: float64

# 여러개의 열 데이터 추출
v3 = data[['V1','V2','V3']]

type(v3) ## 하나의 열 데이터를 추출할 때와 달리 dataframe 형식임
> pandas.core.frame.DataFrame

v3.head()
> 	V1	V2	V3
0	-1.359807	-0.072781	2.536347
1	1.191857	0.266151	0.166480
2	-1.358354	-1.340163	1.773209
3	-0.966272	-0.185226	1.792993
4	-1.158233	0.877737	1.548718

행 단위의 데이터 추출

속성 설명
loc Index를 기준으로 행 데이터 추출
iloc 행 번호를 기준으로 행 데이터 추출
# loc
v3.loc[1]
> V1    1.191857
V2    0.266151
V3    0.166480
Name: 1, dtype: float64

# 여러개의 인덱스에 접근하여 행 추출
v3.loc[[0,3,5]]
> V1	V2	V3
0	-1.359807	-0.072781	2.536347
3	-0.966272	-0.185226	1.792993
5	-0.425966	0.960523	1.141109

# iloc
v3.iloc[1]
> V1    1.191857
V2    0.266151
V3    0.166480
Name: 1, dtype: float64

v3.iloc[-1]
> V1   -0.533413
V2   -0.189733
V3    0.703337
Name: 284806, dtype: float64

# 여러개의 행 추출
v3.iloc[[0,3,5]]
> 	V1	V2	V3
0	-1.359807	-0.072781	2.536347
3	-0.966272	-0.185226	1.792993
5	-0.425966	0.960523	1.141109

loc와 iloc의 비교

loc_v3 = v3.loc[:,['V1','V3']]
loc_v3.head()
> V1	V3
0	-1.359807	2.536347
1	1.191857	0.166480
2	-1.358354	1.773209
3	-0.966272	1.792993
4	-1.158233	1.548718

loc_v3 = v3.loc[:,[0,2]]
loc_v3.head()
> KeyError: "None of [Int64Index([0, 2], dtype='int64')] are in the [columns]"

iloc_v3 = v3.iloc[:,[0,2]]
iloc_v3.head()
> V1	V3
0	-1.359807	2.536347
1	1.191857	0.166480
2	-1.358354	1.773209
3	-0.966272	1.792993
4	-1.158233	1.548718

iloc_v3 = v3.iloc[:,['V1','V3']]
iloc_v3
> IndexError: .iloc requires numeric indexers, got ['V1' 'V3']