2 Sat

TIL

[인프런] 단 두 장의 문서로 데이터 분석과 시각화 뽀개기

일부 컬럼을 기준으로 데이터 가져오기 - Subset Variables (Columns)

import seaborn as sns
df = sns.load_dataset("iris")
df.head()

sepal_length

sepal_width

petal_length

petal_width

species

0

5.1

3.5

1.4

0.2

setosa

1

4.9

3.0

1.4

0.2

setosa

2

4.7

3.2

1.3

0.2

setosa

3

4.6

3.1

1.5

0.2

setosa

4

5.0

3.6

1.4

0.2

setosa

columns = ['sepal_length', 'sepal_width', 'species']
df[columns].head()

sepal_length

sepal_width

species

0

5.1

3.5

setosa

1

4.9

3.0

setosa

2

4.7

3.2

setosa

3

4.6

3.1

setosa

4

5.0

3.6

setosa

df['sepal_width'].head()
0    3.5
1    3.0
2    3.2
3    3.1
4    3.6
Name: sepal_width, dtype: float64
df.sepal_width.head()
0    3.5
1    3.0
2    3.2
3    3.1
4    3.6
Name: sepal_width, dtype: float64
df.filter(regex='regex').head(5)

0

1

2

3

4

현재는 조건이 없어서 인덱스만 추출

df.filter(regex='\.').head(5)

0

1

2

3

4

'.' 이 들어간 column을 추출한다. 이 때는 '.'이 들어간 column이 없다. 또한 '.'은 정규식에서 다른 의미로도 쓰이기 때문에 \. 로 사용한다.

df.filter(regex='_').head(5)

sepal_length

sepal_width

petal_length

petal_width

0

5.1

3.5

1.4

0.2

1

4.9

3.0

1.4

0.2

2

4.7

3.2

1.3

0.2

3

4.6

3.1

1.5

0.2

4

5.0

3.6

1.4

0.2

df.filter(regex='length$').head(5)

sepal_length

petal_length

0

5.1

1.4

1

4.9

1.4

2

4.7

1.3

3

4.6

1.5

4

5.0

1.4

$가 뒤에오면 특정 문자로 끝나는 결과만 추출한다.

df.filter(regex='^sepal').head(5)

sepal_length

sepal_width

0

5.1

3.5

1

4.9

3.0

2

4.7

3.2

3

4.6

3.1

4

5.0

3.6

^가 앞에오면 특정 문자로 시작하는 결과만 추출한다.

df.filter(regex='^(?!Species$).*').head(5)

sepal_length

sepal_width

petal_length

petal_width

species

0

5.1

3.5

1.4

0.2

setosa

1

4.9

3.0

1.4

0.2

setosa

2

4.7

3.2

1.3

0.2

setosa

3

4.6

3.1

1.5

0.2

setosa

4

5.0

3.6

1.4

0.2

setosa

loc를 이용해서 범위 설정을 할 수 있다.

df.loc[2:5, 'sepal_width':'petal_width']

sepal_width

petal_length

petal_width

2

3.2

1.3

0.2

3

3.1

1.5

0.2

4

3.6

1.4

0.2

5

3.9

1.7

0.4

df.iloc[-5:, [1,2,4]]

sepal_width

petal_length

species

145

3.0

5.2

virginica

146

2.5

5.0

virginica

147

3.0

5.2

virginica

148

3.4

5.4

virginica

149

3.0

5.1

virginica

df.loc[df['sepal_length'] > 5], ['sepal_length','sepal_width']
(     sepal_length  sepal_width  petal_length  petal_width    species
 0             5.1          3.5           1.4          0.2     setosa
 5             5.4          3.9           1.7          0.4     setosa
 10            5.4          3.7           1.5          0.2     setosa
 14            5.8          4.0           1.2          0.2     setosa
 15            5.7          4.4           1.5          0.4     setosa
 ..            ...          ...           ...          ...        ...
 145           6.7          3.0           5.2          2.3  virginica
 146           6.3          2.5           5.0          1.9  virginica
 147           6.5          3.0           5.2          2.0  virginica
 148           6.2          3.4           5.4          2.3  virginica
 149           5.9          3.0           5.1          1.8  virginica
 
 [118 rows x 5 columns],
 ['sepal_length', 'sepal_width'])

Last updated

Was this helpful?