코드 프레소 [파이썬으로 배우는 데이터 분석 : Pandas] 강의 내용 정리
# 인덱싱 & 슬라이싱..?
DataFrame에서 인덱싱은 column명을 이용하여 열 데이터 조회가 가능하다. indexing을 위한 함수는 아래와 같다.
- loc[] : 인덱스 명 기반 데이터 조회
- iloc[]: 인덱스 번호 기반 데이터 조회
DataFrame의 데이터에 접근할 때 슬라이싱 기법을 이용하면 여러 데이터를 쉽게 조회 가능하다.
슬라이싱 기법은 다음의 특징을 가지고 있다.
- 기본적으로 행 데이터를 기준으로 조회한다.
- 슬라이싱 범위는 start, end, step으로 명시한다.
- start: 조회의 시작 위치 (optional)
- end: 조회의 종료 위치, end-1까지 조회 (optional)
- step: 조회 간격 (optional)
- 슬라이싱 범위 지정시 index value, index position 모두 활용 가능하다
인덱싱과 슬라이싱은 이전 Numpy에서도 다룬 내용이기에 아래 링크를 통해 프로퍼티에 정보를 참고하면 DataFrame에서의 인덱싱과 슬라이싱의 예시코드를 이해하는것에 큰 어려움이 없을 것이다.
2024.09.12 - [공부한 것들../Numpy] - Numpy 데이터 조회를 위한 인덱싱 및 슬라이싱
# 인덱싱 예시코드
# name 컬럼을 행 인덱스로 바꾸기
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)
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
# set_index를 통해 'name'컬럼의 내용으로 행 index를 변경
#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
# loc[]로 열 데이터 조회
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)
'''
loc[] 를 통해 행 데이터 조회하기
'''
print('\n#2 Access rows')
subset = df.loc[['Jessi','Emma']]
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
#loc[]로 열 데이터 조회
#2 Access rows
score grade subject
name
Jessi 100 A python
Jessi 85 B c
Emma 95 A java
# iloc[] 를 통해 행 데이터 조회
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)
'''
iloc[] 를 통해 행 데이터 조회하기
'''
print('\n#3 Access rows by index position')
subset = df.iloc[[0,4]]
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
#iloc[] 를 통해 행 데이터 조회
#3 Access rows by index position
score grade subject
name
Jessi 100 A python
Tom 97 A java
# loc[] 의 활용 : 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)
'''
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
#loc[] 의 활용 : Boolean Indexing
#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
# 슬라이싱 예시코드
# 기본 슬라이싱 기법을 통한 행 데이터 조회
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)
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
# loc[] 활용한 슬라이싱
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)
'''
loc 프로퍼티 활용한 슬라이싱 실습
'''
print('\n#4 Access Rows by loc[slicing]')
subset = sample_df.loc[:'Emma', ['subject', 'grade']]
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
#4 Access Rows by loc[slicing]
subject grade
name
Jessi python A
Emma java A
# iloc[] 활용한 슬라이싱
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)
'''
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
#5 Access Rows by iloc[slicing]
name
Jessi python
Emma java
Alex python
Jessi c
Name: subject, dtype: object
'공부한 것들.. > Pandas' 카테고리의 다른 글
Pandas 데이터 그룹화 (1) | 2024.09.14 |
---|---|
Pandas 집계함수 (0) | 2024.09.14 |
Pandas 결측치 이해 및 결측치 처리 (2) | 2024.09.14 |
Pandas 데이터 파일 읽기 (1) | 2024.09.14 |
Pandas DataFrame 데이터 추가 및 삭제 (0) | 2024.09.13 |