DataFrame의 변수 추가 및 삭제

Page content

강의 홍보

데이터 개요

  • German Credit Card를 활용하여 데이터를 가공하도록 한다.
    • 데이터셋에 대한 설명은 Kaggle에서 확인한다.
import pandas as pd
print(pd.__version__)
1.0.5
url = 'https://raw.githubusercontent.com/chloevan/kaggle2portpolio/master/datasets/german_credit_data.csv'
german_credit = pd.read_csv(url)
german_credit.head(3)
Unnamed: 0 Age Sex Job Housing Saving accounts Checking account Credit amount Duration Purpose
0 0 67 male 2 own NaN little 1169 6 radio/TV
1 1 22 female 2 own little moderate 5951 48 radio/TV
2 2 49 male 1 own little NaN 2096 12 education
  • Pandas DataFrameIndex와 나머지 열로 구성이 되어 있다.
  • 데이터의 행과 크기를 알아보는 가장 좋은 방법은 DataFrame객체의 shape변수를 이용하는 것이다.
print('DataFrame 크기: ', german_credit.shape)
DataFrame 크기:  (1000, 10)
  • 생성된 DataFrame 객체인 german_credit은 10개의 칼럼으로 이루어져 있다.
  • 이번에는 describe() 함수를 활용하여 개략적인 분포도를 확인한다.
german_credit.describe()
Unnamed: 0 Age Job Credit amount Duration
count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000
mean 499.500000 35.546000 1.904000 3271.258000 20.903000
std 288.819436 11.375469 0.653614 2822.736876 12.058814
min 0.000000 19.000000 0.000000 250.000000 4.000000
25% 249.750000 27.000000 2.000000 1365.500000 12.000000
50% 499.500000 33.000000 2.000000 2319.500000 18.000000
75% 749.250000 42.000000 2.000000 3972.250000 24.000000
max 999.000000 75.000000 3.000000 18424.000000 72.000000
german_credit['Sex'].value_counts()
male      690
female    310
Name: Sex, dtype: int64
  • Sex의 반환 결과는 1이 700개, 0이 300개로 확인할 수 있다.
  • 이 때 value_counts()는 많은 건수 순서로 정렬되어 값을 반환한다.

새로운 변수 추가

  • 기존 데이터에서 변수를 추가하고 삭제하는 것을 진행해본다.
  • 이러한 과정을 보통 도출변수로 표현되기도 한다.
german_credit['Age+100'] = german_credit['Age'] + 100
german_credit.shape
(1000, 11)

(1) 수치형 조건에 따른 변수 추가

  • 수치형 변수의 특성에 따라 새로운 변수를 추가한다.
  • Age를 기준으로 크게 ">50"<=50이하로 구분한다.
  • 그러기 위해서는 각 조건이 맞는지를 확인하는 if 조건과 반복 수행을 위한 for-loop 조건이 필요하다.
# 빈 리스트 객체 생성
age_group = []

for age in german_credit['Age']:
  if age > 50:
    age_group.append('>50')
  else:
    age_group.append('<=50')

(age_group[0:3])
['>50', '<=50', '<=50']
  • 출력된 결과물은 위와 같은 형태로 저장된 것을 확인할 수 있다.
  • age_group에 저장된 리스트 값을 새로운 변수로 추가한다.
german_credit['Age_group'] = age_group
german_credit['Age_group'].value_counts()
<=50    887
>50     113
Name: Age_group, dtype: int64

(2) 문자형 조건에 따른 변수 추가

  • 이번에는 특정문자열의 존재 유무에 따라 새로운 column is_own을 추가한다.
german_credit['Housing'].value_counts()
own     713
rent    179
free    108
Name: Housing, dtype: int64
  • 위 데이터에서 own인 경우는 True 그렇지 않은 경우는 False로 저장한다.
  • np.where을 사용하면 if처럼 매우 쉽게 사용이 가능하다.
import numpy as np 
german_credit['is_own'] = np.where(german_credit['Housing'] == "own", True, False)
german_credit['is_own'].value_counts()
True     713
False    287
Name: is_own, dtype: int64

변수 삭제

  • 이렇게 생성된 변수를 삭제하도록 한다.
  • 이 때, 가장 많이 사용되는 함수는 drop() 메서드를 이용한다.
  • 함수 사용 시, 주의해야 하는 것 중 하나는 axis 0은 행의 방향, axis 1은 열의 방향 축으로 움직인다.
    • 즉, drop()함수를 사용 시에는 axis 1를 같이 입력한다.
german_credit = german_credit.drop('Age+100', axis = 1)
german_credit.shape
(1000, 12)
  • 이번에는 두개의 변수를 추가한 뒤, 한꺼번에 삭제하는 예제를 실습해본다.
german_credit['age+10'] = german_credit['Age'] + 10
german_credit['age+20'] = german_credit['Age'] + 20
german_credit.shape
(1000, 14)
  • 이제 새로 추가된 변수 2개를 삭제 한다.
german_credit = german_credit.drop(['age+10', 'age+20'], axis = 1)
german_credit.shape
(1000, 12)
  • 이렇게 두개 이상의 변수를 삭제할 때는 list를 활용해서 삭제가 가능하다.

정리

  • DataFrame에서 간단하게 변수를 추가 및 삭제하는 방법에 대해 배웠다.
    • 수치형 변수를 활용한 변수 추가, 문자형 변수를 활용한 변수 추가의 기본적인 내용을 숙지한다.
  • 변수를 삭제할 때는 drop()메서드를 사용하는 데, 행을 삭제할 때는 axis = 0, 열을 삭제할 때는 axis = 1 활용한다.