본문 바로가기

자격증공부/빅데이터분석기사

[빅데이터분석기사] 작업형1 판다스 문법 활용 요약

320x100

빅데이터분석기사

 

1. 라이브러리 및 데이터 읽어오기

 ㅇ 컬럼명 확인할 수 있도록 세팅하기

import pandas as pd
df = pd.read_csv('ㅇㅇㅇㅇ.csv')

pd.set_option('display.max_columns', None) #컬럼명 전부 확인할 수 있도록 셋팅하기

 

2. 데이터 탐색(EDA)

 # print문으로 확인하고, 나중에 주석처리하기

ㅇ 데이터 샘플 확인하기 : df.head() / df.tail(n)

ㅇ 데이터프레임 크기(행/열) 확인 : df.shape

ㅇ 컬럼별 데이터타입 확인 : df.info()

ㅇ 기초통계 확인 : df.describe()

ㅇ 데이터 항목 종류 확인

 - 컬럼별 종류 수 : 변수명.nunique()

 - 컬럼별 항목 종류 : 변수명['컬럼명'].unique()

ㅇ 데이터 빈도수 : df.value_counts

 

반응형

 

3. 문제 풀고 출력하기(print)

ㅇ 80% 데이터 활용하기 : df 총 길이의 80%를 변수에 넣어서 iloc로 변수 만큼 데이터 선택

 - a행부터 b행까지 데이터 선택 : iloc[a:b]

a = int(len(df)*0.8)
#type(a) 정수형
df = df.iloc[:a]
#print(df.shape)


# 80% 데이터 활용
df = df.iloc[:int(len(df)*0.8)]
# print(df.shape)

ㅇ 특정 컬럼 기준으로 정렬 후 n번째 데이터 선택하기/값 대체하기

 - 데이터 정렬하기 : df.sort_values('컬럼명', ascending = True/False)  # True는 오름차순 / False는 내림차순

 - 데이터 정렬 후 index번호 새로하기 : df.reset_index()

 - 특정 컬럼의 n번째 값 선택 : df['컬럼명'].iloc[n-1]  # iloc[행 범위, 열 범위]

# views 컬럼 기준으로 내림차순 정렬 후 상위 10번째 값 찾기
df = df.sort_values('veiws', ascending=False)
min_value = df['views'].iloc[9]
# print(min_value)

# views 컬럼 상위 10개값을 위에서 찾은 값으로 대체하기
df.iloc[:10,-1] = min_value
# df.head(12)

ㅇ 특정 조건을 만족하는 데이터 출력하기

 - 조건을 cond에 정의하고 만족하는 값 출력 : print(df[cond])

 # age 컬럼이 80 이상인 데이터의 views 컬럼 평균 값 구하기 
 cond = df['age'] >=80
 print(df[cond]['views'].mean())

ㅇ 결측치 확인 및 처리

 - 결측치 확인 및 값 채우기 : df.isnull().sum() // df.fillna(값)

 - 결측치 제거 : df.dropna() # 값 삭제 전/후로 shape 등을 활용해 데이터 출력해보기

# f1 컬럼 표준편차 구하기(전)
std1 = df['f1'].std()
# print(std1)

# f1컬럼 결측치 확인 및 중앙값으로 채우기
# df.isnull().sum()
med = df['f1'].median()
df['f1']=df['f1'].isnull().fillna(med)

# f1컬럼 표준편차 구하기(후)
std2 = df['f1'].std()
# print(std2)

# 두 표준편차 차이 절대값 구하기
print(abs(std1-std2))

# 결측치 데이터(행) 제거 : dropna()
# print(df.isnull().sum())
# print(df.shape)
df = df.dropna()
# print(df.isnull().sum())
# print(df.shape)

ㅇ IQR 활용한 이상값 정의

 - IQR : 평균+-1.5*표준편차

# 평균, 표준편차*1.5 값 구하기
m = df['age'].mean()
s = df['age'].std()*1.5
# print(m, s)

# 이상치 최소, 최대값 정의하기
lower = m-s
upper = m+s
# print(lower, upper)

# age 컬럼의 이상치 구해서 더하기
cond1 = df['age'] <= lower
cond2 = df['age'] >= upper

