범위선택
1
| df = pd.read_csv('korean-idol.csv')
|
1. 단일 column을 선택하는 방법
- df_name [ 'col_name ’ ]
- df_name [ "col_name " ]
- df_name .col_name
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
1995-12-30 |
178.0 |
AB |
8073501 |
4 |
화사 |
마마무 |
RBW |
여자 |
1995-07-23 |
162.1 |
A |
7650928 |
0 지민
1 지드래곤
2 강다니엘
3 뷔
4 화사
5 정국
6 민현
7 소연
8 진
9 하성운
10 태연
11 차은우
12 백호
13 JR
14 슈가
Name: 이름, dtype: object
2. index & column 범위 선택 (range selection)
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
1995-12-30 |
178.0 |
AB |
8073501 |
4 |
화사 |
마마무 |
RBW |
여자 |
1995-07-23 |
162.1 |
A |
7650928 |
5 |
정국 |
방탄소년단 |
빅히트 |
남자 |
1997-09-01 |
178.0 |
A |
5208335 |
6 |
민현 |
뉴이스트 |
플레디스 |
남자 |
1995-08-09 |
182.3 |
O |
4989792 |
7 |
소연 |
아이들 |
큐브 |
여자 |
1998-08-26 |
NaN |
B |
4668615 |
8 |
진 |
방탄소년단 |
빅히트 |
남자 |
1992-12-04 |
179.2 |
O |
4570308 |
9 |
하성운 |
핫샷 |
스타크루이엔티 |
남자 |
1994-03-22 |
167.1 |
A |
4036489 |
10 |
태연 |
소녀시대 |
SM |
여자 |
1989-03-09 |
NaN |
A |
3918661 |
11 |
차은우 |
아스트로 |
판타지오 |
남자 |
1997-03-30 |
183.0 |
B |
3506027 |
12 |
백호 |
뉴이스트 |
플레디스 |
남자 |
1995-07-21 |
175.0 |
AB |
3301654 |
13 |
JR |
뉴이스트 |
플레디스 |
남자 |
1995-06-08 |
176.0 |
O |
3274137 |
14 |
슈가 |
방탄소년단 |
빅히트 |
남자 |
1993-03-09 |
174.0 |
O |
2925442 |
2-1. 단순 index에 대한 범위 선택
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
2-2. index & column 범위선택 – loc
df_name .loc [행(index) 범위, (열)column 범위]
-
행 범위는
“:”
“:b”
“a:b”
등 형식을 사용
-
열 범위는
'column name ’
['column name1 ', 'column name2 ']
'column name1 ’ : 'column name2 ’
등 형식을 사용
주의:
- pandas의 loc에서 범위 a : b는 index a & index b 모두 포함
- numpy에서는 index a 포함, index b 미포함
0 지민
1 지드래곤
2 강다니엘
3 뷔
4 화사
5 정국
6 민현
7 소연
8 진
9 하성운
10 태연
11 차은우
12 백호
13 JR
14 슈가
Name: 이름, dtype: object
1
| df.loc[:, ['이름', '생년월일']]
|
|
이름 |
생년월일 |
0 |
지민 |
1995-10-13 |
1 |
지드래곤 |
1988-08-18 |
2 |
강다니엘 |
1996-12-10 |
3 |
뷔 |
1995-12-30 |
4 |
화사 |
1995-07-23 |
5 |
정국 |
1997-09-01 |
6 |
민현 |
1995-08-09 |
7 |
소연 |
1998-08-26 |
8 |
진 |
1992-12-04 |
9 |
하성운 |
1994-03-22 |
10 |
태연 |
1989-03-09 |
11 |
차은우 |
1997-03-30 |
12 |
백호 |
1995-07-21 |
13 |
JR |
1995-06-08 |
14 |
슈가 |
1993-03-09 |
1
| df.loc[3:8, ['이름', '생년월일']]
|
|
이름 |
생년월일 |
3 |
뷔 |
1995-12-30 |
4 |
화사 |
1995-07-23 |
5 |
정국 |
1997-09-01 |
6 |
민현 |
1995-08-09 |
7 |
소연 |
1998-08-26 |
8 |
진 |
1992-12-04 |
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
1995-12-30 |
178.0 |
AB |
8073501 |
4 |
화사 |
마마무 |
RBW |
여자 |
1995-07-23 |
162.1 |
A |
7650928 |
1
| df.loc[2:5, '이름':'생년월일']
|
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
1995-12-30 |
4 |
화사 |
마마무 |
RBW |
여자 |
1995-07-23 |
5 |
정국 |
방탄소년단 |
빅히트 |
남자 |
1997-09-01 |
2-3. index & column 범위선택 – iloc (position으로 색인)
행(index) 범위 선택은 loc와 동일
열(column) 범위는 'column 명’대신 column position을 사용
주의:
- pandas의 iloc에서 범위 a : b는 index a 포함, index b 미포함 (numpy와 동일)
- pandas의 loc에서 범위 a : b는 index a & index b 모두 포함
|
이름 |
소속사 |
0 |
지민 |
빅히트 |
1 |
지드래곤 |
YG |
2 |
강다니엘 |
커넥트 |
3 |
뷔 |
빅히트 |
4 |
화사 |
RBW |
5 |
정국 |
빅히트 |
6 |
민현 |
플레디스 |
7 |
소연 |
큐브 |
8 |
진 |
빅히트 |
9 |
하성운 |
스타크루이엔티 |
10 |
태연 |
SM |
11 |
차은우 |
판타지오 |
12 |
백호 |
플레디스 |
13 |
JR |
플레디스 |
14 |
슈가 |
빅히트 |
|
이름 |
소속사 |
1 |
지드래곤 |
YG |
2 |
강다니엘 |
커넥트 |
3 |
뷔 |
빅히트 |
4 |
화사 |
RBW |
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
1995-12-30 |
178.0 |
AB |
8073501 |
4 |
화사 |
마마무 |
RBW |
여자 |
1995-07-23 |
162.1 |
A |
7650928 |
|
이름 |
그룹 |
소속사 |
성별 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
4 |
화사 |
마마무 |
RBW |
여자 |
3. index & column 조건범위선택 – Boolean Indexing
Boolean indexing은 Numpy에서의 Boolean indexing과 같은 원리다
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
0 |
지민 |
방탄소년단 |
빅히트 |
남자 |
1995-10-13 |
173.6 |
A |
10523260 |
1 |
지드래곤 |
빅뱅 |
YG |
남자 |
1988-08-18 |
177.0 |
A |
9916947 |
2 |
강다니엘 |
NaN |
커넥트 |
남자 |
1996-12-10 |
180.0 |
A |
8273745 |
3 |
뷔 |
방탄소년단 |
빅히트 |
남자 |
1995-12-30 |
178.0 |
AB |
8073501 |
4 |
화사 |
마마무 |
RBW |
여자 |
1995-07-23 |
162.1 |
A |
7650928 |
3-1. 조건에 만족한 row들의 모든 column을 추출
df [조건 ]
0 False
1 False
2 False
3 False
4 False
5 False
6 True
7 False
8 False
9 False
10 False
11 True
12 False
13 False
14 False
Name: 키, dtype: bool
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
6 |
민현 |
뉴이스트 |
플레디스 |
남자 |
1995-08-09 |
182.3 |
O |
4989792 |
11 |
차은우 |
아스트로 |
판타지오 |
남자 |
1997-03-30 |
183.0 |
B |
3506027 |
3-2. 조건에 만족한 row들의 특정 column들을 추출
방법 1. df_name [조건 ] [column범위 ]
1
| df[ df['키'] > 180 ] ['이름']
|
6 민현
11 차은우
Name: 이름, dtype: object
1
| df [ df['키'] > 180 ] [['이름', '키']]
|
|
이름 |
키 |
6 |
민현 |
182.3 |
11 |
차은우 |
183.0 |
방법 2. loc를 활용: df_name.loc[ 조건 , column범위 ] 【추천】
1
| df.loc[ df['키'] > 180, '이름' ]
|
6 민현
11 차은우
Name: 이름, dtype: object
1
| df.loc[ df['키'] > 180, ['이름', '그룹'] ]
|
|
이름 |
그룹 |
6 |
민현 |
뉴이스트 |
11 |
차은우 |
아스트로 |
1
| df.loc[ df['키'] > 180, '이름' : '성별']
|
|
이름 |
그룹 |
소속사 |
성별 |
6 |
민현 |
뉴이스트 |
플레디스 |
남자 |
11 |
차은우 |
아스트로 |
판타지오 |
남자 |
4. index & column 조건범위선택 – inis을 활용란 색인
column값이 미리 정의한 list에 속한다는 조건을 걸고자 할 때 사용한다
1
| my_condition = ['플레디스', 'SM']
|
1
| df['소속사'].isin(my_condition)
|
0 False
1 False
2 False
3 False
4 False
5 False
6 True
7 False
8 False
9 False
10 True
11 False
12 True
13 True
14 False
Name: 소속사, dtype: bool
1
| df.loc[ df['소속사'].isin(my_condition) ]
|
|
이름 |
그룹 |
소속사 |
성별 |
생년월일 |
키 |
혈액형 |
브랜드평판지수 |
6 |
민현 |
뉴이스트 |
플레디스 |
남자 |
1995-08-09 |
182.3 |
O |
4989792 |
10 |
태연 |
소녀시대 |
SM |
여자 |
1989-03-09 |
NaN |
A |
3918661 |
12 |
백호 |
뉴이스트 |
플레디스 |
남자 |
1995-07-21 |
175.0 |
AB |
3301654 |
13 |
JR |
뉴이스트 |
플레디스 |
남자 |
1995-06-08 |
176.0 |
O |
3274137 |
1
| df.loc[ df['소속사'].isin(my_condition) , ['이름', '소속사'] ]
|
|
이름 |
소속사 |
6 |
민현 |
플레디스 |
10 |
태연 |
SM |
12 |
백호 |
플레디스 |
13 |
JR |
플레디스 |