라일락 꽃이 피는 날

[빅분기 실기] 데이터 탐색 본문

데이터 분석/빅데이터 분석 기사

[빅분기 실기] 데이터 탐색

eunki 2022. 5. 22. 20:49
728x90

데이터 파일 불러오기

# csv 파일 불러오기
df = pd.read_csv('파일명.csv')

# excel 파일 불러오기
df = pd.read_excel('파일명.xlsx')

# 한글이 깨질 경우
df = pd.read_csv('파일명.csv', encoding='euc-kr')

 

 

 

데이터 프레임 확인하기

# 처음 행 5개 출력
df.head()

# 마지막 행 5개 출력
df.tail()

# 특정 행 출력
df[1:5]

# Series 형태 열 출력
df['컬럼명']
df.컬럼명

# DataFrame 형태 열 출력
df[['컬럼명']]

# 특정 열 출력
df[df.columns[[0, 2, 4]]]
df.loc[:, '컬럼명1':'컬럼명2']  # 컬럼명2 포함
df.iloc[:, 0:2]  # 인덱스 2 컬럼 제외

 

 

 

데이터 변환

# 데이터 프레임 복사
df.copy()

# 열 확인
df.columns

# 열 이름 변경
df.rename(columns = {'변경전':'변경후'}, inplace=True)

# 컬럼 변주 확인
df['컬럼명'].value_counts()

# 값 대체
df.replace({'컬럼명':{1:a, 2:a, 3:b}})

# 함수 적용
df['컬럼명'].apply(함수명)

 

 

 

pandas 와 numpy 전환

머신러닝과 딥러닝에서는 numpy로 분석해야 빠르고, 데이터 확인할 때는 pandas가 보기 편함

# numpy 변환
df.to_numpy()

# pandas 변환
pd.DataFrame(넘파이셋명)
pd.DataFrame(data=df, columns=[], index=[])

 

 

 

단변량 데이터 탐색

# 기본 정보
df.info()

# 범주형 자료 빈도 파악
df['컬럼명'].value_counts()

# 연속형 자료 기술통계량 파악
df.describe()

# 왜도 확인
df.skew()

# 첨도 확인
df.kurtosis()

# 히스토그램 그리기
df.hist(bins=50)  # bins 옵션으로 구간 너비 조절

 

1. 범주형 자료

- 범주형 자료 빈도 파악 

- 숫자인 범주를 replace로 문자로 변경

- 원도표(pie), 막대도표(bar)로 시각화

 

 

2. 연속형 자료

- 기술 통계량(describe)으로 평균(mean)과 중위수(50%) 차이 확인

  → 차이가 크면 이상치가 많은 것

 

- 왜도(skewness)와 첨도(kurtosis) 확인

  → 0일 경우 정규분포와 일치

  → 왜도가 음수면 오른쪽에 자료가 더 많고, 양수면 왼쪽에 자료가 더 많음

  → 첨도 값이 클수록 중심에 자료가 많이 몰려있음

 

- 히스토그램(histogram)으로 시각화하여 정규성과 이상치 존재 여부 확인

 

 

 

이변량 데이터 탐색 - 두 변수 간의 탐색

독립변수와 종속변수 간에 예측/회귀 문제인 지도학습인 경우 선형성 여부 판단

# 상관계수 파악
df.corr()

# method 옵션 변경
df.corr(method='pearson')
df.corr(method='spearman')
df.corr(method='kendall')

# 산점도 그리기
plt.scatter(x, y, alpha=0.5)

- 두 변수 간의 상관계수 파악

  → 독립변수와 종속변수 간의 상관계수가 낮으면 이상치 확인

728x90