DS School Week5-1 EDA:Pandas/Matplotlib

Henny Song·2023년 5월 30일
0

DS Studylog

목록 보기
15/38
post-thumbnail

오늘 학습 계획

  • EDA 기초
  • EDA 서울시 CCTV 현황 강의 수강

학습 내용

1. 파이썬 설정 (EDA)

  • ENV 환경 설정 : 미니콘다(미니포지) 설치

    • cd Downloads # 설치파일 위치로 이동
    • bash Miniforge # 설치파일 실행
  • home brew 설치

  • ENV 실행

    • conda env list
    • conda activate env_name
  • 모듈 설치

    • condad install module
  • matplotlib 한글설정

    import matplotlib.pyplot as plt
    
    %matplotlib inline    # jupyter notebook에서 필요 
    plt.rcParams['axes.unicode_minus'] = False   # 마이너스 부호 깨짐 설정 
    from matplotlib import rc
    rc('font', family='Arial Unicode MS')
  • vscode 설치

    • brew install visual-studio-code
    • 실행 code .
    • env 설정 : cmd + shifpt + p

2. EDA와 Pandas

  • pandas? 데이터 핸들링 모듈
  • 설치 import pandas as pd
  • 데이터 불러오기 함수
    • 파일 읽기
      • 기본
        pd.read_csv('../path/file_name', encoding=)
      • 확장
        pd.read_excel('../path/file_name', header=n, index_col = n, usecols='A, B,...',thousands=',')
        * ../ : 상위 디렉토리 이동
        * header : n행부터 불러오기
        * index_col : n열을 인덱스로 설정
        * usecols : 불러올 컬럼명
        * thousands : 숫자에 쓰이는 천단위 구분 기호를, 문자가 아닌 숫자로 인식
    • 컬럼명 변경 : data.rename(columns={'old_name' : 'new_name'}, inplace=True)
  • pandas 데이터 생성/관리
    • 데이터 생성
      • pd.Series([], dtype=) : 시리즈 데이터 생성
        * 시리즈 : index와 value로 이루어진 데이터 / 한가지 데이터 타입만 가질 수 있음.
      • pd.date_range('date', periods=n) : date부터 n일의 날짜 데이터 생성
      • pd.DataFrame(data,index=[], columns=[]) : 테이블 데이터 생성
        * 데이터프레임 : index, value, column으로 이루어진 데이터
        • 데이터 프레임 생성 방법 1 : 딕셔너리 안에 리스트 (열 데이터)
          pd.DataFrame({'column1' : [], 'column2' : [], ... })
        • 데이터 프레임 생성 방법 2: 리스트 안에 딕셔너리 (행 데이터)
          pd.DataFrame([
          {'column1':value1, 'column2':value2, ...},
          {'column1':valueA, 'column2':valueB, ...}])
    • 데이터 조회
      • df.head() : 첫 5행 조회
        df.head(n) : 첫 n행 조회
        df.tail() : 마지막 5행 조회
      • df.index : 인덱스 조회
        df.columns : 컬럼 조회
        df.values : 데이터 조회
      • df.info() : Dataframe의 기본 정보 확인
      • df.describe() : Dataframe의 기술 통계 정보 확인
    • 데이터 정렬
      • df.sort_values(by='column', ascending=True, inplace=True) :특정 컬럼을 기준으로 데이터 정렬
    • 데이터 선택(슬라이싱)
      • df['column', ...] : 특정 컬럼 선택
        df.column : 특정 컬럼 선택 (컬렴명이 문자열일 때만)
      • df[n:m] : n부터 m-1행 까지 선택
        df['indexA':'indexB']: indexA 부터 indexB 까지 선택
      • df.loc[index] : 특정 행 이름으로 선택
        df.loc[index,column] : 특정 행, 열 이름으로 선택
      • df.iloc[n] : 특정 행 index 값로 선택
        df.iloc[n, m] : 특정 행, 열 index 값로 선택
      • df[condition] : 특정 조건 선택
        • 예제
          df[df['A'] > 0] : A 컬럼의 값이 0 이상인 행만 조회
          df[df>0] : 데이터 값이 0이상인 값만 조회, 나머지는 NaN 처리
          df['E'].isin(['a', 'b']) : E열에서 a와 b가 데이터에 있는지 T/F
          df[df['E'].isin(['a','b'])] :위 조건을 만족하는 행만 조회
    • 데이터 추가/변경/삭제
      : 기존 데이터가 없으면 추가, 있으면 변경
      • df['column'] = []
      • del df['column'] : 특정 컬럼 제거
        df.drop(['column'], axis=1)
        * axis = 0 : 가로, axis=1 세로
      • df.set_index('column', inplace=True) : 특정 컬럼을 index값으로 사용
    • 데이터 합치기
      • pd.merge(df1, df2, on='key column')
        : key column 중 공통의 값만 병합
        pd.merge(df1, df2, how='left', on='key column') : df1의 key column의 값을 기준으로 병합 (없는 값은 NaN처리)
        pd.merge(df1, df2, how ='outer', on='key column')
        : df1과 df2의 모든 key column값을 병합 (없는 값은 NaN처리)
        pd.concat(ls) : 리스트 내 구조가 동일한 데이터프레임이 여려개 있을 때 병합
    • 데이터 가공
      • df.apply(def) : 각 컬럼에 함수 적용
      • df.corr() : 컬럼간의 데이터의 상관계수를 반환

