세상을 바꾸는 데이터

[Pandas] 판다스 - 파일을 DataFrame으로 불러오기, 기본 API 본문

ML/Pandas

[Pandas] 판다스 - 파일을 DataFrame으로 불러오기, 기본 API

Industriousness 2022. 1. 19. 18:03

 

새로운 주피터 노트북을 생성하고 판다스 모듈을 임포트 한다.

import pandas as pd

 

다음으로 데이터 파일을 판다스의 DataFrame으로 로딩할 것이다. 사용할 데이터 파일은 캐글의 대표 연습 파일인 타이타닉 탑승자 파일이다. 타이타닉 탑승자 데이터 파일은 https://www.kaggle.com/c/titanic에서 내려받을 수 있다. train 파일을 titanic_train으로 파일명을 변경한다.

https://www.kaggle.com/c/titanic

 

Titanic - Machine Learning from Disaster | Kaggle

 

www.kaggle.com

 

※주의※

데이터 파일은 압축 후 주피터 노트북에서 코딩을 실행하고자 하는 폴더로 옮겨야 한다. 예를 들면 Pandas라는 폴더 안에 코드를 실행하고자 하는. ipynb와 train.csv파일이 같이 있어야 한다는 뜻이다. 이를 안 할 시 파일을 로딩할 수 없다.

 

Pandas 폴더 안에 데이터 자료와 코딩 파일이 같이 있는 모습

 


read_csv( )

  • pd.read_csv( )

read_csv( )를 이용하여 csv 파일을 편리하게 DataFrame으로 로딩한다. read_csv( )의 sep인자를 해당 구분 문자(콤마, 탭)로 변경하여 다른 유형의 파일들이 로드가 가능하다.

판다스 파일 불러오기

titanic_df = pd.read_csv('titanic_train.csv') # 타이타닉 데이터 파일 불러오기
print('titanic 변수 type:',type(titanic_df))  # titanic_df의 데이터 타입은 DataFrame
# titanic 변수 type: <class 'pandas.core.frame.DataFrame'>

 


head( )

  • .head()

head( )를 이용하여 DataFrame의 맨 앞 일부 데이터만 추출한다.  head( )의 목적은 얼마나 많은 피처(feature)가 있으며 데이터 값들은 어떻게 생겼는지 짧게 보기 위해 주로 사용한다. head ( ) 안에는 숫자를 넣는다. 예를 들어 head(5)라고 입력하면 처음부터 5번째까지의 행 데이터가 추출된다.

titanic_df.head(5) # 맨 앞부터 5개의 데이터 추출

 

[Output]

titanic_df의 head(5)

  • 탑승자 데이터 개략적으로 살펴보기
  • Passengerid: 탑승자 데이터 일련번호
  •  survived: 생존 여부, 0 = 사망, 1 = 생존
  • Pclass: 티켓의 선실 등급, 1 = 일등석, 2 = 이등석, 3 = 삼등석
  • sex: 탑승자 성별
  • name: 탑승자 이름
  • Age: 탑승자 나이
  • sibsp: 같이 탑승한 형제자매 또는 배우자 인원수
  • parch: 같이 탑승한 부모님 또는 어린이 인원수
  • ticket: 티켓 번호
  • fare: 요금
  • cabin: 선실 번호
  • embarked: 중간 정착 항구 C = Cherbourg, Q = Queenstown, S = Southampton

 


tail( )

  • .tail()

tail( )은 head( )와는 반대로 DataFrame의 맨 뒤 일부 데이터만 추출한다. 

titanic_df.tail(5) # 뒤에서부터 5개 데이터 추출

 

[Output]

titanic_df의 tail(5)

 


DataFrame의 행과 열 크기 알아보기

  • .shape

DataFrame의 행과 열 크기를 알아보는 방법은 DataFrame 객체의 shape 변수를 이용하는 것이다. shape는 DataFrame의 행과 열을 튜플 형태로 반환한다.

print('DataFrame 크기: ', titanic_df.shape) # DataFrame 크기:  (891, 12)

 

DataFrame은 데이터뿐만 아니라 칼럼의 타입, Null(비워진 값) 데이터 개수, 데이터 분포도 등의 메타 데이터도 조회가 가능하다. 대표적인 메서드로 info( )와 describe( )가 있다.

 


info( )

  • .info( )

info ( ) 메서드는 총 데이터 건수와 각 피처(feature)마다의 데이터 타입, Null 건수를 알 수 있다. 자주 사용되므로 기억하자.

titanic_df.info()

[Output]

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

결과: Age, Cabin, Embarked에 Null 값이 존재함을 알 수 있다.

 


describe( )

  • .describe( )

describe( ) 메서드는 칼럼 별 숫자형 데이터 값의 n-percentile 분포도, 평균값, 최댓값, 최솟값을 나타낸다.  describe( ) 메서드는 오직 숫자형 칼럼(int, float 등)의 분포도만 조사하며 object 타입의 칼럼은 출력에서 제외시킨다.  describe( ) 메서드만으로 개략적인 수준의 분포도를 확인할 수 있어 유용하게 쓰인다. 

titanic_df.describe()

[Output]

titanic_df 숫자형 데이터값의 개략적인 분포도 확인

 


★★ value_counts( ) 

  • value_counts( )

DataFrame의 [ ] 연산자 내부에 칼럼명을 입력하면 해당 칼럼에 해당하는 Series 객체를 반환한다. 이때 반환한 Series 객체에 value_counts( ) 메서드를 호출하면 해당 칼럼 값의 유형과 건수를 확인할 수 있다. 데이터의 분포도를 확인하는데 매우 유용한 함수이니 꼭 기억해야 한다.

※ 주의 ※

value_counts()는 Series객체에서만 호출될 수 있으므로 반드시 DataFrame을 단일 칼럼으로 입력하여 Series로 변환한 뒤 호출해야 한다.

value_counts = titanic_df['Pclass'].value_counts() # Pclass별 데이터값 건수 확인
print(value_counts)

[Output]

3    491
1    216
2    184
Name: Pclass, dtype: int64

결과: 3등급 > 1등급 > 2등급 순으로 사람이 많았다는 것을 알 수 있다.

 


sort_values( )

  • sort_values( )

sort_values( )는 내가 원하는 칼럼명 순서대로 정렬을 할 수 있다. (by=정렬 칼럼, ascending=True 또는 False로 오름차순/내림차순으로 정렬)

titanic_df[['Name','Age','Pclass']].sort_values(by=['Pclass','Age']) 
# titanic 데이터에서 Name, Age, Pclass 컬럼명을 뽑고, 
# (1. Pclass별 오름차순, 2. Age별 오름차순)으로 정렬

 

[Output]

Pclass별 오름차순 정렬 후 Age별 오름차순 정렬하기

 

다음 포스트에서는 DataFrame을 넘파이 ndarray, 리스트, 딕셔너리로 변환하는 방법에 대해 알아보겠다.

 

 

Reference


https://github.com/chulminkw/PerfectGuide

https://ichi.pro/ko/r-hamsu-jaseubseo-read-csv-66252221828004

 

728x90
반응형
Comments