파이썬의 판다스(Pandas) 패키지는 데이터 분석에 널리 사용되는 강력한 도구입니다. 이 패키지를 이용하면 테이블 데이터를 다루기 매우 편리합니다. 데이터프레임에 새로운 열을 추가하는 일은 데이터 분석에서 자주 하는 꼭 필요한 작업입니다.
이 포스팅에서는 파이썬에서 데이터프레임에 열을 추가하는 다양한 방법과 이를 사용할 때 알아두면 좋은 팁을 알아보았습니다.
데이터프레임 열 추가 방법
직접 할당
데이터프레임에 열을 추가하는 작업은 여러 가지 방법으로 가능합니다. 가장 일반적인 방법은 연산자를 사용하여 데이터를 새로운 열에 직접 할당하는 방식입니다. 이 방식은 쉽게 이해할 수 있으며 특정 열에 값을 추가하거나 없는 경우 새로 만들 수 있습니다. 아래 코드는 D라는 열(칼럼)을 새로 만들고, 모든 값을 1로 채웁니다.
import pandas as pd # 샘플 데이터프레임 생성 df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6] }) # 1. 할당 연산자를 통한 열 추가 df['D'] = 1 df['C'] = [7, 8, 9]
insert 함수
다른 방법은 insert 함수 사용입니다. 이 함수는 원하는 위치에 열을 삽입할 수 있고, 기존 열의 인덱스를 방해하지 않고 새로운 열을 추가하는 기능을 제공합니다. insert 함수는 세 가지 인자를 받는데, 첫 번째는 삽입할 위치의 인덱스, 두 번째는 열의 이름, 세 번째는 데이터입니다. 이 방법은 특정 위치에 열을 추가해야 할 때 유용합니다.
# 2. insert() 메소드를 통한 특정 위치에 열 삽입 df.insert(1, 'D', [10, 11, 12])
assign 함수
또한 assign 함수를 사용하여 새로운 열을 추가할 수 있습니다. assign 함수는 기존 데이터프레임을 변경하지 않고, 새로운 열을 추가한 데이터프레임을 반환합니다. 이 방식은 기존 데이터프레임을 변경하지 않고, 열을 추가하려고 할 때 특히 유용합니다. 또한 체인 메소드를 이용해 데이터 편집을 더 직관적이고, 편리하게 할 수 있습니다.
# 3. assign() 메소드를 통한 새로운 데이터프레임 반환 df_with_new_col = df.assign(E=[13, 14, 15])
열 추가 시 주의사항
파이썬 판다스의 데이터프레임에 열을 추가할 때에는 몇 가지 주의해야 할 점이 있습니다.
먼저, 데이터프레임의 기존 행 수와 동일한 길이의 새로운 열 데이터를 제공해야 합니다. 만약 제공된 데이터 길이가 일치하지 않으면 ValueError가 발생합니다. 열 추가 시, None이나 NaN 값을 잠재적으로 포함하게 되는 경우도 고려해야 합니다.
또한 새로운 열이 데이터프레임의 기존 열 이름과 충돌하지 않아야 합니다. 동일한 이름의 열이 이미 존재할 경우, 의도치 않게 데이터를 덮어쓸 수 있습니다. 열의 이름은 문자열의 형태로 지정되며, 고유한 이름을 부여해야 합니다.
활용 팁
파이썬 데이터프레임에 열을 추가할 때, 기존 데이터를 이용해 새로운 데이터를 생성하거나 계산된 데이터를 추가하는 경우가 많습니다. 이를 더욱 효율적으로 처리하기 위한 몇 가지 팁을 소개합니다.
첫 번째 팁은 벡터 연산을 최대한 활용하는 것입니다. 판다스는 벡터 연산을 효율적으로 처리하는 여러 기능을 제공합니다. 예를 들어 두 개의 열을 합산하여 새로운 열을 생성할 경우, apply 함수로 루프를 돌릴 수 있습니다. 하지만 이 방식보다 단순한 산술 연산을 통해 벡터 연산을 수행하면 훨씬 빠르고 코드가 깔끔합니다.
두 번째 팁은 조건에 따른 열 생성을 위해 numpy.where 또는 판다스 loc를 활용하는 것입니다. 특정 조건에 따라 값이 다르게 설정되어야 하는 경우, 이를 사용하면 코드가 간결하며 성능도 향상됩니다. 예를 들어, 특정 열의 값이 기준보다 큰 경우, 새로운 열에 ‘성공’이라는 값을 넣고 그렇지 않으면 ‘실패’라고 입력하는 경우가 있을 수 있습니다.
마지막으로 큰 데이터셋을 처리해야 할 때는 배치로 처리하거나 데이터 일부분에만 연산을 수행하는 방법을 고려해보는 것도 좋습니다. 데이터가 많아질수록 성능이 중요합니다. 이 때 chunksize 옵션을 사용해 데이터를 일부만 불러오는 방식도 유용합니다.
이러한 팁을 활용하면 데이터프레임의 열을 추가할 때 보다 효율적으로 작업할 수 있습니다.
추가 예제
1) 조건 기준 열 추가
먼저, 데이터프레임에 특정 값이나 조건을 기준으로 새로운 열을 추가하는 방법을 살펴보겠습니다. 예를 들어, 기온 데이터가 저장된 데이터프레임에 ‘추운 날’이라는 열을 추가하고 싶다면, 기온이 특정 값 이하일 때 참(True) 값을 가지도록 할 수 있습니다.
import pandas as pd data = {'날짜': ['2023-01-01', '2023-01-02', '2023-01-03'], '온도': [5, -3, 2]} df = pd.DataFrame(data) df['추운 날'] = df['온도'] < 0 print(df)
2) 계산 결과 추가
복잡한 계산 결과를 열에 추가합니다. 예를 들어, 두 열 간의 연산결과를 새로운 열에 추가할 수 있습니다.
data2 = {'Math': [80, 90, 70], 'English': [75, 85, 78]} df2 = pd.DataFrame(data2) df2['Total'] = df2['Math'] + df2['English'] print(df2)
데이터프레임 기존 열을 응용해 새로운 열을 추가할 수도 있습니다. 여러 열에서 선택적으로 데이터를 추출하거나 조합하여 데이터를 가공할 때 유용합니다.
3) 한 번에 여러 개 추가
여러 개 열을 한 번에 추가할 경우 assign 함수를 활용할 수 있습니다.
df2.assign(math_av=df2.Math.mean() ,english_av=df2.English.mean())
데이터프레임에 열을 추가하는 작업은 데이터 분석에서 많이 수행하는 일입니다. 파이썬 판다스를 활용해서 다양한 방법으로 열을 추가할 수 있으며, 이를 통해 데이터 셋을 더 나은 방향으로 확장할 수 있습니다. 간단한 방법부터 다양한 상황에 맞춘 방법까지 익혀둔다면, 데이터 분석 작업이 더욱 효율적이고 효과적으로 이뤄질 것입니다.