Pandas
머신러닝 실습의 대표적인 예제인 타이타닉 데이터를 활용하여 pandas의 활용에 대해 정리하고자 한다.
# 데이터 불러오기
import pandas as pd
titanic_df = pd.read_csv('./data/train.csv')
print('titanic 변수 type:',type(titanic_df))
titanic_df
데이터 개요 확인
# 데이터 개요 확인
titanic_df.head()
print('DataFrame 크기: ', titanic_df.shape)
titanic_df.info()
titanic_df.describe()
범주형 데이터 개수 출력
# value_counts: 범주형 데이터의 개수 출력
value_counts = titanic_df['Pclass'].value_counts()
print(value_counts)
파생변수 생성
titanic_df['Age_by_10'] = titanic_df['Age']*10
titanic_df['Family_No'] = titanic_df['SibSp'] + titanic_df['Parch']+1
titanic_df.head(3)
특정 행, 열 drop
# drop
titanic_drop_df = titanic_df.drop('Age_0', axis=1 )
titanic_drop_df.head(3)
index객체
# 원본 파일 재 로딩
titanic_df = pd.read_csv('./data/train.csv')
# Index 객체 추출
indexes = titanic_df.index
print(indexes)
# Index 객체를 실제 값 arrray로 변환
print('Index 객체 array값:\n',indexes.values)
print('단일 컬럼 데이터 추출:\n', titanic_df[ 'Pclass' ].head(3))
print('\n여러 컬럼들의 데이터 추출:\n', titanic_df[ ['Survived', 'Pclass'] ].head(3))
# 조건부 boolean indexing
titanic_df = pd.read_csv('./data/train.csv')
titanic_df[ titanic_df['Pclass'] == 3].head(3)
titanic_boolean = titanic_df[titanic_df['Age'] > 60]
print(type(titanic_boolean))
titanic_boolean
titanic_df[titanic_df['Age'] > 60][['Name','Age']].head(3)
titanic_df.loc[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]
정렬, Aggregation함수,
titanic_sorted = titanic_df.sort_values(by=['Name'])
titanic_sorted = titanic_df.sort_values(by=['Pclass', 'Name'], ascending=False)
titanic_df[['Age', 'Fare']].mean()
GroupBy 적용
titanic_groupby = titanic_df.groupby(by='Pclass')
titanic_groupby = titanic_df.groupby('Pclass').count()
titanic_groupby = titanic_df.groupby('Pclass')[['PassengerId', 'Survived']].count()
titanic_df.groupby('Pclass')['Age'].agg([max, min])
agg_format={'Age':'max', 'SibSp':'sum', 'Fare':'mean'}
titanic_df.groupby('Pclass').agg(agg_format)
Nan 처리
titanic_df.isna().head(3)
titanic_df.isna( ).sum( )
titanic_df['Cabin'] = titanic_df['Cabin'].fillna('C000')
titanic_df['Age'] = titanic_df['Age'].fillna(titanic_df['Age'].mean())
titanic_df['Embarked'] = titanic_df['Embarked'].fillna('S')
titanic_df.isna().sum()
apply lambda로 데이터 가공하여 파생변수 추가
titanic_df['Name_len']= titanic_df['Name'].apply(lambda x : len(x))
titanic_df[['Name','Name_len']].head(3)
titanic_df['Child_Adult'] = titanic_df['Age'].apply(lambda x : 'Child' if x <=15 else 'Adult' )
titanic_df[['Age','Child_Adult']].head(8)
titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : 'Child' if x<=15 else ('Adult' if x <= 60 else
'Elderly'))
titanic_df['Age_cat'].value_counts()
# 나이에 따라 세분화된 분류를 수행하는 함수 생성.
def get_category(age):
cat = ''
if age <= 5: cat = 'Baby'
elif age <= 12: cat = 'Child'
elif age <= 18: cat = 'Teenager'
elif age <= 25: cat = 'Student'
elif age <= 35: cat = 'Young Adult'
elif age <= 60: cat = 'Adult'
else : cat = 'Elderly'
return cat
# lambda 식에 위에서 생성한 get_category( ) 함수를 반환값으로 지정.
# get_category(X)는 입력값으로 ‘Age’ 컬럼 값을 받아서 해당하는 cat 반환
titanic_df['Age_cat'] = titanic_df['Age'].apply(lambda x : get_category(x))
titanic_df[['Age','Age_cat']].head()
get_dummy로 인코딩
# get_dummy로 인코딩하기
titanic_df['Sex']
pd.get_dummies(titanic_df['Sex'])
pd.get_dummies(titanic_df['Pclass'])
replace
str.split
'datascience' 카테고리의 다른 글
통계 (0) | 2021.11.07 |
---|