목차
Kaggle 데이터셋을 활용해서 pandas 기본 사용법 알아보기
캐글에 있는 타이타닉 탑승자 파일을 활용해서 pandas의 기본 사용법을 알아보자.
판다스를 활용해 데이터셋 불러오기
판다스의 핵심 객체는 데이터 프레임이다. 데이터 프레임은 표라고 생각하면 된다.
캐글에서 받은 csv 파일을 데이터 프레임으로 로딩하는 함수로는 read_csv(), read_table(), read_fwf()가 있다.
read_csv()와 read_table()에는 기능 차이가 거의 없다.
read_fwf()는 고정 길이 기반의 칼럼 포맷을 데이터 프레임으로 로딩하는 함수다.
#csv 파일을 데이터 프레임으로 로딩하기
titanic_df = pd.read_csv('titanic_train.csv')
titanic_df.head(3)
read_csv 함수에 파일이 위치한 경로를 적어주기만 하면 데이터프레임으로 로딩할 수 있다.
데이터 프레임으로 변환된 데이터는 아래와 같은 형태로 변한다.
데이터 프레임 정보보기
데이터 프레임의 크기(행과 열)를 알고 싶다면 데이터 프레임의 shape 변수를 사용해 출력할 수 있다.
이 데이터 프레임은 891개의 row와 12개의 column로 이루어져 있다.
데이터의 대략적인 분포를 확인하고 싶다면 describe() 함수를 사용할 수 있다.
describe() 함수는 숫자형 칼럼의 분포도를 조사해 출력한다.
특정 칼럼이 어떤 분포를 가지는지 보고싶다면 value_counts()함수를 사용하면 된다.
Pclass 칼럼에는 값이 1, 2, 3 중에 하나가 들어가는데 그 값들이 몇 개 있는지를 볼 수 있고 칼럼의 유형까지 알 수 있다.
데이터 프레임의 값 생성, 수정, 삭제
titanic_df['Age_0']=0
다음과 같이 추가하고 싶은 칼럼 명을 넣고 값을 할당하면 값을 생성할 수 있다.
칼럼을 추가한 방식을 활용해서 칼럼의 값들을 일괄적으로 수정할 수도 있다.
titanic_df['Age_by_10'] = titanic_df['Age_by_10'] + 100
이렇게 하면 Age_by_10 칼럼에 일괄적으로 100을 더할 수 있다.
데이터 프레임의 값을 삭제할 때는 drop() 함수를 사용하면 된다.
titanic_drop_df = titanic_df.drop('Age_0', axis=1 )
column을 삭제하고 싶을 때는 axis값을 1로 하고 row를 삭제하고 싶을 때는 axis값을 0으로 하고 삭제하면 된다.
drop 함수에는 inplace라는 파라미터가 있는데 inplace를 False로 하면 원본 데이터프레임은 건드리지 않고 삭제된 데이터프레임을 반환한다. inplace의 디폴트 값은 false다. 만약 inplace를 True로 하면 원본 데이터 프레임의 데이터가 삭제된다.
다른 데이터<->데이터 프레임 변환
다른 데이터를 데이터 프레임으로 변환
ndarray와 리스트를 데이터 프레임으로 변환할 때는 DataFrame()을 사용해서 변환하면 된다.
이때, 칼럼명도 함께 지정해야 한다.
list1 = [1, 2, 3]
df_list1 = pd.DataFrame(list1, columns=col_name1)
딕셔너리를 데이터 프레임으로 변환할 때 딕셔너리의 키는 칼럼이 된다.
dict = {'col1':[1, 11], 'col2':[2, 22], 'col3':[3, 33]}
df_dict = pd.DataFrame(dict)
데이터 프레임을 다른 데이터로 변환하기
데이터 프레임을 ndarray로 변환할 때는 데이터 프레임의 values를 사용하면 된다.
# DataFrame을 ndarray로 변환
array3 = df_dict.values
데이터 프레임을 리스트로 변환할 때는 ndarray로 변환한 값을 tolist()를 사용해 리스트로 변환하면 된다.
데이터 프레임을 딕셔너리로 변환할 때는 데이터 프레임의 to_dict()를 사용하면 된다.
#데이터 프레임을 리스트로
list3 = df_dict.values.tolist()
#데이터 프레임을 딕셔너리로
dict3 = df_dict.to_dict('list')
출처
책 - 파이썬 머신러닝 완벽 가이드
'Study > 머신러닝' 카테고리의 다른 글
[4] 머신러닝 - 판다스 기초(3) (0) | 2021.05.24 |
---|---|
[3] 머신러닝 - 판다스 기초(2) (0) | 2021.05.16 |
[1] 머신러닝 - numpy 기초 (0) | 2021.05.04 |
[PyTorch] torchvision을 활용한 image transform (0) | 2021.01.31 |
[tensorflow] 텐서플로우 콜백함수(Callbacks) (0) | 2021.01.31 |