반응형
ChatGPT로 Python pandas 알아보기 (3):데이터 선택 및 필터링
1. Column 선택하기
1.1 단일 Column 선택
대괄호([])와 Column 이름 사용한다.
name = df['이름']
DataFrame.ColumnName 형식으로도 사용이 가능하다.
name = df.이름
1.2 다중 Columns 선택
대괄호 안에 리스트로 Column 이름들을 넣어서 선택할 수 있다.
subset = df[['이름', '나이']]
2. Row 선택하기
2.1 loc 사용
loc 메서드는 레이블(label)을 기반으로 데이터를 선택할 수 있다.
레이블은 인덱스 라벨을 의미하며, 숫자가 아닐 수도 있다.
loc 메서드를 사용하여 행을 선택할 때는 인덱스 라벨을 사용한다.
현재 샘플 데이터상에서는 index의 레이블이 없어서 index로 출력해볼 수 있다.
레이블은 인덱스 라벨을 의미하며, 숫자가 아닐 수도 있다.
loc 메서드를 사용하여 행을 선택할 때는 인덱스 라벨을 사용한다.
현재 샘플 데이터상에서는 index의 레이블이 없어서 index로 출력해볼 수 있다.
row = df.loc[2]
rows = df.loc[1:3]
만약 데이터프레임에 index를 이름으로 주고 하게 된다면, 아래처럼 사용할 수 있다.
new_df = df.set_index('이름')
new_df.loc['철수']
만약 인덱스가 '철수'인 데이터부터 '민수'인 데이터까지 출력하고자 한다면,
new_df.loc['철수':'민수']
2.2 iloc 사용
iloc 메서드는 정수 기반의 위치 인덱싱(integer-location based indexing)을 사용한다.
즉, 행의 위치(0부터 시작하는 정수)를 기반으로 데이터를 선택한다.
즉, 행의 위치(0부터 시작하는 정수)를 기반으로 데이터를 선택한다.
row = df.iloc[2]
rows = df.iloc[1:3]
3. Column과 Row 동시 선택
loc 또는 iloc를 사용하여 Column과 Row를 동시에 선택할 수 있다.
selected = df.loc[1:3, ['이름', '나이']]
selected = df.iloc[1:3, 0:2]
4. 조건에 따른 필터링
Bollean 인덱싱을 활용하여 특정 조건을 만족하는 데이터만 선택할 수 있다.
above_25 = df[df['나이'] >= 25]
in_seoul = df[df['도시'] == '서울']
above_25_in_seoul = df[(df['나이'] >= 25) & (df['도시'] == '서울')]
✔ 논리 연산자 (오퍼레이터)
비교 연산자
== | 동등 비교 |
!= | 부등 비교 |
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
논리 연산자
& | AND 연산 |
| | OR 연산 |
~ | NOT 연산 |
pandas에서는 여러 조건을 조합할 때 일반적인 논리 연산자 and, or 대신 &, |를 사용해야 한다.
이 때 괄호를 사용하여 조건을 명확히 해야 한다.
이 때 괄호를 사용하여 조건을 명확히 해야 한다.
# 올바른 사용 예
filtered_data = df[(df['나이'] > 30) & (df['도시'] == '서울')]
# 잘못된 사용 예 (조건마다 소괄호 사용해야함)
filtered_data = df[df['나이'] > 30 and df['도시'] == '서울']
이상으로 pandas에서의 데이터프레임의 데이터 선택 및 필터링에 대해 살펴보았다.
간단한 예시와 기본적인 내용만 학습을 했는데, 다음에는 필터링을 위한 몇 가지 메서드에 대해서 한번 알아볼까 한다.
pandas를 처음 배웠을 때 여러 조건을 추가해서 필터링을 거는데 소괄호를 꼭 해야 한다는 사실을 몰라서 한참 헤맨 적이 있다.
그때도 이렇게 공부를 했더라면... 그렇게 시간을 버리진 않았을 텐데... 😐
간단한 예시와 기본적인 내용만 학습을 했는데, 다음에는 필터링을 위한 몇 가지 메서드에 대해서 한번 알아볼까 한다.
pandas를 처음 배웠을 때 여러 조건을 추가해서 필터링을 거는데 소괄호를 꼭 해야 한다는 사실을 몰라서 한참 헤맨 적이 있다.
그때도 이렇게 공부를 했더라면... 그렇게 시간을 버리진 않았을 텐데... 😐
반응형
'Python > Pandas' 카테고리의 다른 글
ChatGPT로 Python pandas 알아보기 (6):데이터 그룹화 및 집계 (0) | 2023.06.12 |
---|---|
ChatGPT로 Python pandas 알아보기 (5):데이터 정렬 (4) | 2023.06.11 |
ChatGPT로 Python pandas 알아보기 (4):DataFrame method (3) | 2023.06.10 |
ChatGPT로 Python pandas 알아보기 (2):데이터 불러오기/저장하기 (5) | 2023.06.08 |
ChatGPT로 Python pandas 알아보기 (1):소개/데이터 구조 (4) | 2023.06.07 |
역시 ChatGPT의 플러그인인 Noteable을 함께 사용했으며, 간단한 샘플 코드와 함께 알아보자.
우선 샘플 데이터로 사용할 데이터프레임은 아래와 같다.