본문 바로가기

Back-End/데이터베이스

[DB] 데이터 전처리 기초 - 판다스(pandas)

~ 목차 ~

 

 
 

전처리 기초

 

1. 판다스(pandas) : 파이썬, 라이브러리
    - 파이썬 사용하는 이유 : 가볍고 직관적임, 웹프로그래밍이 가능하다. 데이터 처리 라이브러리가 잘 만들어져 있다.

2. 데이터 분석과정

3. 데이터 전처리

 

 


 

판다스

   판다스(pandas) 🐾

 - 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리
 - 파일 읽기, 저장, 행렬데이터 처리, 기본시각화 등 지원
 - 데이터 전처리 과정에서 주로 사용

 

 

데이터 분석과정

  데이터 분석과정 🐾

- 데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) > 데이터 분석 탐색/시각화(필요시 전처리) 
   > 필요시 모델 훈련(머신러닝 or 딥러닝) > 웹서비스 또는 분석보고서
 - 일반적으로 책에서는 " 데이터수집 > 전처리 > 분석 > 시각화 " 로 설명되고 있음
 - 분석과정은 회사에 따라 다름

 

데이터 수집 시 확인사항

  데이터 수집 시 확인 사항 🐾

 - 날짜 확인 : 기준일로 사용 ('년월일 시분' 까지 - 최소한 '년월'은 있어야 한다.)
 - 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터 / 연령대

 

 

< pandas 준비 >

 

1. 폴더 생성

    "C:\Users\user\gj_202311\04_데이터_처리_시각화\01_데이터_전처리기초"

 

2. pandas 라이브러리 있는지 확인(prompt)

    

(base) C:\Users\user>conda env list

(base) C:\Users\user>conda activate gj_env_01

(gj_env_01) C:\Users\user>pip list

 

리스트 목록(pip로 설치한 라이브러리 목록)

pip list

(gj_env_01) C:\Users\user>conda list

conda list

 

 

3. pandas 있는지 확인후 주피터노트북 실행

 

(gj_env_01) C:\Users\user> jupyter notebook

 

4. 주피터 노트북

 

4-1. pandas 라이브러리 import 하기(pandas 별칭 보통 pd로 약속)

import pandas as pd

 

4-2. 데이터(xlsx) 다운로드 - 구글드라이브 file
       (경로 : "C:\Users\user\gj_202311\04_데이터_처리_시각화\01_데이터_전처리기초\files")

데이터

4-3. 데이터 분석 

       컬럼 : 국적코드, 성별, 입국객수, 기준년

       파이썬에서는 1행이 0부터 시작!!

 

4-4. 노란색 데이터만 가져오기 

 


 

< pandas 사용 >

 

1. 파일 위치 지정 (절대경로, 상대경로)

    - 보통 상대경로를 쓰는게 좋음(파일 위치 변경될 수 있으므로)

    file_path = "./files/sample_1.xlsx"

2. 파일 데이터 추출하기 

    - pd.read_ '탭키'  : pd.read_csv(텍스트파일, 가볍고 용량 적음), pd.read_excel(엑셀파일), pd.read_json
                                  위 3개 제일 많이 사용

    - 첫번째 : 파일 지정(위치 포함)
    - 두번째 : 컬럼명으로 사용할 행의 위치(디폴트 0)
    - 세번째 : 행의 가장 밑에서부터 포함하지 않을 행의 갯수(디폴트 0)

    - 네번째 : 가지고 올 열의 범위(A:C)(디폴트 데이터가 있는 모든 열)

    sample_1 = pd.read_excel(file_path,
                                               header=1,
                                               skipfooter=2,
                                               usecols="A:C")

3. 데이터프레임 정보 확인하기
    - DataFrame 타입 : 행렬을 저장 관리하는 타입 (파이썬에서 대부분 대문자로 시작 : class객체)
    - class 왼쪽  : 보통 파일명(pandas 안에 core 안에 frame 안에 ...)

    - RangeIndex : 전체 행(row)의 갯수

    - Dtype(데이터타입) : object(문자), int64(숫자), float(실수)

    - 눈에 보이는 인덱스 값 -> 수정가능 // 따로 메모리공간 인덱스가 있음 (중요)

    - info()함수는 데이터의 결측치(nan, null)데이터 확인 가능 (중요)

    - 전체 행의 갯수(RangeIndex: 6)와 각 컬럼의 갯수(0 to 5)가 안맞으면 -> 결측 데이터가 존재한다는 의미
    - non-Null : null이 아닌 데이터의 갯수
    sample_1.info()

