본문 바로가기
Python/Pandas

[파이썬 Pandas] 4. 데이터 선택

by Delants 2022. 8. 9.

# 본 내용은 " [나도코딩] - 파이썬 활용편(5) 데이터분석 및 시각화 " 강의를 듣고, 복습하고 공부한 내용을 다루었습니다.

오늘 포스팅할 내용은 다음과 같습니다.

 

Pandas #4. 데이터 선택

06. 데이터 선택 (기본)

07. 데이터 선택 (loc)

08. 데이터 선택 (iloc)

 

=> 데이터를 검색하고, 선택하는 방법에 대해 학습합니다.


 

06 데이터 선택

6-1. 데이터 프레임 준비

이전에 사용했던 데이터프레임을 준비하고, 해당 셋으로 연습해 보겠습니다.

6-2. 레이블을 이용한 칼럼 선택

먼저 레이블을 이용한 칼럼 선택입니다. 칼럼명을 직접 적어줌으로써 칼럼을 선택할 수 있습니다.

아래와 같은 방법으로 칼럼을 선택해서 확인할 수 있습니다.

1) 확인하고자 하는 칼럼수가 1개일 경우

데이터셋이름['칼럼이름']
예) df['이름']
결과)


2) 확인하고자 하는 칼럼수가 2개 이상일 경우
- > 대괄호를 2개로 하여 리스트를 묶어주는 방식으로 사용

데이터셋이름[['칼럼이름1', '칼럼이름2']]
예) df[['이름','키']]
결과)



 

6-3. 정수 인덱스를 이용한 칼럼 선택

다음으로 정수 인덱스를 이용해서도 칼럼을 선택할 수 있습니다.

0번째 인덱스에는[0] 첫 번째 열이 검색되도록 합니다.

이렇게 이름을 직접적으로 적지 않더라도 검색할 수 있습니다.

아래와 같은 방법으로 사용할 수 있습니다.

1) 컬럼명을 확인.
2) 0번째 인덱스를 검색한 것의 결과 (컬럼명만 출력하고싶을 경우)
하지만, 컬럼에 속해 있는 데이터를 보고싶을 경우 다음과 같이 사용합니다.
리스트를 한 번 더 감싸줌으로써 데이터프레임에 해당하는 인덱스와 열의 값을 함께 보여주고 있습니다.

3)  마지막 열의 데이터를 보고싶을 경우
위 처럼, 마지막 열의 데이터를 보고싶을 경우에는 컬럼값으로 -1을 줌으로써, 끝에서 첫 번째에 해당하는 값을 출력할 수 있습니다. ('-'는 역으로, 끝에서부터라는 의미입니다.)

 

6-4. 슬라이싱

슬라이싱은 정보를 가져오는데 있어 매우 유용하게 쓰입니다.

예를들어, 나는 1열부터 4열까지 데이터를 가져오고 싶다거나, 혹은 특정 열의 특정 행의 데이터를 가져오고 싶다고 할 경우가 되겠습니다.

데이터셋['가져오고싶은 칼럼'][시작인덱스:끝 인덱스]

인덱스는 행 번호에서 1을 뺀 값입니다. (인덱스가 5라면, 4행까지)

예를 들어, 위 데이터셋에서,

" 이름과 키 정보를 보고싶은데, 2번째 사람부터 5번째 사람까지의 정보만 보고 싶다 " 고 할 경우

df['이름','키'][1:4] 을 입력하면 됩니다.

 

또한, 인덱스를 처음부터 가져올 경우, 첫 인덱스는 생략할 수 있습니다.

예를 들어, " 수학 성적과 과학 성적을 보고 싶은데, 처음부터 3명만 보고 싶다"고 할 경우

df['이름','키'][:3]으로 표현할 수 있습니다.

 

단순히 모든 데이터를 2번째부터 끝까지 가져오고자 하는 경우에도 

df[2:]로 표시함으로써, 마지막 데이터까지 보고싶을 경우, 마지막 인덱스를 생략할 수 있습니다.


 

07 데이터 선택 (loc)
인덱스의 위치를 이용하여 원하는 행에서 원하는 열을 선택하기

