온도 데이터를 다룰 때 섭씨(Celsius)를 화씨(Fahrenheit)로 변환해야 하는 경우가 자주 있습니다. 이 글에서는 Python의 Pandas 라이브러리를 사용해 데이터프레임에 있는 섭씨 데이터 열을 화씨로 변환하는 두 가지 방법을 소개합니다.
변환 공식은 다음과 같습니다.
화씨 = (9/5) × 섭씨 + 32
아래는 섭씨 값을 화씨로 변환한 결과 예시입니다.
Id Celsius Fahrenheit 0 1 37.5 99.5 1 2 36.0 96.8 2 3 40.0 104.0 3 4 38.5 101.3 4 5 39.0 102.2
방법 1: df.assign() 함수 활용하기
df.assign() 함수를 사용하면 기존 데이터프레임을 변경하지 않고 새로운 열을 추가할 수 있습니다. 절차는 다음과 같습니다.
'Id'와 'Celsius' 열 값을 가진 데이터프레임을 정의합니다.
df.assign()함수 안에 람다(lambda) 함수를 작성하여 섭씨 값에 (9/5)를 곱하고 32를 더한 결과를 'Fahrenheit' 열에 할당합니다.
df.assign(Fahrenheit = lambda x: (9/5)*x['Celsius']+32)
예제 코드
아래 코드를 통해 실제 동작 과정을 확인해 보겠습니다.
import pandas as pd
df = pd.DataFrame({'Id':[1,2,3,4,5],
'Celsius':[37.5,36,40,38.5,39]
})
print("DataFrame is\n",df)
df = df.assign(Fahrenheit = lambda x: (9/5)*x['Celsius']+32)
print(df)실행 결과
DataFrame is Id Celsius 0 1 37.5 1 2 36.0 2 3 40.0 3 4 38.5 4 5 39.0 Id Celsius Fahrenheit 0 1 37.5 99.5 1 2 36.0 96.8 2 3 40.0 104.0 3 4 38.5 101.3 4 5 39.0 102.2
방법 2: df.apply() 함수 활용하기
df.apply() 함수를 사용하면 각 행(row)에 대해 변환 로직을 직접 적용할 수 있습니다. 절차는 다음과 같습니다.
'Id'와 'Celsius' 열 값을 가진 데이터프레임을 정의합니다.
df.apply()함수 안에 람다 함수를 작성하고,axis=1옵션을 지정해 각 행 단위로 섭씨 값에 (9/5)를 곱한 뒤 32를 더하여 'Fahrenheit' 열에 저장합니다.
df['Fahrenheit'] = df.apply(lambda x: (9/5)*x['Celsius']+32,axis=1)
예제 코드
아래 코드를 통해 실제 동작 과정을 확인해 보겠습니다.
import pandas as pd
df = pd.DataFrame({'Id':[1,2,3,4,5],
'Celsius':[37.5,36,40,38.5,39]
})
print("DataFrame is\n",df)
df['Fahrenheit'] = df.apply(lambda x: (9/5)*x['Celsius']+32,axis=1)
print(df)실행 결과
DataFrame is Id Celsius 0 1 37.5 1 2 36.0 2 3 40.0 3 4 38.5 4 5 39.0 Id Celsius Fahrenheit 0 1 37.5 99.5 1 2 36.0 96.8 2 3 40.0 104.0 3 4 38.5 101.3 4 5 39.0 102.2
두 방법의 차이점
df.assign()은 원본 데이터프레임을 수정하지 않고 새로운 데이터프레임을 반환하는 반면, df.apply() 방식은 기존 데이터프레임에 직접 새로운 열을 추가한다는 차이가 있습니다. 상황에 따라 원본 데이터를 유지해야 하는지 여부를 고려해 적절한 방법을 선택하면 됩니다.