MINERVA/Python 2023. 4. 28. 04:12
반응형

Pandas에서 데이터프레임의 열(column)의 데이터 타입을 변경하는 방법은 아래와 같습니다.

  1. astype() 메서드 사용
    • astype() 메서드는 데이터프레임 내의 모든 값을 지정한 데이터 타입으로 변환합니다.
    • 예시: df['column_name'] = df['column_name'].astype('int')
  2. to_numeric() 메서드 사용
    • to_numeric() 메서드는 데이터프레임 열의 값을 수치형으로 변환합니다.
    • 예시: df['column_name'] = pd.to_numeric(df['column_name'], errors='coerce')
  3. to_datetime() 메서드 사용
    • to_datetime() 메서드는 데이터프레임 열의 값을 날짜/시간형으로 변환합니다.
    • 예시: df['column_name'] = pd.to_datetime(df['column_name'], format='%Y-%m-%d')
  4. apply() 함수 사용
    • apply() 함수는 데이터프레임 열의 각 값을 특정 함수에 적용하여 변환합니다.
    • 예시: df['column_name'] = df['column_name'].apply(lambda x: x.lower())

개인적으로 적합한 방법을 선택하여 데이터프레임 열의 데이터 타입을 변경할 수 있습니다.

 

각 케이스별 구체적인 예는 아래와 같습니다.

 

1. astype() 

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': ['23', '35', '27', '29', '31'],
        'score': [80, 90, 75, 85, 95]}
df = pd.DataFrame(data)

문자열로 된 'age'열이 포함된 데이터프레임이 있다고 가정해봅시다. 여기서 'age'열의 데이터 타입을 정수형으로 변경하려면 다음과 같이 astype() 메서드를 사용할 수 있습니다.

df['age'] = df['age'].astype(int)

위 코드에서 df['age']는 'age'열에 해당하는 시리즈(Series) 객체를 반환하고, astype(int)는 해당 시리즈의 모든 값들을 정수형으로 변환한 후 다시 시리즈 객체를 반환합니다. 마지막으로 이 값을 다시 'age'열에 대입하여 'age'열의 데이터 타입을 정수형으로 변경합니다.

 

2. to_numeric()

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': [23, 35, 27, 29, 31],
        'score': ['80', '90', '75', '85', '95']}
df = pd.DataFrame(data)

문자열로 된 'score'열이 포함된 데이터프레임이 있다고 가정해봅시다.여기서 'score'열의 데이터 타입을 정수형으로 변경하려면 다음과 같이 to_numeric() 메서드를 사용할 수 있습니다.

df['score'] = pd.to_numeric(df['score'])

위 코드에서 pd.to_numeric(df['score'])는 'score'열의 모든 값을 수치형으로 변환한 후 시리즈 객체를 반환합니다. 이 값을 다시 'score'열에 대입하여 'score'열의 데이터 타입을 수치형으로 변경합니다. 만약 'score'열에 수치형이 아닌 값이 있으면 해당 값은 NaN(Not a Number)으로 변경됩니다. 이때 to_numeric() 메서드의 errors 매개변수를 'coerce'로 지정하면 수치형으로 변환할 수 없는 값을 NaN으로 변환할 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다.

df['score'] = pd.to_numeric(df['score'], errors='coerce')

3. to_datetime()

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': [23, 35, 27, 29, 31],
        'date': ['2022-04-20', '2022-04-21', '2022-04-22', '2022-04-23', '2022-04-24']}
df = pd.DataFrame(data)

문자열로 된 'date'열이 포함된 데이터프레임이 있다고 가정해봅시다.여기서 'date'열의 데이터 타입을 날짜/시간형으로 변경하려면 다음과 같이 to_datetime() 메서드를 사용할 수 있습니다.

df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')

위 코드에서 pd.to_datetime(df['date'], format='%Y-%m-%d')는 'date'열의 모든 값을 날짜/시간형으로 변환한 후 시리즈 객체를 반환합니다. 이 값을 다시 'date'열에 대입하여 'date'열의 데이터 타입을 날짜/시간형으로 변경합니다. 여기서 format 매개변수는 'date'열의 값이 어떤 형식으로 표현되어 있는지를 지정합니다. 위 예시에서는 '%Y-%m-%d' 형식으로 지정했으므로 'date'열의 값들이 'YYYY-MM-DD' 형식으로 표현되어 있다고 가정했습니다.

 

4.apply()

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'age': [23, 35, 27, 29, 31],
        'score1': [80, 90, 75, 85, 95],
        'score2': [85, 95, 70, 80, 90]}
df = pd.DataFrame(data)

다음과 같은 데이터프레임이 있다고 가정해봅시다.여기서 'score1'과 'score2' 열의 값의 평균을 구해서 새로운 열 'score_mean'에 저장하려면 다음과 같이 apply() 메서드를 사용할 수 있습니다.

df['score_mean'] = df[['score1', 'score2']].apply(lambda x: x.mean(), axis=1)

위 코드에서 df[['score1', 'score2']]는 'score1'과 'score2' 열에 해당하는 데이터프레임을 반환합니다. 이 데이터프레임에 apply() 메서드를 적용하면 각 행(row)에 대해 함수를 적용하게 됩니다. 여기서는 lambda x: x.mean() 함수를 적용해서 각 행의 'score1'과 'score2' 열의 평균을 구하도록 했습니다. axis=1 매개변수를 지정하여 각 행(row)에 대해 함수를 적용하도록 했습니다. 마지막으로 이 값을 'score_mean' 열에 대입하여 'score_mean' 열을 추가합니다.

반응형
posted by choiwonwoo
: