[파이썬/머신러닝] PANDAS(판다스) 기본 익히기-1
PANDAS(판다스)의 구성요소
DataFrame - 컬럼과 로우로 구성된 2차원 데이터 셋
Index - 로우를 고유하게 구분할수 있는 key 값 객체, RDBMS의 PK값.
Series - 한 개의 컬럼값으로 구성된 1차원 데이터 셋, 컬럼 값으로 구성되고 컬럼 명이 없다.
예제 파일 다운 받기
www.kaggle.com 에 접속해서 타이타닉 관련 데이터를 다운받아서 예제에 활용 합니다.
기본 API
import pandas as pd
titanic_df = pd.read_csv('titanic_train.csv')
titanic_df.head(3)
판다스를 import 시켜주고 read_csv()를 이용해 csv 파일을 DataFrame으로 로딩합니다.
head(3)으로 데이터의 첫 3개를 보여줍니다. 확인되는 것과 같이 DataFrame은 명확하게 컬럼을 가지고 있습니다. 그리고 제일 앞 0, 1, 2는 컬럼명이 없는데 이 부분은 index 입니다. index는 컬럼명이 없습니다.
shape
print('DataFrame의 크기 : ', titanic_df.shape)
DataFrame은 ndarray로 구성되어 있습니다. shape를 이용해 크기를 알 수 있는데 891개의 로우과 12개의 컬럼으로 구성되었다는 정보를 튜플로 반환해서 보여주고 있습니다.
딕셔너리를 이용한 DataFrame 생성
dic1 = {'Name': ['Minsoo', 'Mina', 'Taeho', 'Semin'],
'Year': [2011,2016,2008,2020],
'Gender' : ['Male', 'Female', 'Male', 'Male']
}
data_df = pd.DataFrame(dic1)
print(data_df)
print('='*25)
data_df = pd.DataFrame(dic1, columns = ['Name', 'Year', 'Gender', 'Age'])
print(data_df)
print('='*25)
data_df = pd.DataFrame(dic1, index = ['one', 'two', 'tree', 'four'])
print(data_df)
파이썬의 딕셔너리를 이용해 DataFrame을 만듭니다. 키 값은 컬럼이 되고 밸류 값이 차례대로 들어가게 됩니다.
columns 인자를 통해 컬럼을 추가 할 수 있습니다. 인덱스 값이 기본적으로 0,1,2 ... 이지만 해당 부분 역시 index 인자를 통해 명명 할 수 있습니다.
DataFrame에서 series 추출 및 DataFrame 필터링 추출하기
series = titanic_df['Name']
print(series.head(3))
print('==== type', type(series))
filtered_df = titanic_df[['Name', 'Age']]
print(filtered_df)
print('==== type', type(filtered_df))
one_col_df = titanic_df[['Name']]
print(one_col_df)
print('==== type', type(one_col_df))
DataFrame의 [] 내에 컬럼을 하나만 입력하면 1개의 컬럼만 갖는 series가 출력됩니다.
DataFrame의 [] 내에 컬럼을 리스트 형태로 2개 이상 입력하게 되면 DataFrame 형태로 출력되는 것을 볼 수 있습니다. 컬럼을 두개 이상 입력 할 때 [] 안에 리스트를 이용해 2차원으로 표현 해야 합니다. 세번째 출력문 처럼 컬럼은 하나지만 2차원 형태로 입력하게 되면 DataFrame을 출력하게 됩니다.
DataFrame의 컬럼 데이터 셋 생성과 수정
titanic_df['Age_by_10'] = titanic_df['Age'] * 10
titanic_df['Family_No'] = titanic_df['SibSp'] + titanic_df['Parch'] + 1
titanic_df.head(3)
컬럼명을 새롭게 []내 입력해서 해당 값들을 기존 컬럼의 값에 연산한 값으로 넘겨줘서 추가 해 줄 수 있습니다.
DataFrame 데이터 삭제
titanic_drop_df = titanic_df.drop('Age_0', axis = 1)
titanic_drop_df.head(3)
drop을 이용해서 데이터 삭제가 가능합니다. ndarray에서 익혔던 axis 0은 row 방향, axis 1은 column 방향이고 DataFrame은 2차원 데이터를 다루기 때문에 axis는 0과 1이 존재 합니다. 위 예제에서 drop의 인자로 axis = 1 을 설정했기 때문에 해당 컬럼이 삭제가 됩니다.
판다스에서 대부분 컬럼 삭제(axis = 1)가 되고 이상치 데이터 삭제의 경우에만 로우 삭제 (axis = 0) 이 이용된다고 합니다.
Index 객체
print('단일 컬럼 출력 : \n', titanic_df['Pclass'].head(3))
print('\n복수 컬럼 출력 : \n', titanic_df[['Survived', 'Pclass']].head(3))
titanic_df[0:2]
titanic_df[titanic_df['Pclass']==3].head(3)
[] 내에는 컬럼명이 와야 하고 인덱스 숫자를 넣으면 에러를 발생시킨다. 단 범위 인덱싱을 이용해 위 처럼 0:2 형태로 입력하게 되면 해당 범위만큼을 출력 해 준다. 또 불린 인덱싱 표현이 가능하다. [] 내 조건 식을 넣어주면 조건에 해당하는 값을 출력한다.
불린 인덱싱
print(titanic_df[titanic_df['Age']>60][['Name', 'Age']].head(3))
titanic_df[(titanic_df['Age']>60)&(titanic_df['Pclass']==1)&(titanic_df['Sex']=='female')]
불린 인덱싱 추가하자면 위와 같이 복수의 조건식을 이용해 적용 할 수 있습니다.
cond1 = titanic_df['Age'] > 60
cond2 = titanic_df['Pclass'] ==1
cond3 = titanic_df['Sex'] =='female'
titanic_df[cond1&cond2&cond3]
그리고 개별 조건을 변수에 할당하고 변수를 결합해서 불린 인덱싱을 수행 할 수 있습니다.
value_counts()
value_counts = titanic_df['Pclass'].value_counts()
print(value_counts, '\n')
print(type(value_counts))
동일한 개별 데이터 값이 몇개 있는 지를 알려줍니다. 예제와 같이 series로 반환되며, series의 인덱스이고 동시에 'Pclass'의 유일한 값이다.
'공부방 > 파이썬_머신러닝' 카테고리의 다른 글
[파이썬/머신러닝] 사이킷런 기초다지기 - 3 (0) | 2020.11.09 |
---|---|
[파이썬/머신러닝] 사이킷런 기초 다지기 - 2 (0) | 2020.11.04 |
[파이썬/머신러닝] 사이킷런 기초 다지기 - 1 (0) | 2020.11.03 |
[파이썬/머신러닝] PANDAS(판다스) 기본 익히기-2 (0) | 2020.10.30 |
[파이썬/머신러닝] NUMPY(넘파이) 기본 익히기 (0) | 2020.10.27 |