본문 바로가기

programming

[Python] 파이썬 DataFrame(데이터프레임) 인덱싱, 슬라이싱

인덱싱은 필요한 칼럼이나 로우를 인덱스로 가져오는 것이다.

 

슬라이싱은 필요한 부분만 남기고 잘라내는 것이다.

 

1) .loc : 명시된 인덱스 참조

import numpy as np
import pandas as pd

family_df = pd.DataFrame({"Gender":gender_series, "Age":age_series, "Job":job_series})
        Gender   Age         Job
Flin      Male   NaN     Student
Hank      Male  30.0         DEA
Mary    Female  25.0      Doctor
Skyler  Female  38.0  Accountant 

# "Hank"라고 명시적으로 인덱스 표기하여 데이터 추출하기
print(family_df.loc["Hank"])

# 결과
Gender    Male
Age         30
Job        DEA
Name: Hank, dtype: object

# 명시적인 인덱스의 범위를 지정하기 & 명시적인 칼럼의 범위 지정하기 
# 필요한 데이터만 추출하기
print(family_df.loc["Hank":"Skyler", :"Age"])

# 결과
        Gender   Age
Hank      Male  30.0
Mary    Female  25.0
Skyler  Female  38.0

 

2) .iloc : 정수 인덱스 참조

import numpy as np
import pandas as pd

family_df = pd.DataFrame({"Gender":gender_series, "Age":age_series, "Job":job_series})
        Gender   Age         Job
Flin      Male   NaN     Student
Hank      Male  30.0         DEA
Mary    Female  25.0      Doctor
Skyler  Female  38.0  Accountant 

# 일반적인 정수 인덱스를 사용하여 데이터 추출하기
print(family_df.iloc[0])

# 결과
Gender       Male
Age           NaN
Job       Student
Name: Flin, dtype: object

# 일반적인 정수 인덱스의 범위를 지정하기 & 칼럼번호도 정수로 범위 지정하기
# 필요한 데이터만 추출하기 

print(family_df.iloc[1:3, 0:2])
# 결과
      Gender   Age
Hank    Male  30.0
Mary  Female  25.0

 

3) .head(N) : 위에서부터 N개 남기고 잘라내기

import numpy as np
import pandas as pd

family_df 
        Gender   Age         Job  Tall  Weight  Number
Flin      Male   NaN     Student   178    70.0     0.0
Hank      Male  30.0         DEA   183     NaN  5490.0
Mary    Female  25.0      Doctor   165     NaN  4125.0
Skyler  Female  38.0  Accountant   170     NaN  6460.0
Walt      Male  50.0     Teacher   180     NaN  9000.0
Zessi     Male  23.0      Dealer   170     NaN  3910.0

# 위에서부터 3개만 잘라내기

print(family_df.head(3))
      Gender   Age      Job  Tall  Weight  Number
Flin    Male   NaN  Student   178    70.0     0.0
Hank    Male  30.0      DEA   183     NaN  5490.0
Mary  Female  25.0   Doctor   165     NaN  4125.0