info함수


4. 데이터프레임 출력
    - 데이터 행/열이 많은 경우 : 기본 상위 5개, 하위 5개를 추출해서 보여줌 

    - 데이터 행/열의 갯수가 적으면 모두 보여줌
    - 가장 왼쪽 : 인덱스 번호(행의 위치값)
    sample_1

sample_1

 

5. head(), tail()

    - head() : 상위 데이터 조회할때 원하는 개수의 데이터 뽑는 함수 , 보통 1을 많이 사용, 인덱스 0부터 시작

    - tail() : 마지막 데이터부터 원하는 개수의 데이터 뽑는 함수(디폴트 5개 조회) , 보통 1을 많이 사용,  인덱스 1부터 시작

      sample_1.head()

head()

    sample_1.tail()

tail()

 

6. describe()

    - describe함수: 기초통계 데이터
    - count : 행의 갯수
    - mean : 평균
    - std : 표준편차
    - min : 최소값
    - max : 최대값
    - 25%, 50%, 75% : 4분위수 데이터(50% -> 중앙)
       -> 4분위수 데이터를 이용해서 이상치(이상한)데이터 확인한다. ;극상치데이터?
    - 기초통계 데이터는 숫자값을 가지는 컬럼에 대해서만 확인
       sample_1.describe()

describe함수


7. 데이터 조회하기
    - 딕셔너리 형태로 조회하면 된다. ("를 줄테니 을 다오")

    - 1차원 조회 :  [ ]  →  튜플 형태로

      sample_1["국적코드"]

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

1차원 조회


    - 2차원 조회 : [[ ]] → 행열 형태로 
      sample_1[["국적코드", "성별"]]
      ※ DataFrame 타입

      ※ 2개이상 조회시 무조건 2차원[[]]으로 해야함

2차원 조회


8. 컬럼 추가하기

    - 기준년월 컬럼 주가하기 (값 : 2019-11)

    - 딕셔너리 값 추가와 동일

      sample_1["기준년월"] = '2019-11'
      sample_1

     

컬럼 추가하기

 

9. 데이터 필터링 하기

    - 성별 중에 여성인 데이터만 추출하기

    - 비교연산으로 true인 정보들의 인덱스를 체크하고 해당 인덱스 번호의 행을 조회한다.

      condition = sample_1["성별"] == "여성"
      condition

비교연산 후 데이터

     - 디폴트값 True 조회
        sample_1[condition]

True 조회


     - False 조회
        sample_1[condition == False]

False 조회

     - 한 줄로 조회하기
        sample_1[(sample_1["성별"] == "여성") == True]

한 줄 조회

 
10. 객체 주소 전달 방식
      - sample_2 = sample_1 : 둘 다 같은 곳을 바라본다(주소 참조), 데이터가 변경되면 변경된 내용을 같이 본다.

 

11. copy()

    - copy() : 메모리 복제방식(신규로 동일하게 생성됨)
    - 신규로 만들어진 메모리 주소를 받아옴(서로 영향 받지 않음)
    - 데이터 처리시 copy해야 원본이 훼손되지 않음!!
        sample_3 = sample_1.copy()


 

 

✨경로 알아보기

 

절대경로, 상대경로

1. 절대경로(Absolute Path) : 파일이나 디렉토리의 전체 경로

    - 윈도우 시스템 : C:\Users\사용자명\문서\파일.txt

    - 리눅스/유닉스 시스템 : /home/사용자명/문서/파일.txt

2. 상대경로(Relative Path) : 현재 작업 중인 디렉토리를 기준으로 경로를 표현

    - 문서/파일.txt

3. 웹경로

    - 웹에서는 주로 URL을 사용하여 경로를 지정

    - URL : 리소스(예: 웹 페이지, 이미지, 파일)의 위치를 가리키는 주소

    - 도메인 : 해당 리소스가 위치한 서버의 주소

         www.example.com

    - 루트경로 (Root Path) : 도메인의 최상위 디렉토리

          /

     - 웹 경로를 작성할 때는 도메인과 루트경로를 함께 사용하여 해당 리소스의 정확한 위치를 지정한다.

 

4. ' ./ '   VS   ' / '

     - ./ (현재 디렉토리) : 현재 작업 중인 디렉토리

     - / (루트 디렉토리) : 루트 디렉토리, 최상위 디렉토리부터 시작함을 의미(상대경로에서)

 

 

728x90