[pandas] DataFrame 심화 1

기본 DataFrame column (1)

pandasDataFrame 에 관한 rowcolumn 추출,수정등에 관한 내용에 대해서 알아본다.

대부분의 예제로 다음의 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)

dataFrame_detail

기본적인 단일 column 추출 방법

대체로 두가지 방법이 사용된다. 출력됐을때 Series로 추출된다.

print(df['이름'])
## one      이지은
## two      박동훈
## three    홍길동
## four     강감찬
## five     오해영
## Name: 이름, dtype: object
print(df.이름)
## one      이지은
## two      박동훈
## three    홍길동
## four     강감찬
## five     오해영
## Name: 이름, dtype: object

위의 예제를 살펴보면 df['이름'] 과 같이 일반적인 방법으로도 column을 추출할수 있지만 df의 속성으로 생각해 df.이름와 같이 입력해서도 추출할 수 있다.

하지만, 굳이 df.이름 를 사용해 추출하는것 보다 df['이름']를 사용하는것이 권장된다.

그렇다면, 만약 추출된 Series의 값을 변경하면 어떻게 될까?

Series의 내용을 변경하면 원래의 DataFrame 도 함께 변경된다.

name = df['이름']
name['one'] = '아이유'
display(df)

dataFrame_detail1

기본적인 다수 column 추출 방법

column을 추출할때 가능한 방법이 있고 불가능한 방법들이 있다. 또한, returnDataFrame으로 추출된다.

display(df[['학과','학점']])

dataFrame_detail2

display(df['학과':'학점'])   # KeyError: '학과'

단일 column값 수정하는 방법

column을 추출해 scalar, array, list를 이용해서 수정할 수 있다.

dataFrame_detail

위의 DataFrame이 계속 주어져 있다고 가정하자.

df['등급']='A'
display(df)

dataFrame_detail3

df['등급'] = np.array(['A', 'B', 'A', 'D', 'F'])
display(df)

dataFrame_detail4

df['등급'] = ['A', 'B', 'A', 'D', 'F']
display(df)

dataFrame_detail4

다수 column값 수정하는 방법

단일 column 수정과 다르지 않다. 마찬가지로 scalar, array, list**를 이용해서 수정할 수 있다.

dataFrame_detail

df[['학과','등급']] = 'A'
display(df)

dataFrame_detail5

df[['학과','등급']] = [['영어영문','A'],
                       ['철학','C'],
                       ['국어국문','B'],
                       ['화학','F'],
                       ['물리','C']]
display(df)

dataFrame_detail6

df[['학과','등급']] = np.array([['영어영문','A'],
                       		  ['철학','C'],
	                          ['국어국문','B'],
       		                  ['화학','F'],
              		          ['물리','C']])
display(df)

dataFrame_detail6