df.set_index('column')
index value: 출력했을 때 보이는 index값
index position: 출력했을 때 보이지 않지만, 항상 존재하는 index값(0,1,...)
행 데이터 조회를 위한 loc 와 iloc
Boolean Indexing 의 활용
<실습코드>
import pandas as pd
# 실습 데이터 생성
d = {'name': ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'score': [100, 95, 80, 85, 97],
'grade': ['A', 'A', 'B', 'B', 'A'],
'subject':['python', 'java', 'python', 'c', 'java']}
df = pd.DataFrame(data=d)
print('Sample Data')
print(df)
'''
name 컬럼을 행 인덱스로 바꾸기
'''
print('\n#1 Set Index')
df.set_index('name', inplace=True)
print(df)
'''
loc[] 를 통해 행 데이터 조회하기
'''
print('\n#2 Access rows')
subset = df.loc[['Jessi','Emma']]
print(subset)
'''
iloc[] 를 통해 행 데이터 조회하기
'''
print('\n#3 Access rows by index position')
subset = df.iloc[[0,4]]
print(subset)
'''
loc[] 의 활용 : Boolean Indexing
'''
print('\n#4 Access rows by boolean indexing')
subset = df.loc[df['score']>=95]
print(subset)
'''
loc[] 의 활용 : Boolean Indexing
'''
print('\n#5 Access rows by boolean indexing')
subset = df.loc[df['subject']=='python']
print(subset)
<실행결과>
Sample Data
name score grade subject
0 Jessi 100 A python
1 Emma 95 A java
2 Alex 80 B python
3 Jessi 85 B c
4 Tom 97 A java
#1 Set Index
score grade subject
name
Jessi 100 A python
Emma 95 A java
Alex 80 B python
Jessi 85 B c
Tom 97 A java
#2 Access rows
score grade subject
name
Jessi 100 A python
Jessi 85 B c
Emma 95 A java
#3 Access rows by index position
score grade subject
name
Jessi 100 A python
Tom 97 A java
#4 Access rows by boolean indexing
score grade subject
name
Jessi 100 A python
Emma 95 A java
Tom 97 A java
#5 Access rows by boolean indexing
score grade subject
name
Jessi 100 A python
Alex 80 B python
Summary
- DataFrame의 열 데이터 조회
칼럼명을 이용하여 인덱싱 기법을 활용
sample_df[['name','subject','grade']]- DataFrame의 행 데이터 조회
loc[]: 인덱스 명(값)을 기준으로 행 데이터 조회(boolean indexing 활용)
iloc[]: 인덱스 번호를 기준으로 행 데이터 조회
DataFrame [start : end : step]
df.loc [start:stop, (start:stop)]
df.iloc [start:stop, (start:stop)]
<실습코드>
import pandas as pd
# 실습 데이터 생성
d = {'name': ['Jessi', 'Emma', 'Alex', 'Jessi', 'Tom'],
'score': [100, 95, 80, 85, 97],
'grade': ['A', 'A', 'B', 'B', 'A'],
'subject':['python', 'java', 'python', 'c', 'java']}
sample_df = pd.DataFrame(data=d)
sample_df.set_index('name', inplace=True)
print('Sample Data')
print(sample_df)
'''
기본 슬라이싱 기법을 통한 행 데이터 조회#1
'''
print('\n#1 Access Rows by slicing')
subset = sample_df[1:4]
print(subset)
'''
기본 슬라이싱 기법을 통한 행 데이터 조회#2
'''
print('\n#2 Access Rows by slicing')
subset = sample_df[::2]
print(subset)
'''
기본 슬라이싱 기법을 통한 행 데이터 조회#3
'''
print('\n#3 Access Rows by slicing')
subset = sample_df[:'Alex']
print(subset)
'''
loc 프로퍼티 활용한 슬라이싱 실습
'''
print('\n#4 Access Rows by loc[slicing]')
subset = sample_df.loc[:'Emma', ['subject','grade']]
print(subset)
'''
iloc 프로퍼티 활용한 슬라이싱 실습
'''
print('\n#5 Access Rows by iloc[slicing]')
subset = sample_df.iloc[:4,-1]
print(subset)
<실행결과>
Sample Data
score grade subject
name
Jessi 100 A python
Emma 95 A java
Alex 80 B python
Jessi 85 B c
Tom 97 A java
#1 Access Rows by slicing
score grade subject
name
Emma 95 A java
Alex 80 B python
Jessi 85 B c
#2 Access Rows by slicing
score grade subject
name
Jessi 100 A python
Alex 80 B python
Tom 97 A java
#3 Access Rows by slicing
score grade subject
name
Jessi 100 A python
Emma 95 A java
Alex 80 B python
#4 Access Rows by loc[slicing]
subject grade
name
Jessi python A
Emma java A
#5 Access Rows by iloc[slicing]
name
Jessi python
Emma java
Alex python
Jessi c
Name: subject, dtype: object