오늘은 파이썬과 R에서 사용자가 지정한 순서로 정렬하는 방법을 알아보겠습니다.
두 언어에서 위와 같은 방법을 실행하는 방법은 유사합니다.
먼저 데이터를 순서형 변수로 변환 후 정렬하면 됩니다. 코드를 보겠습니다.
파이썬
import pandas as pd
df = pd.DataFrame({
'Year': [2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021],
'Country1': ["USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN"],
'Country2': ["USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR", "USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR"]
})
df
위와 같은 데이터가 있고 국가 코드를 "USA", "KOR", "JPN"의 순서로 정렬한다고 가정해봅시다.
그냥 정렬하게 되면 어떻게 될까요?
df.sort_values(by=['Year', 'Country1', 'Country2'])
바로 이렇게 단순히 알파벳 순서대로 정렬되게 됩니다.
그러면 이제 "USA", "KOR", "JPN"의 순서대로 정렬해보겠습니다.
import pandas as pd
# 국가 코드를 순서형 변수로 변환
df['Country1'] = pd.Categorical(df['Country1'], categories=['USA', 'KOR', 'JPN'], ordered=True)
df['Country2'] = pd.Categorical(df['Country2'], categories=['USA', 'KOR', 'JPN'], ordered=True)
df.sort_values(by=['Year', 'Country1', 'Country2'])
pandas의 Categorical 함수는 범주형 변수를 만드는 함수입니다.
여기에 ordered=True 파라미터를 넣게 되면 categories의 변수 순서대로 순서형 변수를 만들 수 있습니다.
이후에 sort_values 함수를 통해 정렬하면 제대로 정렬되는 것을 확인할 수 있습니다.
R 프로그래밍
library(dplyr)
df <- data.frame(
Year = c(2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021),
Country1 = c("USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN"),
Country2 = c("USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR", "USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR")
)
# 순서형 변수로 변환
df$Country1 <- factor(df$Country1, levels = c("USA", "KOR", "JPN"))
df$Country2 <- factor(df$Country2, levels = c("USA", "KOR", "JPN"))
sorted_df <- df %>%
arrange(Year, Country1, Country2)
print(sorted_df)
R 프로그래밍 언어의 경우에도 마찬가지로 factor 함수를 통해 범주형 변수로 변환 할 수 있고, levels 파라미터를 통해 각 변수에 순서를 주어 순서형 변수로 만들 수 있습니다.
이후에 dplyr의 arrange 함수에 정렬하고자 하는 key값을 넣어 데이터를 정렬할 수 있습니다.
오늘은 사용자가 지정한 순서로 정렬하는 방법에 대해 알아보았습니다.
'정보 > 프로그래밍' 카테고리의 다른 글
프로그램 실행 속도를 개선하는 방법 (중복 연산 제거, 벡터 연산, 병렬 처리) (1) | 2024.04.06 |
---|---|
[Pandas] 데이터프레임 정렬, 선택, 삭제 문법 및 사용법 정리 (0) | 2022.07.10 |
[Pandas] 데이터프레임 탐색 문법 및 사용법 정리 (0) | 2022.07.05 |
[Pandas] 데이터프레임 생성 문법 및 사용법 정리 (0) | 2022.07.01 |
[NumPy] 주요 기능 문법 및 사용법 정리 (0) | 2022.06.29 |