본문 바로가기
빅데이터분석

[파이썬] 파이썬 입문 데이터분석 프로젝트 만들기 - (9) 인덱싱(indexing)과 데이터 정렬(sorting)

by 모닥불🔥 2024. 5. 12.

링고선생님의 파이썬 데이터분석 프로젝트 강의! 강의자료로는 3-4 내용이다. 강의는 홈페이지에서 구매할 수 있음..!

(사진 누르면 링크 이동)


🔥 강의 목차

오리엔테이션
파이썬 기초 문법
데이터 전처리
데이터 시각화
마케팅 데이터 분석 및 지표 정의하기

🔥 인덱스(index)

인덱스(index)란, 행을 구별하는 데 사용되는 고유한 식별자를 말한다.

아래 그림에서처럼, 표의 맨왼쪽에 0부터 시작하는 숫자가 가장 기본적인 index 형태이다. 

 

1. 특정 컬럼으로 index 설정하기

0, 1, 2, 3과 같은 인덱스가 일반적이긴 하지만, 특정 컬럼을 기준으로 인덱스를 설정할 수도 있다.

import seaborn as sns
df = sns.load_dataset('taxis') # seaborn에서 taxis 데이터 불러오기

df.set_index('color', inplace = True) # 색깔을 인덱스로 지정
df.head(3)

 

seaborn 라이브러리에서, 택시(taxis) 데이터를 불러온 다음 '택시 색깔(color)' 컬럼을 인덱스로 지정해보자.

index를 지정할 때에는 데이터프레임명.set_index('인덱스화 할 컬럼명', inplace = True)로 할 수 있다.

 

 

inplace = True를 입력하면 위와 같이 택시 색깔이 인덱스로 설정되고 color 컬럼은 사라진다. 의미는, inplace: '덮어쓰시겠습니까?' True: 예 라고 생각하면 된다. 뭔가 word나 excel에서 저장버튼을 누르는 느낌..?

 

만약 inplace = True를 생략하고 set_index()를 설정하면, 제대로 적용된 것처럼 보이지만......

다시 데이터를 불러와 보면 기본 인덱스가 그대로 남아 있고, 컬럼도 그대로 있음!

df.set_index('color')
df.head(3)

 

2. 기본 인덱스로 되돌리기

set_index('컬럼명', inplace = True) 를 사용하여 인덱스를 특정 컬럼으로 덮어썼는데, 다시 기본 인덱스로 되돌리고 싶을 때는 reset_index(inplace = True)를 입력하면 된다. df를 불러와보면 기본 인덱스(0, 1, 2, 3...)로 돌아오고, 'color' 컬럼도 다시 돌아온 걸 확인할 수 있다.

 

🔥 정렬(sort)

정렬(sort)은 특정 기준에 따라 순서대로 나열하는 것이다. 

df.sort_values('컬럼명', ascending = True, inplace = True ) # 오름차순 정렬
df.sort_values('컬럼명', ascending = False, inplace = True ) # 내림차순 정렬

 

기본 형태는 위와 같다. sort_values() 를 사용한다. 오름차순을 의미하는 ascending을 True로 설정하면 오름차순, False로 설정하면 내림차순 정렬이 된다. inplace = True도 역시 해줘야 데이터에 반영이 된다.

 

 

원래는 데이터 원본에 0, 1, 2, 3... 순서로 숫자를 붙인 기본 인덱스 순으로 정렬되어 있다. 다시 인덱스를 기준으로 정렬하고 싶을 때에는 sort_index() 를 해주자.

df.sort_index(inplace = True)
df.head(3)

 

이 글에서는 특정 컬럼을 인덱스로 설정하는 방법, 특정 컬럼 또는 인덱스를 기준으로 정렬하는 방법을 배워보았다. 이제 실습시간!


1. 문제: 아래는 상품 판매 기록을 나타내는 데이터프레임을 생성하는 코드입니다. 이 데이터프레임을 사용하여 다음 작업을 수행하세요(** 아래 코드를 복사해서 데이터프레임을 먼저 생성하세요).

  • ProductID를 데이터프레임의 인덱스로 설정하세요.
  • Quantity를 기준으로 데이터를 내림차순으로 정렬하세요.
  • 정렬된 데이터프레임의 인덱스를 기본 인덱스로 재설정하세요.
import pandas as pd

# 데이터프레임 생성
data = {
    'ProductID': [101, 102, 103, 104],
    'SaleDate': ['2021-07-01', '2021-07-03', '2021-07-02', '2021-07-04'],
    'Quantity': [3, 2, 5, 4]
}

df = pd.DataFrame(data)

 

단계 별로 데이터를 다시 불러오면서 답을 확인하자.

 

1-1. ProductID를 데이터프레임의 인덱스로 설정하세요.

 

df.set_index('ProductID', inplace=True)

 

1-2. Quantity를 기준으로 데이터를 내림차순으로 정렬하세요.

df.sort_values('Quantity', ascending = False, inplace = True)

 

1-3. 정렬된 데이터프레임의 인덱스를 기본 인덱스로 재설정하세요.

df.reset_index(inplace = True)

 

원하는 컬럼을 인덱스로 설정하거나, 필요한 조건에 따라 정렬해 보면 좋을 듯!🔥🔥

 

 

* 본 게시글은 '메타코드'의 동의를 받아 작성된 글로, 강의 내용에 대한 모든 저작권은 Ringo 선생님에게 있습니다. 개인용도의 학습 외에 무단사용은 엄격히 금지됩니다. 위반 시 법적 조취가 취해질 수 있습니다.