본문 바로가기

카테고리 없음

[AI-6] DataFrame에서 데이터 선택하기

DataFrame이 마냥 Python의 List와 같은 것이라고 생각했다.

DataFrame을 DataFrame답게 이용하기 위해서 차이점 위주로 정리한다.

 

DataFrame 데이터 선택 방법

- 인덱스를 명시적으로 지정해 준 경우

import pandas as pd

df = pd.DataFrame([1,2,3,4,5,6,7,8,9,10],index=['a','b','c','d','e','f','g','h','i','j'])

print(df[4:7])
  0
e 5
f 6
g 7
print(df['e':'h'])
  0
e 5
f 6
g 7
h 8

- loc, iloc

-- loc : is primarily label based

-- iloc : is primarily integer position based

-- 곧바로 인덱스를 사용해도 되지만 혼동을 피하기 위해

-- label을 기준으로 선택할 때는 loc을(주의 - label이 inteager(default)로 되어있는데 loc을 사용하고자 하는 경우)

-- inteager을 기준으로 선택할 때는 iloc을 사용

df1 = pd.DataFrame([1,2,3,4,5,6,7,8,9,10], index=['a','b','c','d','e','f','g','h','i','j'])
df2 = pd.DataFrame([1,2,3,4,5,6,7,8,9,10])

print(df1.iloc[1:4])
  0
b 2
c 3
d 4
print(df2.loc[1:4])
  0
1 2
2 3
3 4
4 5

- 2차원 DataFrame 데이터를 선택하는 경우

import pandas as pd

df = pd.DataFrame([[3, 6, 9, 5],
                   [4, 7, 3, 6],
                   [5, 8, 4, 7]], columns=['A','B','C','D'])

print(df.iloc[:2, 0])
  A
0 3
1 4
print(df.loc[:1,:'B'])
  A B
0 3 6
1 4 7
print(df.loc[:1,['A','B','C']])
  A B C
0 3 6 9
1 4 7 3

- 2차원 DataFrame 열을 선택하는 경우

-- df[ ] inteager index를 바로 넣으면 에러가 발생한다.

import pandas as pd

df = pd.DataFrame([[3, 6, 9, 5],
                   [4, 7, 3, 6],
                   [5, 8, 4, 7]], columns=['A','B','C','D'])

print(df['A'])
print(df.loc[:,'A'])

# print(df[0])   # 에러 발생
print(df.iloc[:,0])
  A
0 3
1 4
2 5

-- 2개 이상의 열을 선택하는 경우 리스트를  이용한다.

-- (열이 연속적인 경우에는 리스트를 이용하지 않아도된다.)

print(df[['B','D']])
print(df.loc[:,['B','D']])

# print(df[[1,3]])   # 에러 발생
print(df.iloc[:,[1,3]])
  B D
0 6 5
1 7 6
2 8 7

 

2차원 DataFrame을 기준으로

1. iloc과 loc 사용법

2. 열(들)만을 선택하는 경우가 아니라면 iloc 또는 loc을 이용한다.

3. 열을 선택하는 경우 df[ ], df.iloc[ ], df.loc[ ] 모두 이용 가능하지만,

   default inteager index를 이용하고싶다면 iloc을 이용한다.

   (df[0]과 같이바로 접근하면 에러가 발생한다.)