- 데이터프레임을 대상으로 조회하는 방법은 다양하지만,
그 중 한 가지 방법을 선택해 일관되게 사용하는 것이 좋다.
※ 라이브러리 호출: 데이터프레임 작업 시엔 무조건 해준다.
# 라이브러리 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
3.1. 데이터 읽어오기
# 데이터 읽어오기
path = 'csv파일 url'
tip = pd.read_csv(path)
# 확인
# tip[:5]
tip.head()
예시)
※ shape, info(), describe() 등을 활용해 데이터를 잘 불러왔는지 꼭 확인해본다.
3.2. 특정 열 조회
- df.loc[ : , [열 이름1, 열 이름2,...]] 형태로 조회할 열 이름을 리스트로 지정
- 조회할 열이 하나면 리스트 형태가 아니어도 된다.
- 열 부분은 생략할 수 있었지만, 행 부분을 생략할 수는 없다.
- df[[열 이름1, 열 이름2,...]] 형태로 인덱서를 생략하는 것이 일반적
# total_bill 열 조회
tip.loc[:, 'total_bill']
# tip['total_bill'] # 생략하려면 이렇게 쓴다.
---
# 출력
# 0 16.99
# 1 10.34
# 2 21.01
# ...
# 241 22.67
# 242 17.82
# 243 18.78
# Name: total_bill, Length: 244, dtype: float64
# 여러 열 조회
tip.loc[:, ['tip', 'total_bill']]
# tip[['tip', 'total_bill']] # 생략하려면 이렇게 쓴다.
3.3. 열 범위 조회
- 범위 조회는 df.loc[:, 열 이름1:열 이름2] 형태로 조회한다.
- 범위는 하나만 지정할 수 있어 리스트가 될 수 없으니 대괄호를 사용하지 않는다.
- 범위 마지막 열도 조회 대상에 포함된다.
- 범위 검색 시에는 생략을 해서는 안된다.
1) loc: 열 이름으로 조회(인간 친화적 방식)
# sex ~ time 열 조회
tip.loc[:, 'sex':'time'].head()
예시)
2) iloc: 열 순서(~번 째 열)로 조회(언어 친화적 방식)
# 2번째 열 ~ 5번째 열 조회
tip.iloc[:, 2:6].head()
예시)
※ 행 조회
# 행 조회 #1
tip.loc[0:4, :]
예시)
# 행 조회 #2
tip.iloc[0:4, :]
예시)
3.4. 조건으로 조회
- df.loc[조건] 형태로 조건을 지정해 조건에 만족하는 데이터만 조회할 수 있다.
- 조건이 제대로 판단이 되는지 확인 후 그 조건을 대괄호 안에 입력
1) 단일 조건 조회
# tip 열 값이 6.0 보다 큰 행 조회
tip.loc[tip['tip'] > 6.0]
# 조건을 변수로 선언해 사용하는 것도 가능
cond = tip['tip'] > 6.0
tip.loc[cond]
2) 여러 조건 조회
- [ ]안에 조건을 여러개 연결할 때 and와 or 대신에 &와 |를 사용한다.
- 각 조건들은 (조건1) & (조건2) 형태로 괄호로 묶어준다.
# and로 여러 조건 연결 (tip > 6.0 and day == Sat)
tip.loc[(tip['tip'] > 6.0) & (tip['day'] == 'Sat')]
# and로 여러 조건 연결 (tip > 6.0 or day == Sat)
tip.loc[(tip['tip'] > 6.0) | (tip['day'] == 'Sat')]
3) 편리한 isin(), between() 메서드
- isin([값1, 값2,..., 값n]): 값1 또는 값2 또는...값n인 데이터만 조회
# 값 나열 (day가 Sat 또는 Sun)
tip.loc[tip['day'].isin(['Sat', 'Sun'])]
# 위 구문은 다음과 같은 의미이다. (or 조건)
tip.loc[(tip['day'] == 'Sat') | (tip['day'] == 'Sun')]
- between(값1, 값2): 값1 ~ 값2까지 범위안의 데이터만 조회
# 범위 지정 ( 1 <= size <= 3)
tip.loc[tip['size'].between(1, 3)]
# 위 구문은 다음과 같은 의미이다. (and 조건)
tip.loc[(tip['size'] >= 1) & (tip['size'] <= 3)]
4) 조건을 만족하는 행의 일부 열 조회
- df.loc[조건, ['열 이름1', '열 이름2',...]] 형태로 조회할 열을 리스트로 지정
# 조건에 맞는 하나의 열 조회
tip.loc[tip['size'] >= 5, ['tip']]
# 조건에 맞는 여러 열 조회
tip.loc[tip['size'] >= 5, ['total_bill', 'tip', 'size']]
3.5. 인덱스 초기화
- 다음과 같은 경우 인덱스 초기화가 필요하다.
- 기존 데이터프레임에서 일부 행을 가져와 새로 만든 데이터프레임
- 일부 행이 지워진 데이터프레임
- 특히 0부터 시작하는 정수형 인덱스의 경우 초기화를 하는 것이 좋다.
- 깔끔한 데이터가 사용하기 좋은 데이터
- reset_index() 메서드로 인덱스 초기화
- 기존 인덱스 값은 의미가 없으므로 drop=True 옵션을 지정해 제거
- inplace=True 옵션을 지정하지 않으면 실제 반영되지 않는다.
# tip 열이 6 이상인 행 축출
good = tip.loc[tip['tip'] >= 6, :]
# 인덱스 초기화
good = good.reset_index(drop=True)
# good.reset_index(drop=True, inplace=True)
# 확인
good
'에이블스쿨 6기 DX 트랙 > 일일 복습' 카테고리의 다른 글
성능 평가 (0) | 2024.10.17 |
---|---|
데이터 분석 - 이변량: 범주 vs 숫자 (0) | 2024.10.04 |
DAY 07. 데이터프레임 탐색 (0) | 2024.09.18 |
DAY 07. 데이터프레임 생성 (3) | 2024.09.18 |
DAY 07. 넘파이 기초 (1) | 2024.09.18 |