[부스트캠프 Pre-Cource] 11. Pandas(1)

김상윤·2022년 7월 31일
0

부스트캠프AI-PreCource

목록 보기
11/12

Pandas

  • 구조화된 데이터 처리를 지원하는 Python 데이터분석 라이브러리
  • Numpy와 통합하여 기능을 제공하여, 스프레드시트 처리 기능이 강력해졌다.
  • Python계의 엑셀
  • Tabular : 테이블형태의 (행렬)데이터 (엑셀의 Sheet)

라이브러리 호출

import pandas as pd

데이터 로딩

  • df_data = pd.read_csv()
    : csv파일을 로드해옴
  • df_data.columns = [" ", " "]
    : Columns Header 이름 지정
  • df_data.values
    : 모든 데이터를 ndarray 타입으로 반환

pandas의 구성

Series

: DataFrame 중 하나의 Column에 해당하는 Object

  • ndarray를 기반으로 만든 ndarray의 subclass
  • ndarray와 달리 index가 있다.

생성

  • index는 문자로도 설정 가능
  • Dict type으로도 Series 객체 생성 가능
  • 값 할당을 안 하면 NaN 할당

data 호출

  • index로 접근 가능
    • my_series[2]
      my_series["apple"]
    • my_series["a"] = 2

변수

  • my_series.values
    : 값들 ndarray로 리턴
  • my_series.index
    : index값들 ndarray로 리턴
  • my_series.name
    : series 객체의 이름
  • my_series.index.name
    : index의 이름

DataFrame

: data table 전체에 대한 Object

  • Series를 모아서 만든 Data Table
  • column(feature) 마다 datatype이 각각 지정되어 있다.
    : 각각 하나의 Series이기 때문에

생성, 접근

feature(column) 접근

  • 특정 (Series data) feature data 접근 - 2가지 방법
    • df.feature1
    • df["feature1"]
  • 한개의 feature 선택
    -> Series 리턴
  • 여러개 feature 선택 : list형태로 feature들 넘겨줘야함
    -> DataFrame 리턴
  • DataFrame 생성
    • 불러온 전체 DataFrame 중 일부 feature(column, series)만 선택해서 새로운 DataFrame 생성
      : 새로운 feature 추가도 가능
    • 실제로는 DataFrmae()함수 안 쓰고 그냥 feature 접근으로 DataFrame 생성
      (생성하면서 새로운 feature 추가는 불가능)

조건에 맞는 feature data 접근

  • Series(ndarray)의 조건연산자를 활용하여 조건에 맞는 feature의 data들만 뽑아올 수 있다.

index(row) 접근 _ loc / iloc

  • indexing된 새로운 DataFrame 리턴
  • Indexing
    • df.loc[인덱스의값] / df.loc[인덱스의값:인덱스의값]
      : index의 값으로 접근 _ 문자열이면 문자 열값으로 접근
      : 해당 index 명이 존재하지 않는 경우에는, 새로운 행으로 데이터가 추가
    • df.iloc[n:m]
      : index를 0부터 할당해 숫자로 변형한 position을 이용해 범위 data 접근
      : 행 추가는 안 되고, 수정 만 가능
  • df[n:m]
    @df["feature"]로 접근하면 해당 feature(column) 기준으로 접근하지만, 숫자(index)를 넣으면 row 기준으로 data을 뽑아온다.

feature, row 동시 접근

  • df["feature1"][n:m]
  • df.loc[a:b, ["f1", "f2"]]
    • a와 b는 명확한 index의 값 (position X)
    • list 형태로 feature 인자를 넘겨서 특정 feature와 index에 접근 가능
  • df.iloc[n:m, i:j]

조작

feature 추가

  • df["new_feature"] 접근법으로만 새로운 feature 추가 가능
  • Boolean feature 생성 _ feature 비교연산자
    • feature에 비교 연산자를 수행하면 각 data값에 대한 연산 결과 Boolean값으로 구성된 새로운 Series 리턴
    • 새로 추가한 feature에 조건을 이용한 Boolean data 추가

feature 삭제

  • del df["feature_name"]
  • df.drop("feature_name", axis=1)
  • df.drop("f2", axis=1, inplace=True)
    : df 자기 자신에도 "f2" feature 삭제 동작이 적용

    "inplace = True" 파라미터
    : DataFrame의 함수들은 기본적으로 객체 본체에 변화를 주지 않고, 함수를 적용한 새로운 DataFrame을 리턴 할 뿐이다.
    : inplace에 True 값을 주면 함수를 호출한 DataFrame 객체 본체에 변화가 적용된다.

index 재설정

  1. df.index = list(range(n))
  2. df.reset_index()
    : index가 하나 더 생긴다. (df 자신은 두고 조작한 DataFrame 리턴)
    • df.reset_index(drop=True)
      : 기존 index를 죽인다.
    • df.reset_index(inplace=True, drop=True)
      : df 자기 자신에도 변화가 적용된다.

Operation

  • 한 쪽이라도 값이 없으면, 결과가 NaN값으로 할당
  • (fill_value=x) 파라미터를 통해 NaN값 대신 들어갈 값을 설정 가능
  • 한 쪽에 어떤 index가 2개 이상 있으면 각각에 대해 모두 연산을 수행하여 결과 row 여러개 생성
    • Series
    • DataFrame

map

  • Series 데이터에 map 함수 사용 가능
    : 각 element에 설정한 값을 mapping
  • DataFrame(여러개의 Series)에 호출 불가능
  • 원본 data를 바꾸려면, 역시 inplace에 True를 줘야한다.
  • Series 정보
    • lambda 식
      : Series의 각 element에 lambda 수식 적용
    • Dict type
      : Dict data를 넘겨줌으로써, 대응하는 값으로 element 값 변경

    • Series data
      : Series 객체를 넘겨줌으로써, 대응하는 index위치의 데이터로 변경

apply

  • DataFrame(여러개의 Series)에 호출
  • column(feature) elements 값들 전체에 대한 연산 수행
  • Series 단위에 호출하면 map과 역할이 같음
  • 내장 함수와 동일한 역할

applymap

  • DataFrame(여러개의 Series)에 호출
  • map, Series에 호출한 apply처럼
    모든 element 값들에 각각 함수 연산 적용

pandas의 함수 (built-in function)

df.describe()

: (Numeric type)수치형 변수의 데이터 요약 정보를 출력

df["f1"].unique()

  • Series data의 유일한 value를 (value의 종류) list로 리턴

df.isnull()

  • NaN(null)이면 True, 값이 있으면 False
  • sum() 함수를 이어서 쓰면 결측치 data 개수를 반환 가능

df.sum(axis= )

  • axis=0 : column(feature) 합
  • axis=1 : row (index) 합

df.sort_values()

  • feature를 기준으로 정렬
  • ascending : 오름차순

Correlation & Covariance

  • correlation : 상관계수
    covariance : 공분산
  • df["f1"].corr(df["f2"])
    df["f1"].cov(df["f2"])
    : 두 feature에 대한 수치를 리턴

0개의 댓글