이번에는 .loc()함수를 사용해서 데이터를 검색하는 방법을 알아보겠습니다.

.loc()함수는 위치를 찾는 함수로, 인덱스를 기준으로 위치를 찾아 줍니다.

다음 예시를 보겠습니다.

위 예시는 인덱스 1번에 해당하는 전체 데이터를 출력한 결과입니다. 

인덱스 1번에 해당하는 행의 값들이 칼럼명과 함께 출력되는 것을 보실 수 있습니다.

이 경우에는 특정 학생의 전체적인 정보를 확인하고자 할 때 유용하겠군요.

 

특정 학생의 특정 점수를 볼 경우에도 사용할 수 있습니다.

1) 인덱스가 1번인 학생의 국어 성적 확인

이렇게 한 명에 대한 정보를 간단하게 나타내줄 수도 있지만,

실생활에서는 두 명 이상의 성적을 비교해서 어느 학생이 좀 더 우수한지 보는 경우도 있을 것 같습니다.

이 경우에는 리스트를 두 번 감싼 형태로 작성해서 각 점수를 비교할 수도 있습니다.

 

마지막으로 앞서 학습한 슬라이싱도 적용할 수 있습니다.

학생 리스트번호를 일일이 적기 많을 경우에는 몇 번부터 몇 번까지 라는 범위만 적용해준다면,

손쉽게 각 학생의 점수를 확인할 수 있습니다.

슬라이싱을 활용한 데이터 검색의 경우에는 리스트를 한 번만 감싼다는 것에 주의해 주세요.

복수의 정보를 확인하기는 하지만, 하나의 덩어리이기 때문입니다.

 

08 데이터 선택 (iloc)
정수를 이용해서 원하는 행에서 원하는 열 선택

앞서 .loc()함수를 학습하였습니다.

해당 함수는 위치값을 실제 인덱스 이름과 칼럼명을 적어서 결과를 반환해주었습니다.

이번에는 정수를 이용해서 선택하는 함수로 .iloc()함수에 대해 알아보도록 하겠습니다.

기본형 - 데이터셋.iloc[인덱스값]
슬라이싱형 - 데이터셋.iloc[시작인덱스:끝 인덱스] # 단, 시작인덱스는 시작행-1, 끝 인덱스도 끝 행-1이다.

제일 먼저 간단하게 0번째 위치한 인덱스 값을 가져오면 다음과 같은 결과가 나타납니다. => df.iloc[0]

해당 인덱스에 있는 정보가 모두 표시되군요.

df.loc['1번']과 같은 결과입니다.

이 때는 인덱스 이름을 적어줬지만, 이번에는 정수형으로 인덱스 값을 적어줬다는게 차이점입니다.

 

.iloc()함수 역시 슬라이싱이 가능합니다.

예컨대, 1번째부터 5번째까지 위치한 학생의 데이터를 가져오고 싶다면 다음과 같이 표현할 수 있습니다.

.iloc()함수는 일반적인 인덱스를 적용하는 경우와 다르게 시작점은 행-1값을 적으나, 끝지점은 행의 값 그대로를 적는다는 점을 주의해 주세요. 즉, 일반적인 인덱스로 변환하면 0번째부터 4번째 위치까지 가져오는 경우와 동일합니다.

 

마지막으로 위치값을 이용해 두가지 이상의 데이터를 검색할 수 있습니다.

 위와 같이 리스트로 두 번 감싼 상태로 해당 위치값의 인덱스를 적어주면 해당 데이터를 검색하고, 비교할 수 있게 됩니다.


이렇게 오늘은 데이터 선택에 대한 내용을 공부해 보았습니다.

슬라이싱법이나, 검색하는 부분에서 조금씩 다른 부분이 있어 혼동스러운 부분도 없지 않아 있었습니다.

하지만 정확한 패턴을 파악하고 숙지한다면,

또한 앞으로 접하게 될 많은 데이터들을 정제해보는 경험을 쌓는다면 해당 개념은 좀 더 잘 잡아질 것이라 생각합니다.

 

다음 학습 내용 (Pandas #5)
09 데이터 필터링

감사합니다.

댓글