3. EDA와 Matplotlib

  • matplotlib? 파이썬의 대표 시각화 도구

  • pyplot ? matplotlib의 2차원 시각화 도구

  • 불러오기 import matplotlib.pyplot as plt
    (jupyter notebook) %matplotlib inline

  • 그래프 그리기 기초

    • plt.figure(figsize=(m, n)) : 그림에 대한 속성 설정
      * figsize : 그림 사이즈 설정
      plt.plot(x, y) : x, y 값 입력
      혹은 plt.scatter(x, y)
      plt.show() : 그리기
    • fig, ax = plt.subplots(figsize=(m, n))
      plt.plot(x, y)
      subplot 개념 : https://engineer-mole.tistory.com/215
  • 그래프 그리기 확장

    • plt.grid() : 그리드 생성
    • plt.legend(): 범례 표현
      plt.legend(labels=[], loc='best')
    • plt.xlabel() : x축 제목
      plt.ylabel() : y축 제목
    • plt.xlim([n, m]) : x축 범위 지정
      plt.ylim([n, m]) : y축 범위 지정
    • plt.title() : 그래프 제목
    • plt.colorbar() : 컬러맵 표시
    • plt.text(x, y, t, fontsize=n) : (x,y) 위치에 t 텍스트 표기
    • plt.xticks(rotation='vertical') : x축 값 각도 변경
    • ax.bar_label(ax.containers[0], labels=[], fmt = '', label_type = 'center', padding = n, ) : 바그래프 상단에 레이블 입력
      * labels : 레이블값 지정, fmt : 포맷 지정, padding : 레이블과 그래프의 간격
      * plt.bar_label도 동일함
  • plot 함수 확장

    • plt.plot(x, y, color = 'c', linestyle = 'dashed')
    • plt.plot(x, y, marker='o', markerfacecolor='c', markersize=n)
  • pandas로 matplotlib 그래프 그리기

    • df.plot(kind='', figsize=(, ))
      from matplotlib.colors import ListedColormap
  • 기타 matplotlib 기능

    • colormap 사용자화
      from matplotlib.colors import ListedColormap
      color_step = []
      my_cmap = ListedColormap(color_step)
      plt.plot(x, y, c=color_standard, cmapy=my_cmap)
      plt.colorbar()

4. EDA와 Numpy

  • numpy를 이용한 숫자 데이터 생성
    • np.random.randn(m, n) : m x n 테이블 난수 데이터 생성
    • np.arange(a, b, d) : a부터 b까지의 숫자를 d간격으로 생성
    • np.linspace(a, b, n) : a부터 b까지 n개의 등간격 데이터 생성
  • numpy를 이용한 1차 직선 만들기
    • np.polyfit(x, y, 1) : 직선을 구성하기 위한 계수(기울기, y 절편) 계산
    • variable = np.poly1d(polyfit) : polyfit으로 찾은 계수로 python에서 사용할 함수로 만들어줌.
      * variable에 숫자를 넣으면, poly1d함수로 구한 직선위의 값을 반환한다.
    ※ numpy axis=1 행(가로), pandas axis=1 열(세로)

5. 서울시 CCTV 현황 EDA 정리

  • 데이터 읽기
  • 데이터 훑어보기
  • 데이터 합치기
  • 데이터 시각화
  • 데이터 경향표시
  • 데이터 시각화 강조

※ 데이터 저장

df.to_csv('path/file.csv', sep=',', encoidng='utf-8')
df.groupby(column, column)

다음 학습 계획

  • EDA 서울시 범죄 현황 분석 강의 수강

0개의 댓글

관련 채용 정보