[판다스(Pandas)]데이터 선택(Data Selection)(1)-loc/iloc을 사용한 데이터 선택

Jihwan Jung·2022년 10월 10일
1

🐼판다스

목록 보기
7/12
post-thumbnail
post-custom-banner

💡오늘 배울 내용


데이터프레임에서 인덱스를 가지고 데이터를 선택하는 두가지 방법(loc/iloc)을 알아봅시다.

🔎loc


loc은 location의 약자로, df.loc문법을 사용하면 인덱스의 이름을 가지고 원하는 행의 원하는 열(컬럼) 데이터를 불러올 수 있습니다.

df.loc[행 인덱싱 값, 열 인덱싱 값] (인덱스의 이름을 넣어줌)

🔔데이터 불러오기


지난번에 만들었던 데이터프레임을 가져와 loc 문법을 실습해봅시다.

import pandas as pd
data = {
    '이름' : ['유재석', '박명수', '정준하', '노홍철', '정형돈', '하하'],
    '지역' : ['서울', '부산', '부산', '서울', '서울', '서울'],
    '나이' : [19, 23, 20, 25, 18, 21],
    '국어점수' : [86, 90, 80, 65, 50, 60],
    '수학점수' : [86, 100, 66, 70, 40, 80],
    '코딩' : ['Python', 'Java', '', 'Javascript', 'PYTHON', '']
}
df = pd.DataFrame(data, index=['1번', '2번', '3번', '4번', '5번', '6번'])
df.index.name = '번호'

🔔실습


df.loc['1번'] # '1번'에 해당하는 전체 데이터

인덱스 이름을 '1번'으로 갖고 있는 '유재석'의 전체 데이터를 불러왔습니다. 이처럼 df.loc[] 메서드에 한가지 인덱스만 채워 넣으면 해당 인덱스 행의 모든 데이터를 시리즈로 변환하여 보여줍니다.

df.loc['1번', '나이'] # index '1번'에 해당하는 나이 데이터
>> 19

df.loc에 '1번'과 '나이' 두가지를 채워 넣으면 하나는 행에 대한 정보, 하나는 열(컬럼)에 대한 정보로 인식합니다. 즉, '1번'을 인덱스로 가지고 있는 행의 '나이'데이터를 출력하는 것입니다.

df.loc[['1번', '2번'], '수학점수'] #두개의 인덱스(대괄호로 묶어줌)에 해당하는 '수학점수'데이터

여러 행을 선택하여 정보를 보고싶을때는 해당하는 인덱스 이름을 괄호로 묶으면 됩니다. 위의 예시 코드에서처럼 ['1번', '2번']은 행에 대한 정보로, '수학점수'는 열(컬럼)에 대한 정보로 읽어들입니다.

df.loc[['1번', '2번'], ['지역', '국어점수']]

위의 예시코드 처럼 여러개의 행과 여러개의 열(컬럼)을 동시에 선택하여 볼 수도 있습니다.

df.loc['1번':'4번', '지역':'국어점수']

:을 사용하여 연속적인 순서의 데이터를 한번에 불러올 수 있습니다. 하지만 일반적인 슬라이싱 용법과 다르게 '4번'과 '국어점수' 데이터를 포함하여 불러옵니다.

🔎iloc


iloc은 integer(정수) location의 약자로, df.iloc문법을 사용하면 인덱스의 위치를 가지고 원하는 행의 원하는 열(컬럼) 데이터를 불러올 수 있습니다.

df.iloc[행 인덱싱 값, 열 인덱싱 값] (인덱스의 위치을 넣어줌)

🔔데이터 불러오기


같은 데이터를 사용하여 iloc 문법을 알아봅시다.

import pandas as pd
data = {
    '이름' : ['유재석', '박명수', '정준하', '노홍철', '정형돈', '하하'],
    '지역' : ['서울', '부산', '부산', '서울', '서울', '서울'],
    '나이' : [19, 23, 20, 25, 18, 21],
    '국어점수' : [86, 90, 80, 65, 50, 60],
    '수학점수' : [86, 100, 66, 70, 40, 80],
    '코딩' : ['Python', 'Java', '', 'Javascript', 'PYTHON', '']
}
df = pd.DataFrame(data, index=['1번', '2번', '3번', '4번', '5번', '6번'])
df.index.name = '번호'

🔔실습


df.loc[0] # 첫번째 행의 전체 데이터

파이썬은 0부터 순서를 셈으로 0은 첫번째 위치를 의미합니다. 상단 코드에서도 인덱스 위치를 0으로 하는 '유재석'의 전체 데이터를 불러왔습니다. 이처럼 df.iloc[] 메서드에 한가지 인덱스만 채워 넣으면 해당 인덱스 행의 모든 데이터를 시리즈로 변환하여 보여줍니다.

df.iloc[0:5] #5번째 데이터는 포함 안함(0~4번째 위치만)

:을 사용하여 연속적인 순서의 데이터를 한번에 불러올 수 있습니다. loc와 다르게 일반적인 슬라이싱 용법처럼 5번째 위치는 포함하지 않고 불러옵니다.

df.iloc[4, 2] #'5번' 학생의 '나이' 데이터(4번째 위치의 2번째 데이터)
>> 18

행의 위치는 4, 열의 위치는 2인 데이터를 불러옵니다. 즉, '5번' 학생의 '나이' 데이터를 불러옵니다.

df.iloc[[0, 1], [3, 4]]

여러 행과 열을 선택하여 정보를 보고싶을때는 해당하는 인덱스 위치를 괄호로 묶으면 됩니다. 위의 예시 코드에서처럼 [0, 1]은 행에 대한 정보로, [3, 4]는 열(컬럼)에 대한 정보로 읽어들입니다.

df.iloc[0:5, 3:5] #0~4번째 위치 학생의 3~4번째 데이터 


슬라이싱 문법을 활용하여 행과 열의 위치를 나타낼 수도 있습니다. 상단의 코드는 0~4번째 위치(0:5)의 3~4번째 데이터인 국어, 수학 점수(3:5)를 출력해줍니다.

profile
22.10月~24.07月 공군 암호병 복무중/ 사회 과학과 딥 러닝에 관심이 있는 학부생(CS&E)입니다. 기술과 사회에 대한 이해를 바탕으로, 비즈니스 감각과 기술적 역량을 함께 갖춘 인공지능 프로그래머•데이터 과학자로 성장하고 싶습니다.
post-custom-banner

0개의 댓글