본문 바로가기

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

[머신러닝 인강] 12-1주차: Pandas DataFrame 의 컬럼,데이터 선택하기

<12-1주차 수강 클립>

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

11. DataFrame 타입이해 - 05. DataFrame 원하는 column(컬럼)만 선택하기

12. DataFrame 타입이해 - 06. DataFrame 원하는 row(데이터)만 선택하기

13. DataFrame 타입이해 - 07. DataFrame Boolean Selection으로 데이터 선택하기

 


이번 주차에는 데이터 프레임의 원하는 row, column, 데이터를

선택하는 법에 대해서 알아보았습니다.

>>수강 인증샷<<

 


 

11. DataFrame 타입이해 - 05. DataFrame 원하는 column(컬럼)만 선택하기

 

- column 선택하기

기본적으로 []는 column을 추출

column 인덱스일 경우 인덱스의 리스트 사용 가능

[]에 리스트 전달 → 결과는 DataFrame

[]에 하나의 컬럼명을 string으로 전달 → 결과는 Series

 

import pandas as pd

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

 

 

- 하나의 컬럼 선택하기

train_data['Survived']

: []에 0-based indexing이 아닌, column명을 명시해줘야 해당 컬럼 선택한다는 의미!

: 결과는 Series (해당 column의 데이터들을 데이터로, index는 default인 0-based indexing)

 

 

- 복수의 컬럼 선택하기

train_data[['Survived', 'Age', 'Name']]

: []에 1개 이상(1개의 column만 추출하고 싶을 때도 가능)의 column명으로 이루어진 list를 전달

: 결과는 DataFrame (기존 DF의 부분집합이라고 생각!)

 

 

 


 

 

 

12. DataFrame 타입이해 - 06. DataFrame 원하는 row(데이터)만 선택하기

 

- DataFrame 슬라이싱(slicing)

DataFrame의 경우 기본적으로 []연산자는 column 선택에 사용

하지만 slicing은 row 레벨로 지원

import pandas as pd
import numpy as np

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

:  0번째 데이터(생략) 부터 9번째 데이터까지 slicing 후 DataFrame으로 반환 (DF의 index가 0~9)

train_data[7:10]

: 7, 8, 9 인덱스에 해당하는 데이터들의 DataFrame

 

 

- row 선택하기

Series의 경우 []로 row 선택이 가능하나, 다시 한 번 강조하자면 DataFrame의 경우는 기본적으로 column을 선택하도록 설계

DataFrame의 row를 선택하기 위해서는 .loc / .iloc 와 []를 함께 써야함

  • loc - 인덱스 자체를 사용 (사용자가 정의한 DataFrame의 인덱스)
  • iloc - 0-based index를 사용 (사용자가 정의한 인덱스를 무시하고)

위 두 함수는 ','를 사용하여 row 선택과 동시에 일부 column 선택도 가능

train_data.index = np.arange(100, 991) # index 사용자 정의

train_data.loc[986]

: 마찬가지로 []안에 인덱스 번호만 전달할 경우 Series로 리턴

: 사용자 정의 인덱스를 사용

 

 

train_data.lic[[986, 100, 110, 990]]

: []안에 1개 이상의 인덱스 번호 리스트를 전달할 경우 DataFrame으로 리턴

 

 

train_data.iloc[0]

: == train_data.loc[100] 과 동일한 결과

 

 

train_data.iloc[[0, 100, 200, 2]]

: == train_data.loc[[100, 200, 300, 102]] 와 동일한 결과

 

 

 

- row, column 동시에 선택하기

loc, iloc 의 속성을 이용할 때 ','(콤마)를 이용하여 둘 다 명시 가능

train_data.loc[[986, 100, 110, 990], ['Survived', 'Age', 'Name']]

: []안에 리스트 전달 시 index의 리스트, column의 리스트 를 ','로 묶어 전달

 

 

train_data.iloc[[101, 100, 200, 102], [1, 4, 5]]

 

 

 


 

 

13. DataFrame 타입이해 - 07. DataFrame Boolean Selection으로 데이터 선택하기

 

- boolean selection으로 row 선택하기

numpy에서와 동일한 방식으로 해당 조건에 True인 row만을 선택

 

ex) train_data에서 30대이면서 1등석에 탄 사람 선택하기

# 1등석에 탄 사람
class_ = train_data['Pclass'] == 1

: True, False로 이루어진 Boolean Series로 반환

 

 

# 30대인 사람
age_ = (train_data['Age'] >= 30) & (train_data['Age'] < 40)

: 역시 Boolean Series, 이 때 여러 조건을 한 꺼번에 사용하고 싶다면 (조건1) & (조건2) 혹은 (조건1) | (조건2)

 

 

class_ & age_

: 두 Series 내의 데이터를 &(and)로 묶어 새로운 Boolean Series를 반환

 

 

train_data[class_ & age_]

: DataFrame의 [] 내에 column명(혹은 리스트)이 아닌 조건을 넣을 경우 True에 해당하는 index의 데이터들만 추출

 

 


 

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

반응형