본문 바로가기

데이터 분석 학습

16장 데이터를 추출하는 다양한 방법 (2)

반응형

16-2 df.loc[ ] 이용하기

인덱스 활용하기

df = pd.DataFrame({'var1' : [1, 2, 3], 
                   'var2' : [4, 5, 6]})
df

# 인덱스 문자열 지정하기
df = pd.DataFrame({'var1' : [1, 2, 3], 
                   'var2' : [4, 5, 6]},
                   index = ['kim', 'lee', 'park'])
df

인덱스 문자열을 지정해 행 추출하기

# kim 행 추출
df.loc['kim']

"""
var1    1
var2    4
Name: kim, dtype: int64
"""

여러 행 추출하기

# kim, park 행 추출
df.loc[['kim', 'park']]

인덱스 문자열을 지정해 열 추출하기

# lee 행의 var1 열 추출
df.loc['lee', 'var1'] 

##출력: 2
# kim, lee 행의 var2 열 추출
df.loc[['kim', 'lee'], 'var2'] 

"""
kim    4
lee    5
Name: var2, dtype: int64
"""
df.loc[:, 'var1']

"""
kim     1
lee     2
park    3
Name: var1, dtype: int64
"""

인덱스 번호를 지정해 행 추출하기

# 인덱스 번호가 있는 데이터 프레임
df = df_raw.copy()
df

# 0행 추출
df.loc[0]

"""
id          1
nclass      1
math       50
english    98
science    50
Name: 0, dtype: int64
"""
# 2행 추출
df.loc[2]  

"""
id          3
nclass      1
math       45
english    86
science    78
Name: 2, dtype: int64
"""

행이 1개일 때 데이터 프레임 자료 구조 유지하기

# 시리즈로 추출
df.loc[0]

"""
id          1
nclass      1
math       50
english    98
science    50
Name: 0, dtype: int64
"""
# 데이터 프레임으로 추출
df.loc[[0]]

여러 행 추출하기

# 0, 3, 5행 추출
df.loc[[0, 3, 5]]

연속된 행 추출하기

# 0~3행 추출
df.loc[0:3]

# 7~9행 추출
df.loc[7:9]

# 0~2행 추출
df.loc[0:2]

# 첫 번째 행 ~ 2행 추출
df.loc[:2]

인덱스 문자열만 있으면 인덱스 번호로 행을 추출할 수 없음

인덱스 번호로 열을 추출할 수 없음

조건을 충족하는 행 추출하기

# nclass가 1이면 추출
df.loc[df['nclass'] == 1]

# 수학 점수가 60점 이상이면 추출
df.loc[df['math'] >= 60]

조건을 충족하는 행에서 열 추출하기

# nclass가 1인 행의 math, english 열 추출
df.loc[df['nclass'] == 1, ['math', 'english']]

# 0~3행의 math 열 추출
df.loc[0:3, 'math'] 

"""
0    50
1    60
2    45
3    30
Name: math, dtype: int64
"""

조건을 충족하는 행 추출 방법 비교 (출력 결과 같음)

# 수학 점수가 50을 초과하는 행 추출하기
# df.query('math > 50')    # df.query()
# df[df['math'] > 50]      # df[]
# df.loc[df['math'] > 50]  # df.loc[]

 

 

 

 

 

※ 해당 내용은 <Do it! 파이썬 데이터 분석>의 내용을 토대로 학습하며 정리한 내용입니다.

반응형