AI교육과정 - Python.10

단비·2023년 1월 31일
0

AI교육과정

목록 보기
62/69
  1. Pandas

    • 데이터 작업을 쉽고 직관적으로 할 수 있도록 설계된 빠르고 유연한 데이터 구조를 제공하는 모듈
    1. Series와 DataFrame

      • 1차원, 1개의 column은 Series라고 부름
      • 데이터프레임: 가로축, 세로축에 있는 2차원의 다양한 타입 데이터를 저장하는 자료구조
      pd.Series([1,2,3,4])
      
      a = [1,2,3,4]
      pd.Series(a)

      product1 = [['삼성',900000, '갤럭시22'], ['애플',1400000,'아이폰14'], ['엘지',1500000,'엘지그램']]
      product2 = {'회사명':['삼성','애플','엘지'], '가격':[900000,14000000,1500000], '상품명':['갤럭시22','아이폰14','엘지그램']}
      
      pd.DataFrame(product1) # 둘 다 동일하게 나옴

      • 딕셔너리 키값을 입력 시 Series로 출력됨
        df2['상품명']
  2. 데이터 기본 정보 알아보기

    1. column(열)

    • 컬럼 이름 변경
      df1.columns = ['회사명','가격','상품명']
    1. row(행)

      • 행의 인덱스값 출력
        df.index
        # RangeIndex(start=0, stop=15, step=1)
      • 기본적인 행의 정보와 데이터타입을 확인
        df.info()

    2. 통계정보 알아보기

      • 통계 정보를 확인: 기본값은 정수 또는 실수 컬럼만 확인
        df.describe()

      • 오브젝트 값만 확인
        df.describe(include=object)

      • 전체 확인
        df.describe(include='all')

    3. 형태(shape) 알아보기

      df.shape
      # (15, 8)
    4. 원하는 개수의 데이터 보기

      • head(): 상위 5개의 row를 출력
      • head(n): 상위 n개의 row를 출력
      • tail(): 하위 5개의 row를 출력
      • tail(n): 하위 n개의 row를 출력
    5. 정렬하기

      • 기본값은 index로 오름차순 정렬
      df.sort_index() # 오름차순 정렬
      df.sort_index(ascending=False) # 내림차순 정렬
      • ascending=False
        • 내림차순 정렬

          # 키 순으로 내림차순 정렬 후 브랜드로 오름차순 정렬
          df.sort_values(by=['height','brand'], ascending=[False,True])
      • by='컬럼명'
        • 원하는 컬럼값으로 정렬

          df.sort_values(by='name') # 이름순으로 오름차순 정렬
          df.sort_values(by='name',ascending=False) # 이름순으로 오름차순 정렬
          
          by=['height','brand'] # 키 순으로 오름차순 정렬 후 브랜드로 오름차순 정렬
      • na_position='first'
        • NaN 값을 맨 위로 올리고 싶을 경우

          df.sort_values(by='height',ascending=False, na_position='first')
  3. 컬럼으로 데이터 다루기

    1. 컬럼으로 행 범위 선택하기

      • loc
        df[:3] # df.head(3)
        df.loc[:, 'name']
        df.loc[:3, 'name'] # index 3을 포함
        df.loc[3:8, 'name':'height']

      • Iloc
        df.iloc[:, [0,2]]
        df.iloc[:, 0:2] # 0.2 -> index 2를 포함하지 않음

    2. 데이터의 연산자

      df['height'] >= 180

      df[df['height'] >= 180][['name','gender','height']]
      
      df.loc[df['height'] >= 180, ['name','gender','height']] # 동일함

    3. isin 활용하기

      • isin은 조건을 걸고자 하는 값이 정의한 list에 있을 때만 색인하려는 경우에 사용
      company = ['플레디스','SM']
      df['company'].isin(company)

      df[df['company'].isin(company)]
      
      df.loc[df['company'].isin(company),:] # 동일함

      df.loc[df['company'].isin(company),['name','company']]

    4. 결측값(NaN)

      • NaN은 비어있는 값 또는 결측값이라고 부름
      • pandas에서는 null을 NaN(Not a Number)으로 표기함
      1. 결츨값인지 아닌지 여부 판단

        df.isna()
        df.isnull()

        df['group'].isnull()

    5. 데이터 복사하기

      • new_df = df와 같이 복사할 경우 new_df의 데이터를 변경할 경우 기존 df 데이터도 같이 변경되므로, copy_df = df.copy() 로 복사해야함.
    6. row, column 추가 및 삭제하기

      1. row 추가하기

        • dict 형태의 데이터를 만들어주고 append() 함수를 사용하여 데이터를 추가
        • 반드시 ignore_index=True 옵션을 추가해야 에러나지 않음
          • ignore_index=True: 기존 인덱스값을 무시한 채 해당 데이터의 인덱스에 따름
        df.append({'이름':'김사과'},ignore_index=True)
      2. column 추가하기

        • 열 추가
          # 국적 열을 추가해서 대한민국이라는 값 입력
          df['국적'] = '대한민국'
        • 해당하는 컬럼만 값 변경
          # 이름이 김사과인 행의 국적컬럼값을 미국으로 변경
          df.loc[df['이름'] =='김사과','국적'] ='미국'
    7. 통계함수 다루기

      • describe()
        • number값인 컬럼들만 모아서 통계

      • sum()
        • ex) df[’키’].sum(): 키에 해당하는 모든 컬럼값들을 합친값
      • count()
        • NaN을 제외하고 계산됨
        • 해당 컬럼의 전체 갯수를 구함
      • mean()
        • 해당 컬럼 값들의 평균을 구함
      • .max()
        • 해당 컬럼의 값 중 최대값을 구함
      • var()
        • 분산: 데이터가 평균으로부터 얼마나 떨어져있는지 정도
        • (데이터 평균) ** 2 을 모두 합한 값/데이터 개수
      • std()
        • 표준편차: 분산에 루트를 씌움
    8. 그룹으로 묶기

      • groupby(컬럼명)
        • 해당 컬럼의 값이 동일할 경우 그룹으로 묶음 ex)df.groupby('소속사').count()
      # 혈액형 별로 그룹을 맺고, 키의 평균값을 확인
      df.groupby('혈액형')['키'].mean()
      # 혈액형 별로 그룹을 맺고 또 성별로 그룹을 나눈 후 키의 평균값을 확인
      df.groupby(['혈액형','성별'])['키'].mean()
    9. 결측값 채우기

      • fillna(채울값)
        • 결측값을 채워주는 함수 ex) df['키'].fillna(-1)
        • inplace=True
          • 값을 저장하겠다는 뜻 ex) df2['키'].fillna(-1, inplace=True)
      • dropna()
        • 결측값이 있는 행을 제거
        • 기본값은 행 제거, 결측값이 한개라도 있을 경우 삭제
        • how=’all’ (디폴트: how='any')
          • 행의 데이터가 모두 NaN일 경우만 삭제
      • nan
        • NaN 삽입
    10. 중복값 제거하기

      • drop_duplicates()
        • 중복된 데이터를 제거
        • keep=’’ (디폴트: keep='first')
          • last: 중복된 값 중 마지막 인덱스 기준
          • first: 중복된 값 중 첫번째 인덱스 기준
    11. row, column 제거하기

      • drop
        • 해당 열 삭제 ex) df.drop(['그룹','소속사'], axis=1) : 그룹, 소속사 열 삭제 drop(15,axis=0) : 15번째 행 삭제
    12. 데이터프레임 병합하기

      • concat()
        • 데이터를 합침
        • sort=False
          • 순서가 유지되도록 함
        • reset_index
          • index를 새롭게 적용
          • drop=True
            • 기존 index를 삭제
      • merge()
        • 특정 고유한 키(unique id)값을 기준으로 병합

        • 병합의 기준: left, right, inner(교집합), outer(전체)

          merge(데이터프레임1, 데이터프레임2, on='unique id', how='병합의 기준')
    13. Series의 타입

      • astype(타입명)
        • 데이터의 타입을 변환
        • NaN 값이 들어가있으면 변환 불가능
    14. 날짜 변환하기

      • to_datetime()
        • object 타입에서 datetime 타입으로 변환
        1. dt.year
        2. dt.month
        3. dt.day
        4. dt.day
        5. dt.hour
        6. dt.minute
        7. dt.second
        8. dt.isocalendar().week
        9. dt.dayofweek # 요일: 0(월요일) ~ 6(일요일)
    15. apply

      • Series나 DataFrame에 좀 더 구체적인 로직을 적용하고 싶은 경우 사용
      • apply 적용하기 위해서는 별도의 함수가 먼저 정의돼야 함
      • 함수를 매개변수로 넘겨줌
    16. map

      # 성별 컬럼값을 하나하나 체크하여 남자일 경우 1, 여자일 경우 0 반환
      map_gender = {'남자':1,'여자':0}
      df['성별'].map(map_gender)
    17. 데이터프레임의 산술 연산

      • 행의 개수가 다를 경우 부족한 데이터를 NaN으로 취급
      # 행들의 각 컬럼값들을 전부 합친값
      df['파이썬'] + df['자료구조'] + df['데이터분석']
    18. selete_dtypes

      ex) selete_dtypes(include='object’)

      • include='object’
        • 문자열 필드만 가져오기
      • exclude='object’
        • 문자열 필드만 빼고 가져오기
    19. 원 핫 인코딩(One-Hot-Encoding)

      • 더미변수

      • 원 핫 인코딩은 한 개의 요소는 True, 나머지 요소는 False로 만들어 카테고리형으로 표현하는 기술

      • df['혈액형_code']를 머신러닝 알고리즘에 넣어 데이터를 예측하려고 지시를 하면 컴퓨터는 값들 간의 관계를 형성하게 됨

      • 만약 B형은 1, AB형은 2라는 값을 가지고 있을 때, 컴퓨터는 'B형 + AB형 = O형' 라고 이상한 관계를 맺을 수 있게 됨

      • 별도의 column을 형성해주고 1개의 column에는 True, 나머지는 False 라고 넣어줌으로 'A, B, AB, O형의 관계는 독립적이다' 라는 카테고리로 표현해주는 방식 -> 원 핫 인코딩

      blood_map = {'A': 0, 'B':1, 'AB':2, 'O':3}
      df['혈액형_code'] = df['혈액형'].map(blood_map)
      • get_dummies
        • 더미 데이터들을 가져옴 ex) pd.get_dummies(df['혈액형_code'])
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글