데이터

[데이터 분석] 데이터전처리 기초

멈머이 2023. 11. 28. 23:42
728x90

 

* 데이터 전처리

데이터 전처리란, 데이터 분석을 위해 수집한 데이터를 분석에 적합한 형태로 가공하는 과정.

데이터 전처리를 통해 불필요한 데이터를 제거하고, 결측치나 이상치를 처리하여 데이터의 질을 향상시킬 수 있다.

 

* 데이터 분석 과정

1. 데이터 수집

2. 데이터 전처리

3. 데이터 가공(필요시 전처리)

4. 데이터 분석 탐색 / 시각화(필요시 전처리)

5. 필요시 모델 훈련(머신러닝 또는 딥러닝)

6. 웹서비스 또는 분석 보고서


일반적으로 책에서는 : 데이터 수집 -> 전처리 -> 분석 -> 시각화로 성명되고 있다.
하지만 분석과정은 회사에 따라 다르다.

 

* 데이터 수집 시 확인사항

 - 날짜 확인 : 기준일로 사용 [년윌일시분 까지 있는 데이터가 좋다 최소한 년월까지]
 - 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터


<판다스(pandas)>
 - 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리.
 - 파일 읽기, 저장, 행렬데이터 처리, 기본 시각화 등 지원.
 - 데이터 전처리 과정에서 주소 사용됨.

import pandas as pd

 

이 엑셀파일을 기준으로 예제로 알아보자.


1. Pandas 라이브러리를 사용하여 데이터 읽어 들이기

import pandas as pd
### 파일위치 지정
file_path = "./files/sample_1.xlsx"
### 파일 데이터 추출하기
sample_1 = pd.read_excel(file_path,
                         header=1,
                         skipfooter=2,
                         usecols="A:C")

 - file_path: 파일 지정(위치 포함)
 - header : 컬럼명으로 사용할 행의 위치(디폴트 : 0)
 - skip footer: 행의 가장 밑에서부터 포함하지 않을 행의 개수(디폴트 : 0)
 - usecols: 가지고 올 열의 범위 (A부터 C까지의 열 / 디폴트 : 데이터가 있는 모든 열)

### 데이터프레임 출력
sample_1

 

 

 

 - 데이터의 행/열이 많은 경우 => 기본 상위 5개, 하위 5개를 추출해서 보여줌
 - 데이터 행/열의 개수가 작으면 모두 보여줌

 

 

 

 

 

 

 

 

### head() : 상위 데이터 확인(기본 5개)
sample_1.head(1)

 

head()에서 소괄호 안에 아무런 값을 주지 않을 경우 5개 출력.

 

 

 

### tail() : 마지막 데이터 확인(기본 5개)
sample_1.tail(1)

 

head()와 마찬가지로 소괄호 안에 아무런 값을 주지 않을경우 5개 출력.

 

 

 

### 데이터프레임 정보 확인하기
sample_1.info()

 

 - sample_1에 대한 type이 나온다. = Data Frame
 - Data Frame 타입 : 행렬을 저장 관리하는 타입
 - (**중요**) => info() 함수는 데이터의 결측치(nan, NuLL) 데이터

     확인 가능
 - RangeIndex : 전체 행(row)의 개수
 - 전체 행의 개수와 각 컬럼의 개수(non-NuLL)가 안 맞으면 -> 결측        데이터가 존재한다는 의미
 - 눈에 보이는 것 = 인덱스 값 / 실제번호는 따로 존재
 - Dtype : 데이터 타입 문자 : objexct / 숫자 : int

 

 

### describe() : 기초통계 데이터 숫자값을 가지는 컬럼에 대해서만 통계를 내림
sample_1.describe()

 

 

 - count : 데이터 행의 개수
 - mean : 데이터 평균 
 - std : 표준편차 
 - min : 최솟값
 - max : 최댓값
 - 25%, 50%, 75% : 4분 위수 데이터    [50% : 중앙값]
 - 4분위수 데이터를 이용해서 이상치 (이상한) 데이터를 확인한다.

 

 

 

 

 


2. 데이터조회하기

### 국적코드 데이터 조회하기
sample_1['국적코드']
sample_1[['국적코드']]

 

 

 

 

 

 

 

 

 

 [ ]가 하나일 때와 [[ ]] 두 개일 때 차이점을 알아두어야 한다.

* 데이터 타입이 서로 다르다.

 

### 타입 확인하기
type(sample_1['국적코드'])

 

- Series : 튜플과 모양()이 같다. (사용법도 동일)
- {"국적코드" : (데이터, 테이터....)}


3. 기준년월 컬럼 추가하기

### 2019-11 값을 추가하기
sample_1["기준년월"] = '2019-11'
sample_1


4. 데이터 필터링하기

### 설별 중에 여성인 데이터만 추출하기
condition = sample_1["성별"] == "여성"
condition

 

 

* 결과가 True / False로 나온다. [불리언 형식]

 

 

 

 

sample_1[condition == True]           # 디폴트 값은 True

 

 

위에서 False인 값만 반환.

 

 

 

 


 

1번. 객체 주소 전달방식

sample_2 = sample_1
sample_2

 

2번. copy() : 메모리 복제방식 

sample_2 = sample_1.copy()
sample_2

1번과 2번 모두 결과는 같지만,

1번은 객체 주소전달방식으로 1번과 2번이 동일하다. (서로 영향을 주고받음)

반면, 2번은 신규로 메모리 주소를 받아온다. (서로 영향 안 받음)

 

728x90