판다스(Pandas) 데이터프레임에서 열 이름을 변경하는 것은 데이터 분석 작업에서 아주 흔한 일입니다. 이 글에서는 판다스 열 이름을 변경하는 네 가지 주요 방법을 자세히 살펴보겠습니다.
판다스는 파이썬에서 데이터 분석을 위해 널리 사용되는 강력한 라이브러리입니다. 데이터를 분석하려면 CSV, TSV 파일, 관계형 데이터베이스 등 다양한 형식으로 된 자료를 처리해야 하는 경우가 많습니다. 따라서 데이터를 분석하기 전에 결측값을 처리하고 데이터를 원하는 형식으로 정리하는 작업이 필수적입니다.
판다스를 사용하면 다음과 같은 다양한 작업을 할 수 있습니다:
- 여러 데이터 소스에서 데이터를 수집
- 데이터 세트를 탐색하고 누락된 값을 효율적으로 처리
- 데이터 세트를 분석하여 유의미한 통찰력 도출
대부분의 데이터 분석 프로젝트에서는 파이썬 사전과 같은 데이터 구조를 사용하여 데이터프레임을 만들거나, CSV 파일과 같은 외부 소스에서 데이터를 읽어 데이터프레임으로 변환합니다.
데이터프레임은 판다스의 핵심 데이터 구조입니다. 데이터프레임은 행에는 레코드를, 열에는 다양한 필드 또는 속성을 담고 있는 표 형태의 구조입니다.
경우에 따라 데이터프레임의 열 이름이 너무 일반적이거나 명확하지 않을 수 있습니다. 이럴 때는 열 이름을 더 설명적이고 가독성이 높게 변경해야 할 필요가 있습니다. 여기서는 열 이름을 바꾸는 네 가지 유용한 방법을 소개합니다. 이제 시작해 볼까요?
판다스 데이터프레임 생성
본 튜토리얼은 판다스가 설치된 Jupyter 노트북 환경에서 따라 할 수 있으며, Google Colab에서도 동일하게 진행할 수 있습니다.
먼저 예시로 사용할 판다스 데이터프레임을 생성합니다.
다음은 예시로 사용할 사전 books_dict입니다.
books_dict = {
"one": [
"Atomic Habits",
"His Dark Materials",
"The Midnight Library",
"The Broken Earth",
"Anxious People",
],
"two": [
"James Clear",
"Philip Pullman",
"Matt Haig",
"N.K.Jemisin",
"Fredrik Backman",
],
"three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
"four": [4, 5, 3, 5, 4],
}
이제 판다스를 불러온 후, books_dict 사전으로부터 df 데이터프레임을 생성합니다.
import pandas as pd
참고: 열 이름 변경 방법을 알아보기 전에 데이터프레임의 초기 상태로 되돌아가기 위해 다음 코드를 반복해서 실행할 것입니다.
df = pd.DataFrame(books_dict)
df.head() 함수를 사용하여 데이터프레임 df의 처음 몇 행을 확인할 수 있습니다. 기본적으로 처음 5개 행을 반환하지만, 여기서는 df에 총 5개의 행만 있으므로 전체 데이터프레임을 볼 수 있습니다.
df.head()
현재 열 이름이 사전의 키로 되어 있음을 알 수 있습니다. 이러한 이름은 직관적이지 않으므로 변경해 보겠습니다. 👩🏫
판다스에서 열 이름을 바꾸는 다양한 방법
이제 판다스에서 열 이름을 바꾸는 다양한 방법을 살펴보겠습니다.
- 데이터프레임의
columns속성을 새 열 이름 목록으로 설정 - 데이터프레임의
rename()메서드 사용 str.replace()를 사용하여 하나 이상의 열 이름 변경- 데이터프레임의
set_axis()메서드 사용
columns 속성 설정
모든 데이터프레임에는 columns 속성이 있으며, 이 속성은 열 이름의 목록을 포함합니다.
df.columns # Index(['one', 'two', 'three', 'four'], dtype="object")
열 이름을 변경하여 각 필드가 무엇을 나타내는지 명확하게 만든 다음 df.head()를 호출하여 결과를 확인합니다.
df.columns = ['Title','Author','Genre','Rating'] df.head()

rename() 메서드 사용
판다스에서 열 이름을 변경하려면 rename() 메서드를 다음 구문과 함께 사용할 수 있습니다.
df.rename(columns={mapping})
여기서 mapping은 다음과 같은 형태의 사전입니다.
{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}
다시 books_dict 사전에서 df 데이터프레임을 만들어 보겠습니다.
df = pd.DataFrame(books_dict)
위의 구문과 함께 rename() 메서드를 사용하면 열 이름이 변경된 데이터프레임의 복사본인 df_1을 얻습니다.
df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()
결과적으로 df_1의 열 이름이 변경되었습니다.

