AI교육과정 - Python.11

단비·2023년 2월 1일
0

AI교육과정

목록 보기
63/69
  1. 데이터 전처리(Data Preprecessing)
    • 특정 분석에 적합하게 데이터를 가공하는 작업
    • 업무에서 사용하는 데이터는 분석, 머신러닝(딥러닝)에 적합하지 않은 경우가 많기 때문에 이를 방지하기 위한 작업을 함
  2. 공공데이터
  3. 명령어
    • 컬럼명 수정 (rename)
      df.rename(columns={'분양가격(㎡)':'분양가격'})
    • 컬럼의 타입 변경 (astype)
      # 분양가격의 dtype을 int64로 변경하기
      df['분양가격'].astype(int)
    • 해당 문자열이 있는지 확인
      # '  ' 공백이 존재하는 데이터가 있는지 확인
      df.loc[df['분양가격'] == '  ']
    • 해당 컬럼의 앞뒤 공백 제거 (strip)
      # strip()를 사용하여 공백이 있는 데이터의 해당 앞뒤 공백을 삭제
      df['분양가격'].str.strip()
    • 해당 문자열 컬럼의 데이터 변경 (replace)
      # 데이터가 없는 경우 0으로 변경
      df.loc[df['분양가격'] == '', '분양가격'] = 0
      # 콤마를 제거
      df['분양가격'].str.replace(',','')
    • NaN 데이터를 0으로 변경 (fillna)
      # NaN을 0으로 변환
      df['분양가격'].fillna(0)
    • 열의 각 값에 대한 모든 발생 횟수를 반환 (value_count())
      df['규모구분'].value_counts()
    • 행 값에 대한 열의 평균 값 구하기
      # 지역명별로 평균 분양가격을 확인
      df.groupby('지역명')['분양가격'].mean()
    • 작업파일 저장 방법
      # 작업파일 저장
      df.to_csv('ds-house-price-clean.csv', index=False)

  1. matplotlib

    • 파이썬 기반 시각화 라이브러리
    • 파이썬 표준 시각화 도구라고 불릴만큼 다양한 기능을 제공
    • 한글에 대한 지원이 완벽하지 않음
    • 세부기능이 많아 사용성이 복잡함
    • pandas와 연동이 용이함
    • matplotlib 공식 홈페이지
    !pip install matplotlib
    import matplotlib.pyplot as plt
    • 코랩에 폰트 설치
      !sudo apt-get install -y fonts-nanum
      !sudo fc-cache -fv
      !rm ~/.cache/matplotlib -rf
      # 상단 메뉴 '런타임'에서 '다시 시작 및 모두실행' 클릭
      plt.rc('font',family='NanumBarunGothic')
    • 데이터 삽입법
      • arange(x,y)

        data1 = np.arange(1,50) # 1부터 50까지 상승하는 직선 생성
        plt.plot(data1) # plt에 데이터 삽입
        data2 = np.arange(50,100) # 50부터 100까지 상승하는 직선 생성
        plt.plot(data2) # plt에 데이터 삽입
        plt.show() # 그래프 보기

    • 여러개의 plot 그리기
      • subplot(row, column, no)

        data1 = np.arange(100,200)
        plt.subplot(2, 1, 1) # 2열 1행
        plt.plot(data1)
        
        data2 = np.arange(200,300)
        plt.subplot(2, 1, 2) # 2열 1행
        plt.plot(data2)
        ------------------------------------------------------------------------
        # 1행 3열 그래프
        data1 = np.arange(0, 100)
        plt.subplot(1, 3, 1) # plt.subplot(131)
        plt.plot(data1)
        
        data2 = np.arange(0,100)
        plt.subplot(1, 3, 2) # plt.subplot(132)
        plt.plot(data2)
        
        data2 = np.arange(0,100)
        plt.subplot(1, 3, 3) # plt.subplot(133)
        plt.plot(data2)
  2. 스타일 옵션

    • 그래프 제목 설정
      plt.title('타이틀 테스트', fontsize= 30)
    • x, y축 라벨 설정
      plt.xlabel('x축', fontsize=15)
      plt.ylabel('y축', fontsize=15, rotation=0)
    • 그래프 선 설정
      • marker: 선의 핵심표시

        ex) *, v, o

      • color: 색깔

        ex) b, r, y, #000000

      • linestyle: 선 스타일

        ex) ‘-’, ‘-.’, ‘’

      • alpha: 투명도 설정

        plt.plot(np.arange(10), np.arange(10)*3, marker='*', color='y', linestyle='-.', alpha=0.1)
    • x, y축마다 컬럼명 설정
      x = ['Math', 'Programming', 'Data Science', 'Art', 'English', 'Korean']
      y = [60, 80, 50, 90, 20, 70]
    • 바 그래프 설정법
      • alpha: 투명도

      • align: edge(컬럼명 왼쪽정렬), center

      • color: 바 색깔

        plt.bar(x, y, align='edge', alpha=0.7, color='red')
    • 라벨타이틀 설정법
      • xlabel

      • ylabel

        plt.xlabel('score of Students')
        plt.ylabel('score of Students')
    • x,y축의 범위를 설정 (axis)
      • axis
        - on: 축과 라벨을 켬
        - off: 축과 라벨을 끔

        plt.axis('off')
    • 원하는 사이즈의 픽셀을 원하는 색으로 채워서 만든 그림 (imshow)
      • imshow(리스트)
        - interpolation: 픽셀들의 축 위치 간격을 보정하여 이미지가 자연스러운 모양으로 보일 수 있게 하는 방법(보간법)

        plt.imshow(wordcloud, interpolation='kaiser')

  1. 고객 주문 데이터 파악하기
    1. 데이터 셋
      • 가상 온라인 리테일 사이트의 2010/12 ~ 2011/12까지의 주문 기록 데이터
      • 약 500,000건의 데이터
    2. 컬럼 살펴보기
      • InvoiceNo: 주문번호
      • StockCode: 아이템 아이디
      • Description: 상품 설명
      • Quantity: 주문 수량
      • InvoiceDate: 주문 시간
      • UnitPrice: 상품 가격
      • CustomerID: 고객 아이디
      • Country: 고객 거주 지역(국가)
    3. 날짜 타입 데이터 변환
      • 문자열로 데이터를 로딩하는 것보다 datetime 타입으로 로딩하는 것이 날짜 분석 및 계산에 용이
      • date 타입으로 변환하여 저장
        retail['InvoiceDate'] = pd.to_datetime(retail['InvoiceDate'])
    4. 매출 구하기
      • 해당 값의 전체 값 구하기
        # 국가별 매출금액을 구하여 오름차순 정렬
        retail.groupby('Country').sum()['CheckoutPrice'].sort_values()
  2. 명령어
    • notnull
      • NaN 값이 아닌 값만 뽑을 수 있음

        retail[pd.notnull(retail['CustomerID'])]
    • 해당 조건에 맞는 데이터만 저장
      # 구입 수량이 1이상인 데이터만 제장
      retail = retail[retail['Quantity'] > 0
    • date type의 출력양식 변경
      def extract_month(date): # 2011-12-09 12:50:00 -> 201112
        month = str(date.month)
        if date.month < 10:
          month = '0' + month
        return str(date.year) + month
    • groupby의 함수활용
      retail.set_index('InvoiceDate').groupby(extract_month).sum()['CheckoutPrice']
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글