행 찾기: .iloc[]와 .loc[]

pandas로 효율적인 코드 작성하기

Leonidas Souliotis

PhD Candidate

포커 데이터셋

S1 R1 S2 R2 S3 R3 S4 R4 S5 R5
1 10 Jack King 4 Ace
2 Jack King 10 Queen Ace
3 Queen Jack King 10 Ace
S1 R1 S2 R2 S3 R3 S4 R4 S5 R5
1 2 10 3 11 3 13 4 4 1 1
2 2 11 2 13 2 10 2 12 2 1
3 3 12 3 11 3 13 3 10 3 1

Sn: n번째 카드의 무늬

1(하트), 2(다이아몬드), 3(클럽), 4(스페이드)

Rn: n번째 카드의 랭크

1(Ace), 2-10, 11(Jack), 12(Queen), 13(King)

pandas로 효율적인 코드 작성하기

특정 행 선택

.loc[] — 인덱스 이름 기준 선택

# 선택할 행 범위 지정
rows = range(0, 500)
# .loc[]로 행 선택 시간 측정
loc_start_time = time.time()
data.loc[rows]    
loc_end_time = time.time()

print("Time using .loc[] : {} sec".format(
            loc_end_time - loc_start_time))
Time using .loc[]: 0.001951932 seconds

.iloc[] — 인덱스 번호 기준 선택

# 선택할 행 범위 지정
rows = range(0, 500)
# .iloc[]로 행 선택 시간 측정
iloc_start_time = time.time()
data.iloc[rows]    
iloc_end_time = time.time()

print("Time using .iloc[]: {} sec".format(
            iloc_end_time - iloc_start_time)
Time using .iloc[] : 0.0007140636 sec
Difference in speed: 173.355592654%
pandas로 효율적인 코드 작성하기

특정 열 선택

.iloc[] — 인덱스 번호 기준 선택

iloc_start_time = time.time()
data.iloc[:,:3]
iloc_end_time = time.time()
print("Time using .iloc[]: {} sec".format(
            iloc_end_time - iloc_start_time))
Time using .iloc[]: 0.00125193595886 sec

열 이름으로 선택

names_start_time = time.time()
data[['S1', 'R1', 'S2']]
names_end_time = time.time()
print("Time using selection by name: {} sec".format(
            names_end_time - names_start_time))
Time using selection by name: 0.000964879989624 sec
Difference in speed: 29.7504324188%
pandas로 효율적인 코드 작성하기

시작해 봅시다!

pandas로 효율적인 코드 작성하기

Preparing Video For Download...