# df[cond1|cond2]
print(df[cond1|cond2]['age'].sum())

ㅇ f1 컬럼의 1사분위 값 구하기 : df['컬럼명'].quantile(.25)

print(df['f1'].quantile(.25))

ㅇ 데이터 선택하기

 - df.loc[행, 열]

 - df 행/열 바꾸기 : df.T

# 2000년도 데이터 행 선택
# 2000년도 평균 및 평균보다 큰 값 데이터 수 구하기

# 방법1
m = df.loc[2000].mean()
print(sum(df.loc[2000,:] > m))

# 방법2 : 행/열 데이터 바꾸기 df.T
df = df.T
m = df[2000].mean()
print(sum(df[2000] > m))

 

ㅇ 소수점 처리

import numpy as np

올림 : np.ceil()  / 내림 : np.floor()  / 버림 : np.trunc()

소수점 출력 : numpy 불필요, round(값, 출력할 자리수)

import numpy as np
# 올림
m_ceil = np.ceil(df['age']).mean()
# 내림
m_floor = np.floor(df['age']).mean()
# 버림
m_trunc = np.trunc(df['age']).mean()
320x100

 

********** 판다스 기초 문법 *********

ㅇ 데이터프레임 만들기 : pd.DataFrame({"컬럼명":데이터})

 

<데이터 선택/출력>

ㅇ 컬럼 선택 : df[['컬럼1', '컬럼2']]

 - 수치형 변수를 가진 컬럼 출력 : df.select_dtypes(exclude = object).columns

 - 범주형 변수를 가진 컬럼 출력 : df.select_dtypes(include = object).coumns

ㅇ 컬럼명 출력 : df.columns

ㅇ 인덱스 출력 : df.index

ㅇ 소수점 자리수(반올림) : round(df['변수명'], 자릿수(0,1,2...))

ㅇ 데이터프레임에서 특정 행 선택

 - loc[인덱스 명]

 - iloc[인덱스 번호]

ㅇ 데이터프레임에서 특정 열 선택

 - loc[인덱스 명, 컬럼명] 

 - iloc[인덱스 번호, 컬럼 번호] # 인덱스 번호로 기재되는 번호 데이터는 포함하지 않고 출력됨 # 범위가 될 수도 있기 때문에 a:b // 전체 데이터 선택 시 :

ㅇ 짝수번째 컬럼만 포함하는 데이터프레임 : df.iloc[:,:,2]

ㅇ 한 셀의 데이터 중 a:b번째 text까지 선택 : str[a:b]

 

<자료형 변환>

ㅇ 자료형 변환 : df['컬럼명'] = df['컬럼명'].astype('변환할 자료형')

