728x90
데이터 다듬기 복습
1. 넘파이(Numpy) 배열 확인 및 연산
# 배열 정보 확인
ndim # 차원 확인
shape # 형태(크기) 확인
dtype # 요소 자료형 확인
# 배열 연산
np.add(x, y) # 배열 더하기
np.subtract(x, y) # 배열 빼기
np.multiply(x, y) # 배열 곱하기
np.divide(x, y) # 배열 나누기
np.power(x, y) # 배열 제곱
2. 판다스(Pandas) 데이터 프레임 함수
head() # 상위 데이터 확인
tail() # 하위 데이터 확인
shape # 데이터프레임 크기
index # 인덱스 정보 확인
values # 값 정보 확인
columns # 열 정보 확인
dtypes # 열 자료형 확인
info() # 각 열에 대한 요약 정보 확인
describe() # 요약 통계 확인
unique() # 열 고유값 확인
value_counts() # 열의 각 값의 빈도수 확인
3. 판다스(Pandas) 데이터 프레임 조회
특정 열 조회
- 데이터를 읽어온 후, df(데이터프레임).loc[: , [열 이름1, 열 이름2,...]] 형태로 조회할 열 이름을 리스트로 지정
- 조회할 열이 하나면 리스트 형태가 아니어도 됨
- 열 부분은 생략할 수 있었지만, 행 부분은 생략 불가능
- df[[열 이름1, 열이름2,...]] 형태로 인덱 생략이 일반적
# total_bill 열 조회
tip.loc[:, 'total_bill']
# tip, total_bill 열 조회
tip.loc[:,['tip', 'total_bill']]
열 범위 조회
- 범위 조회는 df.loc[:, 열 이름1:열 이름2] 형태로 조회
- 범위는 하나만 지정할 수 있어 리스트가 될 수 없으므로 대괄호 사용 X
- 범위 마지막 열도 조회 대상에 포함
# sex ~ time 열 조회
tip.loc[:, 'sex':'time']
조건으로 조회
- df.loc[조건] 형태로 조건을 지정해 조건에 만족하는 데이터만 조회할 수 있음
- 우선 조건이 제대로 판단이 되는지 확인 후 그 조건을 대괄호 안에 기입
1) 단일 조건 조회
# tip 열 값이 6.0 보다 큰 행 조회
tip.loc[tip['tip'] > 6.0, :]
# 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'),:]
# or로 여러 조건 연결 (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과 값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']]
인덱스 초기화
인덱스 초기화가 필요한 경우
- 기존 데이터프레임에서 일부 행을 가져와 새로 만든 데이터프레임
- 일부 행이 지워진 데이터 프레임
- 특히 0부터 시작하는 정수형 인덱스의 경우 초기화를 하는 것이 좋음
- reset_index() 메서드로 인덱스를 초기화합니다.
- 기존 인덱스 값은 의미가 없으므로 drop=True 옵션을 지정해 제거
- 실제 반영을 위해 inplace=True 옵션을 지정
4. 판다스(Pandas) 데이터 프레임 집계
- 대부분은 범주값을 기준으로 연속값의 합, 평균 등을 집계
- 가끔 범주값의 개수나 최빈값을 집계하기도 함
합 구하기
1) 집계하기
- as_index = True를 설정(기본값)하면 집계 기준이 되는 열이 인덱스 열이 됨
- as_index = False를 설정하면 행 번호를 기반으로 한 정수 값이 인덱스로 설정됨
- [['tip']].sum()으로 쓰면 열이 여러개라는 의미에서 결과가 데이터프레임이됨
# day별 tip 합계 --> 시리즈
tip.groupby(by = 'day', as_index = True)['tip'].sum()
# day별 tip 합계 --> 데이터프레임
tip_sum = tip.groupby(by='day', as_index=False)['tip'].sum()
2) 데이터프레임으로 선언
- 집계 결과를 새로운 데이터프레임으로 선언해 사용
- 집계된 결과를 반복해 사용하거나, 분석 대상이 되는 경우 데이터프레임으로 선언이 유익
# day별 tip 합계 조회
tip_sum = tip.groupby(by='day', as_index=False)[['tip']].sum()
# 확인
tip_sum
여러 열 집계
- [['total_bill', 'tip']].sum() 형태로 집계 대상 열을 리스트로 지정
- sum() 메서드 앞에 아무 열도 지정하지 않으면 기준열 이외의 모든 열에 대한 집계 수행
- numeric_only=True를 설정하면 숫자 열에 대해서만 집계
- by=['day', 'smoker']과 같이 집계 기준 열을 여러 개 설정할 수도 있음
# day별 total_bill, tip 합계 조회
tip_sum = tip.groupby(by='day', as_index = False)[['total_bill', 'tip']].sum()
# day별 나머지 열들 합계 조회
tip_sum = tip.groupby(by='day', as_index = False).sum(numeric_only = True)
# day + smoker별 나머지 열들 합계 조회
tip_sum = tip.groupby(by=['day','smoker'], as_index = False).sum(numeric_only = True)
평균, 최댓값, 최솟값, 개수 구하기
# 평균 구하기
tip_mean = tip.groupby(by='day', as_index=False)[['tip']].mean()
# 최댓값 구하기
tip_mean = tip.groupby(by='day', as_index=False)[['tip']].max()
# 최솟값 구하기
tip_mean = tip.groupby(by='day', as_index=False)[['tip']].min()
# 개수 구하기
tip_mean = tip.groupby(by='day', as_index=False)[['tip']].count()
728x90
'KT AIVLE > DX 복습' 카테고리의 다른 글
[KT AIVLE] DX트랙 데이터 수집(5주차) 복습(웹 크롤링, json, HTML, CSS) (2) | 2024.03.20 |
---|---|
[KT AIVLE] DX트랙 데이터 분석(4주차) 복습(가설검정, 이변량분석, T-Test, ANOVA, 카이제곱검정 ) (4) | 2024.03.16 |
[KT AIVLE] DX트랙 데이터 분석(4주차) 복습(데이터 분석 방법론, EDA&CDA, 시각화라이브러리, 단변량 분석, 숫자형·범주형 변수) (3) | 2024.03.12 |
[KT AIVLE] DX트랙 데이터 다듬기(3주차) 복습(판다스 데이터프레임 변경) (0) | 2024.03.10 |
[KT AIVLE] KT 에이블스쿨 5기 DX트랙 데이터 다루기(1~2주차) 복습 (1) | 2024.03.06 |