DataFrame 정렬 시 주의 점

사당동씩씩이·2023년 11월 28일
post-thumbnail

pandas를 사용하던 중 정렬 코드가 각기 다르게 사용된 코드를 보았다.

결국 reset_index()가 먼저인가 sort_values()가 먼저인가의 차이이며,
사용 중 주의해야 할것 같아 예시를 만들어 본다.
물론 index를 지정하지 않았어도 결과는 같다.

import pandas as pd

data = {
    'age': [25, 30, 27],
    'city': ['Seoul', 'Busan', 'Daegu']
}

df = pd.DataFrame(data)
df.set_index('city', inplace=True)
print(df)
"""
		age
city      
Seoul   25
Busan   30
Daegu   27
"""


# 정렬 후 기존 인덱스 삭제
result_1 = df.sort_values('age', ascending=False).reset_index(drop=True)

# 기존 인덱스 삭제 후 정렬
result_2 = df.reset_index(drop=True).sort_values('age', ascending=False)

print("\n츨력결과")
print(result_1)
"""
츨력결과
   age
0   30
1   27
2   25
"""

print("\n출력결과")
print(result_2)
"""
출력결과
	age
1   30
2   27
0   25
"""

그럼 언제 주의해야하나?

loc와 iloc 사용에 있다.

많은 사람들은 index를 지정하지 않고 사용한다.
loc[0] <= index가 숫자 0인 열을 호출
iloc[0] <= iloc로 순서가 0인 열을 호출

코드로 확인해보자.

print(result_1.loc[0])
# age 30 
print(result_1.iloc[0])
# age 30 

print(result_2.loc[0])
# age 25
print(result_2.iloc[0])
# age 30 

사실 한편으론 loc, iloc의 동작원리를 이해하는것, 메서드 리턴값을 한번씩 들여보는것이 더 중요할 수도 있다.

profile
N잡러 대충 이것저것 해보며 대충 사는 중

0개의 댓글