ㅇ 날짜형식 데이터 타입으로 변경 : df['컬럼명' = pd.to_datetime(df['컬럼명']) / df['컬럼명'].dt.year/month

 

<데이터 삭제>

ㅇ df = df.drop('컬럼명', 행(0)/열(1) 방향)

ㅇ 결측치 데이터 행 삭제 : df.dropna()

ㅇ 특정 컬럼에 결측치가 있는 경우 행 삭제 : df.dropna(subset=['컬럼명'])

ㅇ 중복데이터 삭제

 - 첫번쨰 데이터 남기기 : df.drop_duplicates('컬럼명') 

 - 마지막 데이터 남기기 : df.drop_duplicates('컬럼명', keep='last')

 

<csv파일로 저장하기>

ㅇ df.to_csv('파일명.csv', index=False)

 

<데이터 추가>

ㅇ 결측값 추가 : numpy 활용

 import numpy as np

 df['추가할 컬럼명'] = np.nan

ㅇ 데이터 추가

df.loc[인덱스 명, '추가할 컬럼명'] = 추가할 데이터

ㅇ 리스트[] 형태로 추가 : 컬럼 개수만큼 데이터 추가 필요

df.loc[인덱스 명] = [a,b,c,d]

ㅇ 딕셔터리{} 형태로 추가 : 컬럼 개수만큼 데이터 추가 불요하며, 추가할 데이터가 없는 키값은 결측치(NaN)으로 채움

df.loc[인덱스 명] = {컬럼1:a, 컬럼2:b, 컬럼3:c}

 

<데이터 정렬>

* 정렬 전에 데이터유형(정수/문자 등)은 동일하게 맞춰야함 : drop을 이용해서 데이터 삭제

ㅇ 인덱스 기준(기본값 ascending=True) : sort_index(ascending = True 오름차순 / False 내림차순)

ㅇ 값 기준(기본값 ascending=True) : sort_values('컬럼명', ascending = True / Flase)

ㅇ 복수 컬럼 값 기준 정렬 : sort_values(['컬럼1', '컬럼2'], ascending = [True/False, Ture/Flase])

ㅇ 정렬한 df 기준으로 새로운 index 만들기 : reset_index(drop=True)

 

<조건>

ㅇ 기준이 하나 일 때

cond = df["컬럼명'] >=20

df[cond]

ㅇ 기준이 둘 이상 일 때

cond1 = df['컬럼명'] > = 20

cond2 = df['컬럼명'] == a

df[cond1 & cond2]    # and

df[cond1 | cond2]    # or

 

<결측치 처리>

ㅇ 결측치 확인 : df.isnull().sum()

ㅇ 결측값 채우기 : df['컬럼명'].fillna(데이터)

 

<데이터 변경>

ㅇ replace(변경대상데이터, 변경할데이터)

ㅇ 딕셔너리 선언 후, replace(딕셔너리 변수명)

ㅇ loc로 데이터 선택 후 변경

ㅇ 행/열 데이터 바꾸기 : df.T

 

<내장 함수>

ㅇ 결측치 제외 컬럼/행 별 데이터 개수 카운트 : count(axis = 0(열)/1(행))

ㅇ 데이터 개수 : len(df) / df.shape[0]

ㅇ 최대값 : df['컬럼명'].max()

ㅇ 최소값 : df['컬럼명'].min()

ㅇ 평균 : df['컬럼명'].mean()

ㅇ 중앙값 : df['컬럼명'].median()

ㅇ 합계 : df['컬럼명'].sum()

ㅇ 표준편차 : df['컬럼명'].std()

ㅇ 분산 : df['컬럼명'].var()

ㅇ 왜도 : df['컬럼명'].skew()

ㅇ 첨도 : df['컬럼명'].kurt()

ㅇ 백분위수 : df['컬럼명'].describe()

ㅇ 백분위수 값 : df['컬럼명'].quantile(.25)

ㅇ 최빈값 : df['컬럼명'].mode()[0]

ㅇ 제곱데이터 구하기 : 데이터 **2 : df['컬럼'] = df['컬럼명']**2

ㅇ 나누기 나머지 : %

ㅇ 나누기 몫 : //

 

<데이터 개수 구하기>

ㅇ len(df[조건1 & 조건2])

 

<그룹핑>

ㅇ groupby('컬럼')

 - 데이터프레임 형태로 출력 : df.groupby([컬럼1,컬럼2], as_index = False)

 - 컬럼별 빈도수 : df.groupby(컬럼명).size()

 * df.컬럼명.value_counts().sort_index()

 - 연산 : .agg(['mean', 'var', 'max', 'min'])

 

<map>

df['컬럼명'].map({ 'A' : a, 'B':b })

 

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사] 작업형2 머신러닝 이론 및 프로세스 요약

 

[빅데이터분석기사][작업형2] 머신러닝 이론 및 프로세스 요약

* 퇴근후딴짓 님의 강의를 참고하였습니다. * 1. 머신러닝 ㅇ기존에는 데이터/규칙을 Rule Base로 결과를 도출하였지만, 머신러닝은 데이터와 결과(해답)을 기반으로 학습을 통해 규칙을 도출하고

inform.workhyo.com

 

2023.06.12 - [자격증공부/빅데이터분석기사] - [빅데이터분석기사][작업형3] 가설검정 이론 및 프로세스(정리)

 

[빅데이터분석기사][작업형3] 가설검정 이론 및 프로세스(정리)

* 퇴근후딴짓 님의 강의를 참고하였습니다. * 1. 모집단과 표본 ㅇ 모집단 : 집단 전체 ㅇ 표본 : 모집단을 대표하는 집합 2. 가설검정 ㅇ 모집단에 대한 가설이 적합한지 추출한 표본데이터로부터

inform.workhyo.com

 

320x100
반응형