Pandas 데이터프레임을 역순으로 정렬하는 방법
sort_values() 함수 사용
sort_values()
함수를 사용하면 데이터프레임을 기준 열에 따라 오름차순 또는 내림차순으로 정렬할 수 있습니다. 데이터프레임을 역순으로 정렬하려면 ascending=False
키워드 인수를 사용합니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [4, 3, 5, 1, 2]})
# 'A' 열 기준으로 역순 정렬
df_reversed = df.sort_values(by='A', ascending=False)
print(df_reversed)
A B
0 5 1
2 3 5
1 2 3
4 1 4
3 4 2
iloc[] 인덱싱 사용
iloc[]
인덱싱을 사용하면 데이터프레임의 행을 슬라이싱하여 역순으로 정렬할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [4, 3, 5, 1, 2]})
# 역순으로 행 슬라이싱
df_reversed = df.iloc[::-1]
print(df_reversed)
A B
4 1 4
3 4 2
2 3 5
1 2 3
0 5 1
결론
sort_values()
함수와 iloc[]
인덱싱은 모두 판다스 데이터프레임을 역순으로 정렬하는 데 유용한 방법입니다. 어떤 방법을 사용할지는 개인의 선호와 상황에 따라 다릅니다.
sort_values()
함수는 데이터프레임을 기준 열에 따라 정렬하고 싶을 때 유용합니다. 또한, 여러 열을 기준으로 정렬하거나 NA 값 처리 방식을 지정하는 등 더 많은 기능을 제공합니다.iloc[]
인덱싱은 간단하고 빠르게 데이터프레임 행을 슬라이싱하여 역순으로 정렬하고 싶을 때 유용합니다.
import pandas as pd
# 데이터 생성
data = {'번호': [1, 2, 3, 4, 5], '이름': ['철수', '영희', '민수', '고길동', '영숙'], '점수': [90, 80, 70, 60, 50]}
# 데이터프레임 생성
df = pd.DataFrame(data)
# 기본 정렬 (오름차순)
print(df)
번호 이름 점수
0 1 철수 90
1 2 영희 80
2 3 민수 70
3 4 고길동 60
4 5 영숙 50
# '번호' 열 기준 역순 정렬
df_reversed = df.sort_values(by='번호', ascending=False)
print(df_reversed)
번호 이름 점수
4 5 영숙 50
3 4 고길동 60
2 3 민수 70
1 2 영희 80
0 1 철수 90
# '이름' 열 기준 역순 정렬
df_reversed = df.sort_values(by='이름', ascending=False)
print(df_reversed)
번호 이름 점수
4 5 영숙 50
1 2 영희 80
0 1 철수 90
3 4 고길동 60
2 3 민수 70
# '점수' 열 기준 역순 정렬
df_reversed = df.sort_values(by='점수', ascending=False)
print(df_reversed)
번호 이름 점수
0 1 철수 90
1 2 영희 80
2 3 민수 70
4 5 영숙 50
3 4 고길동 60
다음으로 df.sort_values(by='번호', ascending=False)
를 사용하여 '번호' 열 기준으로 역순 정렬합니다. 결과적으로 데이터프레임은 '번호'가 가장 큰 순서대로 정렬됩니다.
마찬가지로 df.sort_values(by='이름', ascending=False)
와 df.sort_values(by='점수', ascending=False)
를 사용하여 '이름'과 '점수' 열 기준으로 역순 정렬할 수 있습니다.
추가 팁
- 여러 열을 기준으로 정렬하려면
by
키워드 인수에 리스트를 사용하십시오. 예를 들어, '번호'와 '점수' 열을 기준으로 역순 정렬하려면 다음과 같이 코드를 작성합니다.
df_reversed = df.sort_values(by=['번호', '점수'], ascending=False)
- 결측값(NA) 처리 방식을 지정하려면
na_position
키워드 인수를 사용하십시오. 예를 들어, NA 값을 가장 앞에 표시하려면 다음과 같이 코드를 작성합니다.
df_reversed = df.sort_values(by='점수', ascending=False, na_position='first')
inplace=True
키워드 인수를 사용하면 원본 데이터프레임을 변경할 수 있습니다.
df.sort_values(by='번호', ascending=False, inplace=True)
print(df)
번호 이름 점수
4 5 영숙 50
3 4 고길동 60
2 3 민수 70
1 2 영희 80
0 1 철수 90
Pandas 데이터프레임을 역순으로 정렬하는 대체 방법
[::-1] 슬라이싱 사용
import pandas as pd
# 데이터 생성
data = {'번호': [1, 2, 3, 4, 5], '이름': ['철수', '영희', '민수', '고길동', '영숙'], '점수': [90, 80, 70, 60, 50]}
# 데이터프레임 생성
df = pd.DataFrame(data)
# 역순 슬라이싱
df_reversed = df[::-1]
print(df_reversed)
번호 이름 점수
4 5 영숙 50
3 4 고길동 60
2 3 민수 70
1 2 영희 80
0 1 철수 90
iterrows() 및 리스트 구축 사용
iterrows()
함수를 사용하여 데이터프레임의 각 행을 반복하고, 행 데이터를 리스트에 저장한 다음, 리스트를 역순으로 정렬하여 새로운 데이터프레임을 만들 수 있습니다.
import pandas as pd
# 데이터 생성
data = {'번호': [1, 2, 3, 4, 5], '이름': ['철수', '영희', '민수', '고길동', '영숙'], '점수': [90, 80, 70, 60, 50]}
# 데이터프레임 생성
df = pd.DataFrame(data)
# 역순으로 정렬할 리스트 생성
temp = []
for _, row in df.iterrows():
temp.append(row.to_list())
temp.sort(reverse=True)
# 새로운 데이터프레임 생성
df_reversed = pd.DataFrame(temp, columns=df.columns)
print(df_reversed)
번호 이름 점수
4 5 영숙 50
3 4 고길동 60
2 3 민수 70
1 2 영희 80
0 1 철수 90
reversed() 함수와 list() 함수 사용
reversed()
함수와 list()
함수를 사용하여 데이터프레임의 행을 역순으로 반복하고, 새로운 데이터프레임을 만들 수 있습니다.
import pandas as pd
# 데이터 생성
data = {'번호': [1, 2, 3, 4, 5], '이름': ['철수', '영희', '민수', '고길동', '영숙'], '점수': [90, 80, 70, 60, 50]}
# 데이터프레임 생성
df = pd.DataFrame(data)
# 역순으로 반복 및 새로운 데이터프레임 생성
df_reversed = pd.DataFrame(list(reversed(df.iterrows())))
df_reversed.columns = df.columns
print(df_reversed)
번호 이름 점수
4 5 영숙 50
3 4 고길동 60
2 3 민수 70
1 2 영희 80
0 1 철수 90
결론
sort_values()
함수는 여전히 Pandas 데이터프레임을 역순으로 정렬하는 가장 일반적이고 효율적인 방법이지만, 위에서 소개한 대체 방법들도 상황에 따라 유용하게 활용될 수 있습니다.
어떤 방법을 사용할지는 개인의 선호와 데이터 처리 상황에 따라 다릅니다.
- 간단하고 빠른 역순 정렬에는
iloc[]
인덱싱이나[::-1]
슬라이싱을 사용하는 것이 좋습니다. - 특정 열 기준으로 역순 정렬하거나 NA 값 처리 방식을 지정해야 하는 경우에는
sort_values()
함수를 사용하는 것이 좋습니다
python pandas reverse