본문 바로가기

코딩/머신러닝&데이터 분석 강의

[머신러닝 인강] 11-2주차: Pandas DataFrame 의 이해

<11-2주차 수강 클립>

04. 데이터 분석을 위한 Python (Pandas)

07. DataFrame 타입이해 - 01. DataFrame 데이터 살펴보기

08. DataFrame 타입이해 - 02. DataFrame 구조 이해하기

09. DataFrame 타입이해 - 03. DataFrame 데이터 생성하기

10. DataFrame 타입이해 - 04. 샘플 csv 데이터로 DataFrame 데이터 생성하기

 


저번 주차의 Series 데이터에 이어 pandas의 대표적인 객체라 할 수 있는

DataFrame에 대해 알아보았습니다.

Series가 1차원 배열의 데이터를 나타내는 객체라면

DataFrame은 Series 2차원으로 확대된 버전이라고 할 수 있습니다.

>>수강 인증샷<<

 


 

07. DataFrame 타입이해 - 01. DataFrame 데이터 살펴보기

 

- DataFrame

Series가 1차원이라면 DataFrame은 2차원으로 확대된 버전임

엑셀 스프레드시트(Excel spreadsheet)라고 생각하기!

2차원이기 때문에 인덱스가 row, column 으로 구성됨

row: 각 개별 데이터 / column: 개별 속성

*) DataFrame은 Data Analysis, Machine Learning에서 데이터 변형을 위해 가장 많이 사용됨

 

import pandas as pd

# data 출처: https://www.kaggle.com/hesh97/titanicdataset-traincsv/data
train_data = pd.read_csv('csv데이터가 있는 경로')

: pandas의 read_csv 함수로 .csv 파일을 읽어와 DataFrame으로 구성하기

 

 

- head, tail 함수

데이터 전체가 아닌 일부(시작부터 or 끝에서부터)를 간단히 보이기 위한 함수

train_data.head()
train_data.tail(n=3)

: default값은 5, 원하는 개수만큼 n에 전달해서 n만큼의 데이터를 확인할 수 있음

 

 

- DataFrame 데이터 파악하기

shape 속성 (row, column의 개수)

describe 함수 (숫자형 데이터의 통계치 계산)

info 함수 (데이터 타입, 각 아이템의 개수 등을 출력)

train_data.shape #row개수, col개수
train_data.describe()
train_data.info()

 

 


 

08. DataFrame 타입이해 - 02. DataFrame 구조 이해하기

 

- 인덱스 (index)

각 아이템을 특정할 수 있는 고유의 값을 저장

복잡한 데이터의 경우, 멀티 인덱스로 표현 가능

 

train_data.index

: DataFrame의 index 멤버변수 확인

: Out: RangeIndex(start=0, stop=891, step=1)

 

 

- 컬럼 (column)

각각의 특징, 특성(feature)을 나타냄

복잡한 데이터의 경우, 멀티 컬럼으로 표현 가능

 

train_data.columns

: DataFrame의 columns 멤버변수 확인

: Out: Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')

 

 


 

09. DataFrame 타입이해 - 03. DataFrame 데이터 생성하기

 

- DataFrame 생성하기

일반적으로 분석을 위한 데이터는 다른 데이터 소스(database, 외부파일)을 통해 DF를 생성함

(*실습을 통해 dummy 데이터를 생성하는 방법을 다룸)

 

 

- dictionary로부터 생성하기

dict의 key값 = column

dict의 value값 = 데이터

 

data = {'a': 100, 'b': 200, 'c': 300} #col (key)
pd.DataFrame(data, index = ['x', 'y', 'z']) #row (index)

: DF의 index인 x, y, z에 각각 a, b, c에 해당하는 값 100, 200, 300으로 채워짐

 

data = {'a' : [100, 200, 300], 'b': [1, 2, 3], 'c': [4, 5, 6]}
pd.DataFrame(data, index=['x', 'y', 'z'])

: DF의 index인 x, y, z에 해당하는 각각의 값 지정해주기

 

 

- Series로부터 생성하기

각 Series의 인덱스 = column

DataFrame의 한 row = 한 Series

s1 = pd.Series([100, 200, 300], ['a', 'b', 'c'])
s2 = pd.Series([101, 202, 303], ['a', 'b', 'c'])
s3 = pd.Series([110, 220, 330], ['a', 'b', 'c'])

pd.DataFrame([s1, s2, s3], index=['00', '01', '02']) #Series 세 개를 연속적으로 넘기기

: DataFrarme 객체 생성 시 ([Series 데이터], index=인덱스로 지정할 값의 리스트)

 

s1 = pd.Series([100, 200, 300], ['a', 'b', 'd'])
s2 = pd.Series([101, 202, 303], ['a', 'b', 'k'])
s3 = pd.Series([110, 220, 330], ['a', 'b', 'c'])

pd.DataFrame([s1, s2, s3], index=['00', '01', '02'])

: 각 Series마다 겹치는 인덱스가 없을 경우 → DF가 만들어질 때 모든 Series의 인덱스가 column이 되고 해당 column에 값이 없을 경우 NaN(Not a Number)값으로 채움

 

 


 

10. DataFrame 타입이해 - 04. 샘플 csv 데이터로 DataFrame 데이터 생성하기

 

- csv 데이터로부터 DataFrame 생성

데이터 분석을 위해 dataframe을 생성하는 가장 일반적인 방법임

데이터 소스로부터 추출된 csv(comma separated values_변수에 대한 값이 ','로 구분된 데이터) 파일로부터 생성

pandas.read_csv 함수 사용

 

import pandas as pd

# data 출처: https://www.kaggle.com/hesh97/titanicdataset-traincsv/data
train_data = pd.read_csv('csv데이터가 있는 경로')
train_data.head()

: 항상 데이터 파일을 불러온 다음 확인을 위해 .head()함수 호출하기!

 

 

- read_csv 함수 파라미터

  • sep - 각 데이터 값을 구별하기 위한 구분자(separator) 설정 (기본값 ','_csv 파일은 ','로 구분돼있음)
  • header - header를 무시할 경우, None 설정
  • index_col - index로 사용할 column 설정
  • usecols - 실제로 dataframe에 로딩할 columns만 설정

 

train_data = pd.read_csv('csv데이터가 있는 경로', header=None)
train_data.head()

: header을 무시, 0-based로 열 번호를 매김

 

train_data = pd.read_csv('csv데이터가 있는 경로', index_col='PassengerId')
train_data.head()

: DataFrame의 column중 index로 사용할 column을 지정

 

train_data.columns

: read_csv로 데이터 파일 로딩 시 index를 'PassengerId'로 설정했기 때문에 train_data의 column들 중 PassengerId는 없음을 확인

: Out: Index(['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')

 

train_data = pd.read_csv('csv데이터가 있는 경로', use_cols=['PassengerId', 'Survived', 'Pclass', 'Name'])
train_data.head()

: 원하는 변수=Feature=column의 데이터들만 로딩

 


 

강의 링크: https://bit.ly/3cB3C8y

반응형