[pandas] DataFrame 심화 2
기본 DataFrame column (2)
pandas의DataFrame에 관한row와column추가, 삭제등에 관한 내용에 대해서 알아본다.
대부분의 예제로 다음의 data를 사용한다.
import pandas as pd
import numpy as np
data = {'이름':['이지은', '박동훈', '홍길동', '강감찬', '오해영'],
'학과':['컴퓨터', '기계','철학', '컴퓨터', '철학'],
'학년':[1, 2, 2, 4, 3],
'학점':[1.5, 2.0, 3.1, 1.1, 2.7]
}
df = pd.DataFrame(data,
columns = ['학과', '이름', '학점', '학년', '등급'],
index = ['one', 'two', 'three', 'four', 'five'])
display(df)

column 추가( Series를 이용한 추가방법)
DataFrame에 새로운 column을 추가하기 위해서는 추출 및 수정과 같이scalar,list,ndarray를 사용할 수 있고 추가적으로Series도 사용할 수 있다.scalar,list,ndarray는 추출 및 수정과 동일하므로 건너뛴다.
- Series를 이용한 추가방법
df['나이'] = pd.Series([20, 21, 22, 23, 24])
display(df)

이렇게 그냥 Series값을 대입해 버리면 NaN (Not a Number) 값으로 나와버린다.
즉, 제대로 추가가 되지 않는다. column을 제대로 추가하기 위해서는 index 값을 지정해주면 제대로 작동한다.
df['나이'] = pd.Series([20, 21, 22, 23, 24],
index = ['one', 'two', 'three', 'four', 'five'])
display(df)

그러면 Series를 사용하려면 index를 추가해야 하므로 ndarray나 list를 사용하는것보다 귀찮다고 느낄수 있다. 그러나 Series를 사용했을때 ndarray나 list와 달리 값을 주지 않는 곳에 NaN 값을 주면서 원하는 index 위치에만 값을 줄 수 있다.
df['나이'] = pd.Series([20, 22, 24],
index=['one','three','five'])
display(df)

column 추가(연산을 통한 추가방법)
연산을 통해 column을 추가 할 수 있다.
print(df['학점'] > 3.0)
## one False
## two False
## three True
## four False
## five False
## Name: 학점, dtype: bool : Series
df['장학생여부'] = df['학점'] > 3.0
display(df)

column 삭제
column 뿐만 아니라 row를 삭제 할때 모두
drop이라는 method를 사용한다.option으로는
axis와inplace가 들어간다.
axis로 행과 열을 선택할 수 있고inplace(False/True)로 원본을 보존하고 삭제된 결과를 새로 만들지(False) 아니면 원본을 지울지(True) 결정한다.
display(df.drop('등급', axis=1, inplace=False)) # 등급이 사라진다.

df.drop(['학년', '등급'], axis=1, inplace=True)
display(df)
