728x90
반응형
Setup
(1) Import libraries
import numpy as np
import scipy as sp
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
(2) load data
data = sns.load_dataset('diamonds')
data
Filtering the data
가격이 2600 이상인 데이터만 선택하자. 이때 reset_index()를 하지 않은 상태에서 비교를 할 것이다.
data_selected = data[data['price'] >= 2600]
data_selected
loc
Access a group of rows and columns by label(s) or a boolean array.
loc의 인덱스는 label 기반으로 동작한다.
row 인덱슨느 500:100, column 인덱스는 ['color', 'clarity', 'price']로 데이터를 필터링해보자.
data_selected.loc[50:100, ['color', 'clarity', 'price']]
결과를 보면, row index에 50:100 중 존재하는 경우인 [90:100]이 출력되는 것을 볼 수 있다.
따라서 label 기반 인덱싱인 loc는 시작과 끝이 모두 포함된다.
iloc
Purely integer-location based indexing for selection by position.
그냥 일반적인 파이썬 인덱싱과 동일하다. 2차원 행렬에 숫자 인덱스로 접근하는 방법이다.
data_selected.iloc[50:60, [1, 2, 6]]
data_selected의 row는 [50:60)이고 column 인덱스는 [1, 2, 6]번째를 필터링한 것이다.
숫자 인덱싱은 (프로그램의 전통을 따라) 0부터 시작한다. 파이썬 인덱싱과 동일하게 시작은 포함하되 끝은 포함하지 않는다.
data_selected의 (인덱싱 상) 50번째 row는 [140, Premium, G, 2766]이므로 저기부터 출력된다.
iloc는 numpy.array로 변환했을 때의 인덱싱과 완전히 동일하다.
array = data_selected.to_numpy()
array[50:60, [1, 2, 6]]
array([['Premium', 'G', 2766],
['Premium', 'G', 2766],
['Very Good', 'D', 2767],
['Very Good', 'F', 2767],
['Ideal', 'D', 2767],
['Good', 'H', 2767],
['Very Good', 'G', 2768],
['Very Good', 'D', 2768],
['Very Good', 'D', 2768],
['Ideal', 'E', 2768]], dtype=object)
728x90
반응형
'스터디 > 데이터사이언스' 카테고리의 다른 글
[Data Science] The classification and decision tree (0) | 2023.04.15 |
---|---|
Entropy의 의미 (정보이론) (0) | 2023.04.14 |
[Python] 선형회귀 모델링 (0) | 2023.04.12 |
[Python] 데이터 시각화 (Basic) (0) | 2023.04.11 |
[Pandas] Basic Statistics 살펴보기 (0) | 2023.04.10 |