본문 바로가기
5. 활동/KT AIVLE AI 3기

[KT AIVLE 3기] 사전 교육 1주차

by 로기(dev-loggi) 2023. 1. 9.

 

목차

     

    2. 분석 환경 준비하기

    Anaconda

    Anaconda 는 데이터 처리/분석을 위해 사용되는 여러 패키지를 포함한 배포판

    데이터 사이언스, 머신러닝, 딥러닝 등의 분야에서 파이썬을 사용하기 위해 많이 사용하는 오픈소스이다.

    Jupyter notebook

    Jupyter notebook 은 대화형 인터프리터로 웹 브라우저 기반 파이썬 개발 환경이다.

    가상 환경 실습

    더보기

     

    // 가상 환경 만들기
    conda create -n dx_env python=3.7
    
    // 가상 환경 활성/비활성화
    conda activate dx_env
    conda deactivate
    
    // 가상 환경 info
    conda info --envs
    
    // jupyter notebook, pandas 설치
    conda install jupyter notebook pandas
    
    // 가상 환경 커널 연결
    python -m ipykernel install --user --name dx_env --display-name "dx_env"
    
    // jupyter notebook 실행
    jupyter notebook
    
    // scipy 설치
    conda install scipy
    
    // 가상 환경 복제
    conda create -n dx_env_clone --clone dx_env
    
    // 가상 환경 내보내기
    conda env export > dx_env.yaml
    
    // 가상 환경 삭제(해당 환경에서 나온 후 진행)
    conda env remove -n dx-env
    
    // 가상 환경 가져오기
    conda env create -f dx_env.yaml

     

    2. 데이터 조작 이해와 실무

    • Numpy와 Pandas 데이터 형태의 차이점과 활용법을 설명할 수 있다.
    • Numpy와 Pandas 를 이용하여 데이터를 선택할 수 있다.

    2-1. 데이터 선택

    numpy 는 다차원 배열 구조를 이용한 수학 연산이 가능하다.

    pandas 는 스프레드 시트의 데이터 형식을 이용할 수 있는 기능을 제공한다.

     

    Numpy 배열

    conda install numpy

    고속 연산, 쉽고 빠른 배열 변환, 다양한 함수 제공

     

    Pandas 라이브러리

    conda install pandas

    강력한 스프레드 시트 처리

    데이터 통계 분석

     

    Pandas 데이터 구조

    Pandas 는 크게 DataFrame, Series로 구분하여 나타낼 수 있음

    DataFrame: Record(행), Series(열)

     

    Numpy 데이터 선택

    Slicing: 배열을 쉽게 자를 수 있음, arr[1, :]

    Indexing: 리스트와 다르게 [x, y] 표기법 가능, arr[1, 0]

    Boolean Indexing: 특정 조건에 따른 값을 배열로 추출, arr[arr > 3]

    Fancy Indexing: 배열에 인덱싱 값을 주어 변환, arr[[0, 0]]

     

    Pandas 데이터 선택

    Slicing: df[0: 2]

    Indexing: df['a']

    Boolean Indexing: df[df['a'] > 20]

    Fancy Indexing: df[['a', 'b']]

     

    Ioc 인덱서: df.loc[행, 원하는 열의 이름], df.loc[0, 'a'], df.loc[0, ['a', 'b']]

    iloc 인덱서: df.iloc[행, 열의 순서], df.iloc[1, 0], df.iloc[1, [0, 1]]

     

    2-2. 데이터 변경

    CRUD(Create, Read, Update, Delete)

    Pandas의 DataFrame은 2차원 데이터를 CRUD 하는 기능을 제공한다.

     

    DataFrame 인덱스

    인덱스의 존재는 DataFrame의 가장 큰 특징 중 하나

    인덱스 설정을 위한 다양한 함수(set_index, reset_index 등)를 제공한다.

     

    JSON to DataFrame

    JSON을 Dictonary 구조로 읽어 DataFrame 으로 변환이 가능하다.

    (예제: Open API를 이용한 데이터 수집)

     

    2-3. 데이터 합치기

    각기 다른 두 개 이상의 DataFrame을 하나로 병합(Join, Merge)하여 결과 집합으로 만들어 내는 것을 의미

    Inner Join, Outer Join, Left Join, Right Join이 있으며 데이터의 구조와 문제에 맞게 적용한다.

     

    Inner Join: DataFrame 간 조인 조건을 만족하는 행을 합치는 것

    One-to-One

    One-to-Many

     

    OuterJoin: 조건에 부합하지 않는 행까지 포함시켜 결합하는 방법

    Left Join: 첫 번째 DataFrame을 기준으로 두 번째 DataFrame을 결합하는 방법

    Right Join: 두 번째 DataFrame을 기준으로 첫 번째 DataFrame을 결합하는 방법

     

    DataFrame 병합 구현 방법

    Pandas의 merge 함수: df1.merge(df2, on='c', how='inner')

    merge는 컬럼을 기준으로

    DataFrame의 join 함수: df1.join(df2, on='c', how='inner')

    join은 인덱스를 기준으로

     

    Pandas의 Index

    Pandas의 Series나 DataFrame은 각 행마다 Index가 있고, Index를 기준으로 병합이 이루어지기도 함

     

    데이터 연결

    하나의 DataFrame에 다른 DataFrame 또는 Series를 연결(Concatenate)하여 결과 집합을 만듦

    연결은 공유하는 공유하는 Key 값을 사용하지 않고, 데이터를 기존 DataFrame 아래(또는 우측)에 붙여 연결

    pdf.concat(df1, df2, axis, ...)

    축(axis)의 값을 어떻게 설정하느냐에 따라 연결 방향이 달라짐

     

    2-4. 데이터 그룹핑

    데이터 그룹화

    • 같은 성질을 갖고 있는 데이터끼리 그룹화하여 그룹 데이터의 특징을 도출
    • Pandas는 데이터 그룹화를 위해 DataFrame의 groupby() 함수를 지원

    집계 함수

    • 그룹 특징을 대표하는 다양한 집계 함수가 내장(예: count, sum, mean, std 등)
    • apply() 함수를 활용하면 내장 함수 뿐만 아니라 '사용자 정의 함수(혹은 lambda)'도 집계 함수로 사용 가능
    • https://pandas.pydata.org/docs/reference/groupby.html

    데이터 정렬

    • sort_values 함수를 이용하여 데이터를 오름차순, 내림차순으로 정렬 가능

     

    2-5. 시계열 데이터 기초

    순차적인 시간의 흐름으로 기록된 관측지의 집합

    시계열 데이터는 고정된 시간 구간으로 나타나야 함

    (즉, A 구간은 일별, B 구간은 월별인 데이터는 존재 불가)

     

    Pandas의 시계열 데이터

    Pandas는 시계열 데이터를 위한 DatetimeIndex 자료구조를 제공

     

    Pandas의 Resample

    일별 -> 월별 / 월별 -> 일별 등과 같이 시간 간격 재조정 가능

    Down-sampling: 일별 -> 월별, 원래의 데이터가 그룹으로 묶여 대표 값 필요

    Up-sampling: 월별 -> 일별, 실제로 존재하지 않은 데이터를 만듦(forward/backword filling)

     

    시간 그래프(Time Plot)

    시간 그래프(또는 시도표)는 패턴, 이상치, 시간에 따른 변화, 계절성 등의 데이터의 많은 특징을 눈으로 볼 수 있게 해줌

     

    Pandas의 시도표 시각화

    pandas.DataFrame.plot()

    댓글