자격증

[빅데이터분석기사 실기] 함수 모음집 - 유형 1

Suda_777 2024. 5. 28. 00:20
반응형

1. 시험 설명

  • 시험시간: 3시간 (180분)
  • 시험 유형 (총 6문제)
    • 제 1유형
      • 3문제 (각 10점, 총 30점)
      • 주제: 데이터 전처리
    • 제 2유형
      • 1문제 (40점)
      • 주제: 데이터 분석 (분류/회귀/비지도학습)
    • 제 3유형
      • 2문제 (각 15점, 30점)
      • 주제: 통계적 가설 검정

 

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유형

다음에 작성...

 

반응형