ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pandas, Numpy] 파이썬에서 표와 행렬을 처리할 수 있는 Pandas와 Numpy 패키지
    Python/Pandas, Numpy 2023. 4. 24. 10:35
    반응형

    표와 행렬을 처리할 수 있는 Pandas와 Numpy 패키지


    파이썬(Python)에서는 기본적으로 표와 행렬 형태의 데이터를 다루기 어려운 편입니다. 그래서, 많은 데이터 과학자들은 이를 이용하기 위해서 별도의 패키지(Package)를 사용하는데요, 표 형식의 데이터는 판다스(Pandas), 배열 형식의 데이터는 넘파이(Numpy)를 사용하는 편입니다.

     

     

    판다스(Pandas)


    판다스는 데이터프레임(DataFrame)이라고 하는 객체를 이용해서 표 형태의 데이터를, 시리즈(Series)라고 하는 객체를 이용해서 하나의 열(column)을 구현하는 패키지입니다. 이 때문에 우리가 흔히 알고 있는 column-row 구조를 효과적으로 구현할 수 있으며, 엑셀 파일이 호환되는 강점이 있지요.

     

     

    판다스를 실행하기 위해서는 파이썬에서 import pandas as pd 명령어를 통해 불러오면 됩니다. 이 때, pd라는 이름을 사용하는 이유는 파이썬 개발자들 사이에서 암묵적인 약속같은 것입니다. 대부분의 코드에서 판다스는 pd라는 이름으로 불러오고 있기 때문이지요.

     

     

    판다스의 사용 예시는 아래와 같습니다. [1, 2, 3] 리스트를 데이터프레임을 만든 뒤, 몇가지 연산을 한 다음 확인하는 코드입니다.

     

     

    import pandas as pd
    
    df = pd.DataFrame([1, 2, 3])
    print(df)
       0
    0  1
    1  2
    2  3

     

     

    # 0번 열에 모두 1을 더하는 코드
    df[0] + 1
    0    2
    1    3
    2    4
    Name: 0, dtype: int64

     

     

     

    Pandas DataFrame 읽기와 쓰기


    판다스 데이터프레임은 엑셀 문서나 표 형태의 파일(xlsx, csv, tsv 등)과 호환됩니다. 그래서, 이런 데이터가 주어진다면 파이썬에서 편집을 간단하게 하기 위해 불러올 수 있지요. 참고로, 이렇게 불러오는 데이터는 별도의 출력을 하지 않는 한 보이지 않기 때문에 우리가 쓰는 엑셀 등의 프로그램에 비해서 빠르게 편집할 수 있답니다.

     

     

    아래에는 표 형태의 파일을 읽고 쓰는 방법과, 데이터 형태를 확인하기 위해서 표의 일부분, 또는 표의 정보를 확인해 보는 코드를 소개해 드리겠습니다. 이 코드를 따라하고 싶다면, iris.csv 파일을 다운로드한 뒤 계속해 주시면 됩니다. (iris 데이터 출처: Dua, D. and Graff, C. (2019). UCI Machine Learning Repository [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.)

     

     

    iris.csv
    0.00MB

     

     

    # 현재 경로의 data 폴더에 있는 iris.csv 파일 읽기
    df = pd.read_csv('data/iris.csv')
    
    # iris 표의 상위 5개 열 보기
    df.head()
      sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
    0 5.1 3.5 1.4 0.2 0
    1 4.9 3.0 1.4 0.2 0
    2 4.7 3.2 1.3 0.2 0
    3 4.6 3.1 1.5 0.2 0
    4 5.0 3.6 1.4 0.2 0

     

     

    # iris 표의 하위 5개 열 보기
    df.tail()
      sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
    145 6.7 3.0 5.2 2.3 2
    146 6.3 2.5 5.0 1.9 2
    147 6.5 3.0 5.2 2.0 2
    148 6.2 3.4 5.4 2.3 2
    149 5.9 3.0 5.1 1.8 2

     

     

    # iris 표의 정보 확인하기
    df.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 150 entries, 0 to 149
    Data columns (total 5 columns):
     #   Column             Non-Null Count  Dtype  
    ---  ------             --------------  -----  
     0   sepal length (cm)  150 non-null    float64
     1   sepal width (cm)   150 non-null    float64
     2   petal length (cm)  150 non-null    float64
     3   petal width (cm)   150 non-null    float64
     4   target             150 non-null    int64  
    dtypes: float64(4), int64(1)
    memory usage: 6.0 KB

     

     

    # iris.xlsx 이름으로 파일 쓰기
    df.to_excel('iris.xlsx')

     

     

    데이터 라벨링(labeling)


    파이썬에서 판다스 데이터프레임을 만든 뒤, 저장된 데이터를 손쉽게 확인할 수 있도록 라벨(label)을 작성할 수 있습니다. 이 때 행 이름은 index, 열 이름은 column이라고 표현합니다.

     

     

    판다스의 데이터 라벨링을 할 때는 리스트 형식으로 작성하면 편리합니다. 이번 예제는 조금 전 사용했던 df 데이터프레임의 column 이름을 바꿔보는 것으로 하겠습니다.

     

     

    lables = ['a', 'b', 'c', 'd', 'e']
    
    # df 데이터프레임에 lables 리스트를 적용하기
    df.columns = lables
    df.head()
      a b c d e
    0 5.1 3.5 1.4 0.2 0
    1 4.9 3.0 1.4 0.2 0
    2 4.7 3.2 1.3 0.2 0
    3 4.6 3.1 1.5 0.2 0
    4 5.0 3.6 1.4 0.2 0

     

     

    넘파이(Numpy) 이용하기


    넘파이는 파이썬에서 수치해석, 통계 기능을 이용할 때 자주 쓰이는 패키지입니다. 이 패키지는 판다스와는 달리 ndarray 라는 자료형을 사용하며, 정적 배열(데이터 형식과 길이를 미리 할당)이라는 특징을 가지고 있습니다. 동적 배열(데이터 형식과 길이가 가변적)인 파이썬의 리스트와 대조적이지요.

     

     

    넘파이를 이용해서 ndarray 객체를 만들고, 간단한 연산을 하는 코드를 아래에 적어 보겠습니다.

     

     

    import numpy as np
    
    arr = np.array([1, 2, 3])
    arr + 1
    array([2, 3, 4])

     

     

    넘파이 ndarray 읽기와 쓰기


    넘파이 ndarray 역시 읽기와 쓰기가 가능합니다. 다만, ndarray는 판다스와 달리 기본적으로 우리가 흔히 쓰는 xlsx, csv 등의 파일이 아닌 npy 파일로 읽고 쓰는 편입니다. 이 파일은 바이너리 형태이기 때문에 우리가 읽을 수는 없습니다만 파일 처리 속도가 아주 빠른것이 장점입니다.

     

     

    # 앞서 만든 arr를 저장하기
    np.save('arr.npy', arr)
    # 저장한 파일 불러오기
    np.load('arr.npy')
    array([1, 2, 3])

     

    반응형

    댓글

문의: jwkang3929@naver.com