하지만 원래 데이터프레임 df의 열 이름은 변경되지 않았습니다.
df.head()

이 방법은 이전 열 이름과 새 열 이름 사이의 매핑을 제공하므로, 단일 열은 물론 여러 열의 이름을 변경할 때도 사용할 수 있습니다.
제자리에서 열 이름 바꾸기
새로운 복사본을 만들지 않고 기존 데이터프레임을 수정하려면 어떻게 해야 할까요?
이 경우에는 메서드 호출에서 inplace를 True로 설정하면 됩니다.
df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()
그러면 원래 데이터프레임 df의 열 이름이 변경됩니다.

지금까지 다음과 같은 내용을 살펴보았습니다.
- 이전 열 이름을 새 열 이름에 매핑하는 사전을 제공하여 열 이름 바꾸기
- 새 데이터프레임을 생성하지 않고, 기존 데이터프레임에서 바로 열 이름 변경하기
rename() 메서드는 이 외에도 다른 방식으로 사용할 수 있습니다.
열 이름 변경에 대한 또 다른 접근 방식
이번에는 열 이름을 대문자로 변경해 보겠습니다.
df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING'] df.head()
이제 데이터프레임 df는 다음과 같습니다.

이러한 각 열 이름을 타이틀 케이스(각 단어의 첫 글자를 대문자로 표기하는 방식)로 변경하려고 한다고 가정해 보겠습니다. 각 열 이름에 대한 사전을 제공하는 대신 다음과 같이 객체에 대한 함수 또는 메서드 호출을 지정할 수 있습니다.
df.rename(str.title,axis="columns",inplace=True) df.head()

여기서는 axis를 'columns'로 설정하고 str.title을 사용하여 모든 열 이름을 타이틀 케이스로 변환합니다.
열 이름 문자열에 str.replace() 사용
언제나 그렇듯이 다음 코드를 실행하여 사전에서 데이터프레임을 생성합니다.
df = pd.DataFrame(books_dict)
파이썬에서는 str.replace(this, with_this) 구문과 함께 replace() 메서드를 사용하여 원하는 변경 사항이 적용된 문자열의 복사본을 얻을 수 있습니다. 예를 들면 다음과 같습니다.
>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'
columns 속성에는 열 이름이 포함된 문자열 목록이 있습니다. 따라서 다음과 같이 str.replace('old_column_name', 'new_column_name')을 호출할 수 있습니다.
df.columns = df.columns.str.replace('one','Title')
df.head()

여기서는 'one' 열의 이름만 'Title'로 변경했으므로 다른 열 이름은 변경되지 않습니다.
이제 동일한 접근 방식을 사용하여 다른 열의 이름을 변경해 보겠습니다.
df.columns = df.columns.str.replace('two','Author')
df.columns = df.columns.str.replace('three','Genre')
df.columns = df.columns.str.replace('four','Rating')
df.head()

이 방법은 열 이름 중 하나 또는 일부만 변경해야 할 때 유용합니다.
set_axis() 메서드 사용
데이터프레임의 초기 버전으로 다시 돌아가 보겠습니다.
df = pd.DataFrame(books_dict)
set_axis() 메서드를 사용하여 열 이름을 바꿀 수도 있습니다. 구문은 다음과 같습니다.
df.set_axis([list_of_column_names],axis="columns")
기본적으로 set_axis() 메서드는 데이터프레임의 복사본을 반환합니다. 하지만 데이터프레임을 제자리에서 수정하려면 copy를 False로 설정하면 됩니다.
df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False) df.head()

결론
다음은 판다스 데이터프레임에서 열 이름을 바꾸는 다양한 방법에 대한 요약입니다.
- 예시 데이터프레임
df에서df.columns속성은 열 이름 목록입니다. 열 이름을 바꾸려면 이 속성을 새로운 열 이름 목록으로 설정할 수 있습니다. rename()메서드를 사용하여 열 이름을 바꿀 수 있습니다. 구문은df.rename(columns={mapping})이며, 여기서mapping은 이전 열 이름에서 새 열 이름으로의 매핑을 나타냅니다. 모든 열 이름에 적용할 함수를 지정하여rename()메서드를 사용할 수도 있습니다.df.rename(function or method call, axis='columns').- 파이썬 문자열에서
replace()메서드를 사용하는 것과 마찬가지로df.columns.str.replace('old_column_name', 'new_column_name')를 사용하여 열 이름을 변경할 수 있습니다. - 마지막으로,
df.set_axis(list_of_col_names, axis='columns')구문과 함께set_axis메서드를 사용하여 열 이름을 바꿀 수 있습니다.
이것으로 이번 튜토리얼을 마치겠습니다! 데이터 분석을 위한 다양한 협업 노트북을 확인해 보세요.