목차
반응형
1. 시험 설명
- 시험시간: 3시간 (180분)
- 시험 유형 (총 6문제)
- 제 1유형
- 3문제 (각 10점, 총 30점)
- 주제: 데이터 전처리
- 제 2유형
- 1문제 (40점)
- 주제: 데이터 분석 (분류/회귀/비지도학습)
- 제 3유형
- 2문제 (각 15점, 30점)
- 주제: 통계적 가설 검정
- 제 1유형
2. 제 1유형
2.0. 파이썬 (python)
abs(x) # x의 절댓값
round(x, ndigits) # x를 소수점 이하 ndigits 자리로 반올림
max(a, b, c, ...) # 입력값 중 최대값
min(a, b, c, ...) # 입력값 중 최소값
sum(iterable) # iterable의 모든 요소의 합
pow(x, y) # x의 y제곱 (x ** y와 동일)
divmod(x, y) # x를 y로 나눈 몫과 나머지를 튜플로 반환
# 내장 함수로 제공되는 통계 메소드
all(iterable) # iterable의 모든 요소가 참(True)인지 검사
any(iterable) # iterable의 하나 이상의 요소가 참(True)인지 검사
# 내장 함수로 제공되는 기타 메소드
enumerate(iterable, start=0) # iterable의 요소를 인덱스와 함께 반환
filter(function, iterable) # function의 조건을 만족하는 iterable의 요소를 반환
map(function, iterable) # function을 iterable의 모든 요소에 적용
zip(*iterables) # 여러 iterable의 요소를 병렬로 묶어서 반환
2.1. 판다스(Pandas)
- 데이터프레임 컬럼 형변환
# 형변환
df['컬럼이름'] = df['컬럼이름'].astype(str)
df['컬럼이름'] = df['컬럼이름'].astype(int)
df['컬럼이름'] = df['컬럼이름'].astype(float)
df['컬럼이름'] = df['컬럼이름'].astype(bool)
- groupby
# group by
df.groupby(by='컬럼이름').sum()
df.groupby(by='컬럼이름').mean()
df.groupby(by='컬럼이름').count() # NaN은 빼고 세어줌
df.groupby(by='컬럼이름').size() # NaN도 세어줌
df.groupby(by='컬럼이름').max()
df.groupby(by='컬럼이름').min()
df.groupby(by='컬럼이름').std()
df.groupby(by='컬럼이름').var()
df.groupby(by='컬럼이름').median() # 중앙값
df.groupby(by='컬럼이름').first()
df.groupby(by='컬럼이름').last()
# 사용자 정의 함수
df.groupby(by='컬럼이름').apply(lambda x: x.sum())
# 여러 연산을 동시에
df.groupby(by='컬럼이름').agg(['sum', 'mean', 'count'])
- 데이터프레임 다루기
# 데이터프레임 데이터 조작
df.drop('col1', axis=1) # 'col1' 컬럼 삭제
df.drop(0, axis=0) # 첫 번째 행 삭제
df.rename(columns={'col1': 'new_col1'}) # 컬럼명 변경
# 데이터프레임 결합
pd.concat([df1, df2]) # 데이터프레임 연결 (행 기준)
pd.concat([df1, df2], axis=1) # 데이터프레임 연결 (열 기준)
pd.merge(df1, df2, left_on='key', right_on='key', how='left') # 키를 기준으로 데이터프레임 병합
# 데이터프레임 결측치 처리
df.isna() # 결측치 여부를 불린 값으로 출력
df.dropna() # 결측치가 있는 행 제거
df.dropna(subset=['col1', 'col2']) # 'col1'과 'col2' 컬럼에서 결측치가 있는 행만 제거
df['컬럼이름'] = df['컬럼이름'].fillna(0)
df['컬럼이름'] = df['컬럼이름'].fillna(method='ffill')
df['컬럼이름'] = df['컬럼이름'].fillna(method='bfill')
# 데이터프레임 정렬
df.sort_values(by='col1') # 'col1' 컬럼 기준으로 정렬
df.sort_index() # 인덱스 기준으로 정렬
# 데이터프레임에서 중복 제거
df.drop_duplicates() # 중복 행 제거
df.drop_duplicates(subset=['col1']) # 'col1' 컬럼 기준으로 중복 행 제거
- 통계 연산
# 기본 통계 함수
df.mean() # 각 컬럼의 평균 계산
df.median() # 각 컬럼의 중앙값 계산
df.mode() # 각 컬럼의 최빈값 계산
df.std() # 각 컬럼의 표준편차 계산
df.var() # 각 컬럼의 분산 계산
df.min() # 각 컬럼의 최솟값 계산
df.max() # 각 컬럼의 최댓값 계산
# 누적 통계 함수
df.cumsum() # 각 컬럼의 누적합 계산
df.cumprod() # 각 컬럼의 누적곱 계산
df.cummax() # 각 컬럼의 누적 최댓값 계산
df.cummin() # 각 컬럼의 누적 최솟값 계산
# 상관관계 및 공분산
df.corr() # 컬럼 간의 상관계수 계산
df.corrwith(df2) # 다른 데이터프레임과의 상관계수 계산
df.cov() # 컬럼 간의 공분산 계산
# 데이터프레임 요약 통계
df.describe() # 데이터프레임의 통계 요약 정보 출력
# 특정 통계 연산
df['col1'].mean() # 특정 컬럼의 평균 계산
df['col1'].std() # 특정 컬럼의 표준편차 계산
df['col1'].quantile(0.25) # 특정 컬럼의 1사분위수 계산
df['col1'].quantile(0.5) # 특정 컬럼의 중앙값 (2사분위수) 계산
df['col1'].quantile(0.75) # 특정 컬럼의 3사분위수 계산
# 지수 이동 통계
df.rolling(window=3).mean() # 3개 행 기준 이동 평균 계산
df.rolling(window=3).sum() # 3개 행 기준 이동 합계 계산
df.ewm(span=3).mean() # 지수 가중 이동 평균 계산
# 변동성 측정
df.pct_change() # 각 행의 퍼센트 변화율 계산
df.diff() # 각 행의 차분 계산
- 시계열
# 단순 이동 평균 계산 (window=3, 이동거리)
df['SMA'] = df['value'].rolling(window=3).mean()
# 지수 가중 이동 평균 계산
# span: 가중치를 계산할 때 사용할 기간의 길이, 값이 작을수록 최근 데이터에 더 큰 가중치를 부여)
# adjust: 초기 값을 고려하여 가중치를 조정할지 여부를 결정
df['EMA'] = df['value'].ewm(span=3, adjust=False).mean()
print(df)
2.2. 넘파이 (Numpy)
- 연산
import numpy as np
# 기본 연산 함수
# 덧셈 및 뺄셈
np.add(x1, x2) # 요소별 덧셈
np.subtract(x1, x2) # 요소별 뺄셈
# 곱셈 및 나눗셈
np.multiply(x1, x2) # 요소별 곱셈
np.divide(x1, x2) # 요소별 나눗셈
np.dot(a, b) # 행렬 곱셈 또는 내적(dot product)
# 멱승 및 제곱근
np.power(x1, x2) # 요소별 멱승
np.sqrt(x) # 요소별 제곱근
# 절댓값 및 부호
np.abs(x) # 요소별 절댓값
np.sign(x) # 요소별 부호 (양수는 1, 음수는 -1, 0은 0)
# 통계 함수
# 최대값 및 최소값
np.max(a, axis=None) # 최대값
np.min(a, axis=None) # 최소값
# 합계 및 평균
np.sum(a, axis=None) # 합계
np.mean(a, axis=None) # 평균
# 중앙값 및 표준편차
np.median(a, axis=None) # 중앙값
np.std(a, axis=None) # 표준편차
np.var(a, axis=None) # 분산
# 누적 합계 및 누적 곱
np.cumsum(a, axis=None) # 누적 합계
np.cumprod(a, axis=None) # 누적 곱
# 기타 연산 함수
# 삼각 함수
np.sin(x) # 사인
np.cos(x) # 코사인
np.tan(x) # 탄젠트
# 역삼각 함수
np.arcsin(x) # 아크사인
np.arccos(x) # 아크코사인
np.arctan(x) # 아크탄젠트
# 지수 및 로그 함수
np.exp(x) # 자연 지수 함수 (e^x)
np.log(x) # 자연 로그
np.log10(x) # 상용 로그 (밑이 10)
np.log2(x) # 이진 로그 (밑이 2)
# 반올림 및 절사
np.round(x, decimals=0) # 소수점 반올림
np.floor(x) # 소수점 내림 (버림)
np.ceil(x) # 소수점 올림
# 배열 정렬 및 검색
np.sort(a, axis=-1) # 배열 정렬
np.argsort(a, axis=-1) # 정렬된 요소의 인덱스
np.argmax(a, axis=None) # 최대값의 인덱스
np.argmin(a, axis=None) # 최소값의 인덱스
2.3. Matplotlib
- 히스토그램
import matplotlib.pyplot as plt
# 히스토그램
plt.hist(df['수치형변수'])
plt.show()
- 박스플랏(botplot)
# 타겟이 0일때와 1일 때 비교
serise0 = df[df['타겟'] == 0]['수치형변수']
serise1 = df[df['타겟'] == 1]['수치형변수']
plt.boxplot(serise0, serise1)
plt.show()
2.4. scipy
import scipy.stats as ss
# 통계
ss.zscore(df['컬럼이름']) # z-score
ss.skew(df['컬럼이름']) # 왜도
ss.kurtosis(df['컬럼이름']) # 첨도
2.5. sklearn
- 스케일러
# 전처리 도구 모음
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 스케일러 사용
scaler = StandardScaler()
arr_data = scaler.fit_transform(df['컬럼이름'])
- 차원축소
from sklearn.decomposition import PCA
pca = PCA(n_components=3)
arr_data = pca.fit_transform(df) # np.array() 형태임
- 라벨인코더
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
df['A'] = encoder.fit_transform(df['A'])
- 원핫인코더
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(sparse=False)
encoded_data = encoder.fit_transform(df['A'])
columns = encoder.get_feature_names_out(['A'])
encoded_df = pd.DataFrame(encoded_data, columns=columns)
# 원본 데이터와 인코딩된 데이터를 합치기
result_df = pd.concat([df, encoded_df], axis=1)
endoded_df = pd.get_dummeies(df['A'])
df = pd.concat([df, endoded_df], axis=1)
3. 제 2유형
다음에 작성...
반응형
'자격증' 카테고리의 다른 글
[빅데이터분석기사 실기] 함수 모음집 - 유형 2 (0) | 2024.05.30 |
---|