ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pandas] 기초
    Python/Pandas 2020. 3. 10. 19:30

    Pandas란?

     

    데이터 분석(Data Analysis)을 위해 널리 사용되는 파이썬 라이브러리 패키지로 1차원 자료구조인 Series, 2차원 자료구조인 DataFrame, 3차원 자료구조인 Panel을 지원합니다.

     

    Pandas의 사용법은 다음과 같습니다. numpy와 마찬가지로 pandas도 pd라는 함축어를 사용합니다.

    import pandas as pd

    Series

     

    1차원 자료구조로 배열 / 리스트와 같은 데이터들 받아들입니다.

     

    ● 기본 생성

    data = [1,2,3,4,5]
    s = pd.Series(data)
    s

     

    ● Value 값 확인

     

    ● 자료형 확인

     

    ● Index 확인

     

    ● Index 지정 - 이미 있는 데이터에 지정

     

    ● Index 지정 - 데이터 생성하면서 지정

     

    ● Index 활용

    위에 결과 값이 왜 1 2 3 4 5가 나왔는지는 아래 그림을 참고하시면 될것같습니다.

    배열의 index에 따라 출력을 하고 지정해준 index에 따라 출력을 했기 때문에 위와 같은 결과가 나온것입니다.


    DataFrame

     

    Series를 묶어놓은 형태로 2차원 행렬 데이터에 인덱스를 붙인것과 비슷합니다. 2차원이므로 Series의 행 방향 인덱스 뿐만 아니라 열 방향 인덱스도 가능합니다. 열(Column)을 Dictionary의 key, 행(Row)을 value 값으로 사용합니다.

     

    DataFrame은 Python의 Array를 이용하거나 Numpy의 Array를 이용해서도 만들 수 있습니다.

     

    ● Python의 Array를 사용하여 DataFrame 만들기

     

    배열안에 배열을 생성하여 DataFrame을 만들 수 있습니다.

    data1 = [
        [1,2,3,4],
        [5,6,7,8],
        [9,10,11,12],
        [13,14,15,16],
        [17,18,19,20]    
    ]
    data_frame1 = pd.DataFrame(data1)
    data_frame1

     

    ● Numpy의 Array를 사용하여 DataFrame 만들기

     

    이때는 numpy를 사용할것이 때문에 반드시 numpy를 import 해주어야 합니다.

    범위를 1부터 20까지를 지정해주고 reshape함수를 통해 5행 4열의 행렬을 만들어줍니다.

    import numpy as np
    
    data2 = np.arange(1,21).reshape(5,4)
    data_frame2 = pd.DataFrame(data2)
    data_frame2

     

    ● Column 지정하기

     

    Dataframe을 별도의 column을 지정해주지 않으면 숫자로 자동생성합니다.

    이를 변경해주기위해서는 columns 함수를 사용하여 원하는 내용으로 변경해줄 수 있습니다.

    data_frame2.columns = ['a','b','c','d']
    data_frame2

     

    ● Index 지정하기

     

    Column과 마찬가지로 Index도 동일하게 원하는 내용으로 수정할 수 있습니다.

    data_frame2.index = ['가','나','다','라','마']
    data_frame2

    단, Column과 Index 모두 기존에 생성해놓은 값과 일치하는 범위에서 설정해야 합니다. 범위를 벗어나거나 부족하면 에러가 발생합니다.

     

    ● DataFrame 생성 시 index와 column 지정하기

     

    DataFrame을 생성할 때 index와 column을 같이 입력하여 생성할 수 있습니다.

    data2 = np.arange(1,21).reshape(5,4)
    data_frame2 = pd.DataFrame(
                    data = data2,
                    columns = ['a','b','c','d'],
                    index = ['가','나','다','라','마']        
    )
    
    data_frame2


    ● Series를 이용하여 DataFrame 만들기

     

    Series를 여러개 이어 붙여서 DataFrame을 만들 수 있습니다.

    s1 = pd.Series(data = [1,2,3], index = ['a','b','c'])
    s2 = pd.Series(data = [4,5,6], index = ['a','b','c'])
    s3 = pd.Series(data = [7,8,9], index = ['a','b','c'])
    
    data_frame3 = pd.DataFrame(data = {'가' : s1 , '나' : s2, '다' : s3})
    data_frame3

    또한 columns와 index도 직접 설정해줄 수 있습니다.

    data_frame3 = pd.DataFrame(data = [s1, s2, s3],
                                columns = ['a','b','c'],
                                index = ['가','나','다'])
    data_frame3


     

    ● List - Dictionary를 이용하여 DataFrame 만들기

     

    Key : Value 구조로 되어있는 Dictionary를 List안에 넣어 다음과 같이 DataFrame을 만들 수 있습니다.

    list = [
        {'name' : 'Kim', 'age' : 27, 'job' : 'Designer'},
        {'name' : 'Lee', 'age' : 25, 'job' : 'Programmer'},
        {'name' : 'Park', 'age' : 24, 'job' : 'Data Analyst'},
        {'name' : 'Jung', 'age' : 30, 'job' : 'Product Manager'},
    ]
    df = pd.DataFrame(list)
    df

     

    1. DataFrame 안에 들어있는 Series 추출하기

     

    2. DataFrame 안에 들어있는 Series 여러개 추출하기


    ● List - List를 이용하여 DataFrame 만들기

     

    위에서 List안에 Dictionary를 넣어 DataFrame을 만들어봤습니다. 이번에는 List안에 List를 넣어서 DataFrame을 만들어보겠습니다. 동일하게 원하는 데이터 값을 넣고 column을 추가로 입력해주면 위와 동일한 결과 값이 나옵니다.

    list = [
        ['Kim',27,'Designer'],
        ['Lee',25,'Programmer'],
        ['Park',24,'Data Analyst'],
        ['Jung',30,'Product Manager'],    
    ]
    column_name = ['name', 'age', 'job']
    
    df = pd.DataFrame(list, columns = column_name)
    df


    Panel

     

    3차원 자료구조인 Panel은 Axis 0 (items), Axis 1(major_axis), Axis 2(minor_axis) 등 3개의 축을 가지고 있는데 Axis 0은 그 한 요소가 2차원 DataFrame에 해당되며, Axis1은 DataFrame의 행(Row)에 해당되고 Axis 2는 열(Colum)에 해당됩니다.

    # creating an empty panel
    import pandas as pd
    import numpy as np
    
    data = np.random.rand(2,4,5)
    p = pd.Panel(data)
    print(p)

    *버전탓인지 jupyter notebook에서는 Panel 클래스가 Pandas에서 제거 되었다는 에러가 납니다. 공식문서를 더 참조해봐야 할 것 같습니다.

     

     

    'Python > Pandas' 카테고리의 다른 글

    [Pandas] 엑셀 데이터를 이용하여 DataFrame 만들기  (3) 2020.03.12

    댓글

Yellow Apple's LAB