Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-02 06:06
관리 메뉴

Hey Tech

[파이썬] 데이터프레임 칼럼 이름 바꾸기(feat. pandas) 본문

AI & 빅데이터/데이터 분석 with Python

[파이썬] 데이터프레임 칼럼 이름 바꾸기(feat. pandas)

Tony Park 2021. 3. 5. 14:34
728x90
반응형

안녕하세요, 오늘은 파이썬의 pandas 라이브러리를 활용하여 데이터프레임의 칼럼 이름을 변경하는 방법에 대해 공유해 드립니다.

그럼 바로 시작하죠!

목차

1.  데이터프레임 셋업
2.  칼럼 이름 변경하기
    2.1.  columns 함수: 새로운 칼럼 이름으로 덮어쓰기
    2.2. rename 함수: 특정 칼럼만 지정하여 이름 변경하기
    2.3. lambda 함수:  기존 칼럼 이름에 새로운 패턴 추가하기

1.  데이터프레임 셋업

판다스 모듈 설치하기

pip install pandas

판다스 라이브러리를 설치하지 않으셨다면 설치해 주세요.

판다스 모듈 불러오기

import pandas as pd

판다스 라이브러리를 불러옵니다.

데이터프레임 생성

df = pd.DataFrame({"식별번호": [1, 2, 3, 4, 5], "이름": ["Tony", "Smith", "Jason", "Jhon", "Michel"],
                  "부서": ["Data Engineering", "UI/UX", "Marketing", "HR", "iOS development"]})
print(df)

간단하게 데이터프레임을 임의로 생성하고 출력해 보겠습니다(그림 1 참고).

 

그림 1 . 생성한 데이터프레임

2.  칼럼 이름 변경하기

현재 데이터프레임 칼럼 이름은 "식별번호"와 "이름"으로 되어 있습니다.

칼럼들의 이름을 각각 "ID"와 "NAME"으로 변경하고 싶다면 어떻게 해야 될까요?

칼럼 이름을 변경하는 방법은 크게 3가지가 있습니다.

2.1.  columns 함수: 새로운 칼럼 이름으로 덮어쓰기

[데이터프레임 이름].columns = ["1st new column name", "2nd new column name", ... ]

첫 번째 방법으로는 columns 함수를 활용하여 기존 칼럼의 나열 순서대로 새로운 칼럼 이름을 입력해 주면 됩니다

# 기존 칼럼: "식별번호", "이름", "department"
df.columns = ["ID", "NAME", "department"]
print(df)

앞서 생성한 데이터프레임을 기반으로 columns 함수를 사용해 보겠습니다(그림 2 참고).

 

그림 2.  칼럼 이름 변경 후

주의사항

columns 함수 사용 시에는 주의사항이 있습니다.

변경하려는 칼럼 이름 수 와 기존 데이터프레임 내 칼럼 수가 같아야 합니다.

 

예시를 들어보겠습니다.

df.columns = ["ID", "NAME"]
print(df)

즉, 기존 데이터프레임에는 칼럼 개수가 총 3개였습니다.

하지만, 위와 같이 2개의 칼럼 이름만 바꾸고 싶다고 변경하려는 칼럼 이름을 2개만 작성한다면,

아래 그림 3 과 같은 Length mismatch 에러 메시지를 마주하게 됩니다.

 

그림 3. columns 함수에서 변경하고자 하는 칼럼 개수가 불일치한 경우 에러 메시지

2.2.  rename 함수: 특정 칼럼만 지정하여 이름 변경하기

두 번째 방법으로서 rename 함수를 활용하여 특정 칼럼만 지정하여 이름을 변경할 수 있습니다.

중괄호 내 콜론을 중심으로 좌측에는 데이터프레임 내 이름을 변경할 기존 칼럼 이름을 입력하고

우측에는 변경될 칼럼의 새로운 이름을 입력해 주세요.

[데이터프레임 이름].rename(columns = {"1st original name" : "1st new name", 
		"2nd original name" : "2nd new name", ... }, inplace = True)

 

inplace 변수의 의미는?

여기서 inplace는 해당 코드 실행 후에 기존 데이터프레임의 칼럼 이름을 곧바로 변경할지를 결정합니다.

즉, True 값일 경우에만 곧바로 기존 데이터프레임의 칼럼 이름이 수정됩니다.

1)  inplace = False

df.rename(columns = {"식별번호": "ID", "이름": "NAME"}, inplace = False)
print(df)

실제로 inplace를 False 로 설정하고 데이터프레임을 출력하면 아래 그림 4 와 같이 데이터프레임 내 칼럼 이름이 변경되지 않은 것을 확인하실 수 있습니다.

 

그림 4.  칼럼 이름이 변경되지 않은 데이터프레임(inplace = False)

2)  inplace = True

df.rename(columns = {"식별번호": "ID", "이름": "NAME"}, inplace = True)
print(df)

이번에는 inplace 값을 True 로 설정해 보겠습니다.

아래 그림 5 와 같이 기존 데이터프레임 내 칼럼 이름이 곧바로 변경된 것을 확인하실 수 있습니다.

 

그림 5.  칼럼 이름이 변경된 데이터프레임(inplace = True)

2.3.  lambda 함수:  기존 칼럼 이름에 새로운 패턴 추가하기

만약 모든 칼럼 이름에 똑같은 텍스트의 팀 이름을 추가하고 싶을 때는 어떻게 할까요?

변경해야 하는 칼럼 수가 적다면 앞서 살펴본 방식처럼 columns 또는 rename 함수를 그대로 활용해도 무방합니다.

 

하지만 만약 우리가 변경해야 되는 칼럼의 개수가 천 개 이상이라고 한다면 칼럼 이름을 일일이 입력하는 것은 물리적 자원 낭비가 큽니다.

이처럼 일정 패턴의 텍스트를 칼럼 이름에 추가하고 싶을 때 lambda 함수를 사용하면 효과적입니다. 

lambda 함수에 대한 자세한 설명은 아래 포스팅을 참고해 주세요.

heytech.tistory.com/17

 

[파이썬] lambda 함수는 언제, 어떻게 쓸까?

안녕하세요, 오늘은 파이썬 람다(lambda) 함수에 대해 알아보겠습니다. 바로 시작하죠! 1. Lambda 함수는 언제 사용하면 좋을까? 파이썬에서 특정 기능을 구현하고 반복적으로 직관적으로 사용하기

heytech.tistory.com

 

예시 데이터프레임 내 모든 칼럼 이름 앞에 팀(team)을 구분하기 위해 "Team1_" 이라는 패턴을 추가해 보겠습니다.

df.rename(columns = lambda x: "Team1_" + x, inplace = True)
print(df)

위 코드와 같이 기존 칼럼 이름들  앞서 "Team1_" 패턴을 추가하였고 출력 결과는 아래 그림 6 과 같습니다.

 

그림 6.  새로운 패턴이 추가된 칼럼 이름

참고할만한 포스팅

[파이썬] 칼럼 이름별로 데이터프레임 출력하기(loc, ioc 함수)

포스팅 내용에 오류가 있는 부분이 있을 경우 댓글을 남겨 주시면 감사드리겠습니다.

그럼 오늘도 건강한 하루 보내시길 바랍니다 :-)

고맙습니다.

728x90
반응형
Comments