<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
'코딩 > 머신러닝&데이터 분석 강의' 카테고리의 다른 글
[머신러닝 인강] 13-1주차: Pandas DataFrame 숫자 데이터, 범주형 데이터, 데이터의 전처리 (0) | 2021.05.10 |
---|---|
[머신러닝 인강] 12-2주차: Pandas DataFrame 새 컬럼 추가/삭제, 상관관계 계산, NaN 데이터 처리 (0) | 2021.05.09 |
[머신러닝 인강] 11-2주차: Pandas DataFrame 의 이해 (0) | 2021.05.01 |
[머신러닝 인강] 11-1주차: Series 연산, boolean selection, 슬라이싱 (0) | 2021.04.27 |
[머신러닝 인강] 10-2주차: Pandas, Series의 이해 (0) | 2021.04.24 |