목표 설정
- Pandas Cheat Sheet 에서 Sebset 부분 학습하기
- 학습 부분
Subset Observations - rows
Subset Variables - columns
Subsets - rows and columns
Indexing
- 데이터프레임(DataFrame) 에서 특정한 데이터만 골라내는 것을 인덱싱(indexing) 이라고 한다.
- 실습에 사용할 Dataset :
df = sns.load_dataset("mpg")
| mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | origin |
---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 | usa |
1 | 15.0 | 8 | 350.0 | 165.0 | 3693 | 11.5 | 70 | usa |
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 | usa |
3 | 16.0 | 8 | 304.0 | 150.0 | 3433 | 12.0 | 70 | usa |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 | usa |
행(row)
📍특정 조건에 맞는 행 가져오기
df[df.컬럼명 + 조건]
df[df.mpg > 16]
| mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | origin |
---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 | usa |
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 | usa |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 | usa |
📍중복 제거(drop_duplicates)
df.drop_duplicates(subset=[컬럼명], keep={'last' , 'first' 또는 False})
df.drop_duplicates(subset=['mpg', 'cylinders'])
| mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | origin |
---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 | usa |
1 | 15.0 | 8 | 350.0 | 165.0 | 3693 | 11.5 | 70 | usa |
3 | 16.0 | 8 | 304.0 | 150.0 | 3433 | 12.0 | 70 | usa |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 | usa |
- 알아두기
- 중복제거한 것은, 변수에 할당해주지않으면 저장이 안됨
- subset 에 넣어준 컬럼을 기준으로 중복 제거
- keep을 작성하지 않으면 중복제거 시, default 값인 'first' 첫 번째 요소를 남기고 나머지 제거
'first'
: 중복 시, 첫 번째 요소만 남기기
'last'
: 중복 시, 마지막 요소만 남기기
False
: 중복 시, 남김없이 제거
📍특정 데이터 불러오기
상위 n개 데이터 불러오기
df.head(n)
: n 작성안할 시, default 값인 5로 실행
하위 n개 데이터 불러오기
df.tail(n)
: n 작성안할 시, default 값인 5로 실행
n개 데이터 랜덤으로 불러오기
df.sample(n)
: n 작성안할 시, default 값인 1로 무작위로 데이터 반환
전체 데이터의 특정비율로 랜덤 데이터 불러오기
df.sample(frac=n)
: 0<=n<=1 로 작성 (0 입력 시, 데이터 반환X, 1 입력 시, 전체 데이터 반환)
특정 컬럼의 값이 가장 큰 데이터 n개 불러오기
df.nlargest(n, columns, keep='first')
: keep의 default가 'first'이고, 'first', 'last', 'all'을 사용할 수 있음
특정 컬럼의 값이 가장 작은 데이터 n개 불러오기
df.nsmallest(n, columns, keep='first')
: keep의 default가 'first'이고, 'first', 'last', 'all'
을 사용할 수 있음
열(column)
컬럼 선택하는 방법 : df[컬럼명] or df.컬럼명
📍특정 컬럼들만 뽑아오기
방법 1. df[[컬럼명1, 컬럼명2 ,...]]
방법 2. df.filter(regex='regex')
- 기본 구조
df.filter(items, like, regex, axis)
- 적용해 보기
df.filter(items=['mpg', 'horsepower', 'origin'])
| mpg | horsepower | origin |
---|
0 | 18.0 | 130.0 | usa |
1 | 15.0 | 165.0 | usa |
3 | 16.0 | 150.0 | usa |
4 | 17.0 | 140.0 | usa |
df.filter(regex='^mp', axis=1)
df.filter(like='del', axis=1)
행과 열(row and column)
📍위치로 데이터 뽑아오기
df.iloc[] : 행, 열 또는 행-열 불러올 수 있음
df.iloc[:3]
| mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | origin |
---|
0 | 18.0 | 8 | 307.0 | 130.0 | 3504 | 12.0 | 70 | usa |
1 | 15.0 | 8 | 350.0 | 165.0 | 3693 | 11.5 | 70 | usa |
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 | usa |
df.iloc[:, 1:5]
| cylinders | displacement | horsepower | weight |
---|
0 | 8 | 307.0 | 130.0 | 3504 |
1 | 8 | 350.0 | 165.0 | 3693 |
2 | 8 | 318.0 | 150.0 | 3436 |
3 | 8 | 304.0 | 150.0 | 3433 |
4 | 8 | 302.0 | 140.0 | 3449 |
df.iloc[:2, 1:5]
| cylinders | displacement | horsepower | weight |
---|
0 | 8 | 307.0 | 130.0 | 3504 |
1 | 8 | 350.0 | 165.0 | 3693 |
- 알아두기
df.head() => df.iloc[:5] 기능
df.tail() => df.iloc[-5:] 기능
📍label로 데이터 뽑아오기
- 레이블 : 단일 레이블(0 또는 'age'), list/array(['mpg', 'weight']), 슬라이스객체('mpg':'weight')
df.loc[] : 행, 열 또는 행-열 불러올 수 있음
df.loc[2:4]
| mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | origin |
---|
2 | 18.0 | 8 | 318.0 | 150.0 | 3436 | 11.0 | 70 | usa |
3 | 16.0 | 8 | 304.0 | 150.0 | 3433 | 12.0 | 70 | usa |
4 | 17.0 | 8 | 302.0 | 140.0 | 3449 | 10.5 | 70 | usa |
df.loc[0:2, "mpg"]
0 18.0
1 15.0
2 18.0
Name: mpg, dtype: float64
df.loc[0:2, ["mpg","cylinders"]]
| mpg | cylinders |
---|
0 | 18.0 | 8 |
1 | 15.0 | 8 |
2 | 18.0 | 8 |
- 알아두기
df.loc
는 조건식을 추가하여 특정 조건에 대한 데이터를 선택해올 수 있음
df.loc[df.mpg < 18, ["horsepower", "weight", "acceleration"]]
| horsepower | weight | acceleration |
---|
1 | 165.0 | 3693 | 11.5 |
3 | 150.0 | 3433 | 12.0 |
4 | 140.0 | 3449 | 10.5 |
참고문헌