파이썬(Python)/pandas

[Python] Pandas DataFrames이란? 선언, 데이터 찾기, 정렬하기 예제(find, sort)

끄적끄적아무거나 2021. 10. 26. 14:10
반응형

 

목차

     

     

     

     

     

     

    [Python] Pandas DataFrames이란?

     

     

    파이썬의 판다스는 데이터 처리에 용이한 라이브러리 입니다. 앞서 설명한 Pandas Series와 마찬가지로 DataFrames은 데이터를 엑셀과 비슷한 방식으로 관리하기 위해 필요한 함수 입니다.

     

     

    Dataframes은 2차원 배열로 행과 열로 구성되어 있습니다. 간단히 설명하자면 우리가 사용하는 엑셀의 대부분의 기능을 Dataframes의 내장 함수를 이용해서 사용할 수 있다고 생각하시면 됩니다. Series와의 차이는 Series는 1차원 배열(array)였고 Dataframes은 2차원 배열이라는 것입니다. 

     

     

    아래는 간단하게 DataFrame 사용에 대한 예제 코드 입니다.

     

    코드 & 결과>>

    import pandas as pd
    
    dict_var = {'c0': [1, 2, 3, "a", "b"], 'c1': [4, 5, 6, [ 7, 8], 9]}
    
    df = pd.DataFrame(data=dict_var)
    print(df)
    
    
    ###결과###
      c0      c1
    0  1       4
    1  2       5
    2  3       6
    3  a  [7, 8]
    4  b       9

     

    주석>> 

    라인1 : 판다스 라이브러리(library)를 사용하기 위해 import를 선언하였습니다. 설치가 되어있지 않다면 "pip install pandas"로 설치하셔야 합니다.

     

    라인3: 딕셔너리(dictionary) 형식으로 선언했고 value 값은 정수, 문자, 리스트 등 다양하게 넣을 수 있습니다. 

     

    라인5: DataFrame의 속성 중에 data에 입력 값을 넣습니다.

     

    라인9: 결과에서 확인할 수 있듯이 2차 배열로 결과가 출력되었습니다. 왼쪽에 index를 위한 라인이 추가되어 있음을 알 수 있습니다. 이 결과가 하나의 테이블로 인식됩니다.

     

     

     

     

    [Python] Pandas DataFrames : 데이터 찾기

     

    DataFrame으로 저장한 데이터 값을 불러오는 방법은 loc라는 함수를 사용합니다. 입력 값으로 행(row) 값을 입력 합니다. 행의 값에 index를 사용해서 별도의 행의 값을 선언하면 loc로 찾을 때 선언된 행의 값을 사용하면 됩니다.

     

    아래 예제 코드를 보시면 쉽게 이해되실겁니다. 

     

    코드 & 결과>>

    import pandas as pd
    
    dict_var = {'c0': [1, 2, 3, "a", "b"], 'c1': [4, 5, 6, [ 7, 8], 9] }
    
    df = pd.DataFrame(data=dict_var, index = ["r0","r1","r2","r3","r4"])
    print("###df###")
    print(df)
    print("###df.loc['r3']###")
    print(df.loc['r3'])
    
    df = pd.DataFrame(data=dict_var)
    print("###df###")
    print(df)
    print("###df.loc[1,2]###")
    print(df.loc[[1,2]])
    
    ###결과###
    
    ###df###
       c0      c1
    r0  1       4
    r1  2       5
    r2  3       6
    r3  a  [7, 8]
    r4  b       9
    ###df.loc['r3']###
    c0         a
    c1    [7, 8]
    Name: r3, dtype: object
    ###df###
      c0      c1
    0  1       4
    1  2       5
    2  3       6
    3  a  [7, 8]
    4  b       9
    ###df.loc[1,2]###
      c0 c1
    1  2  5
    2  3  6

     

     

    주석>>

     

    5번 라인: index 속성(attribute)를 사용해서 별도의 행에 대한 라벨링을 하였습니다. 

     

    7번 라인: 라벨(label)이 선언된 결과는 20번째 줄 부터 확인할 수 있습니다.

     

    9번 라인: loc함수를 사용하고 입력 값으로 행의 index 값인 r3을 사용하여 해당 행의 결과를 가져왔습니다. 

     

    11번 라인: Dataframe을 다시 선언하였고 이번에는 라벨(label)없이 진행하여 0부터 자동으로 붙는 index가 생겼습니다.

     

    15번 라인: 1번 index와 2번 index에 해당하는 값을 가져 왔습니다. 

    반응형

     

     

     

     

     

     

    [Python] Pandas DataFrames : 데이터 정렬 하기 (sort)

     

     

    파이썬의 list와 마찬가지로 Pandas DataFrames에서도 정렬을 할 수 있습니다. 정렬은 간단하게 어떤 열(column)을 기준으로 정열할지 올림차순, 내림차순을 결정할 수 있습니다. 그리고 인덱싱에 사용하였던 키 값을 기준으로 정렬도 가능합니다. 

     

    정렬은 아래와 같이 2가지 함수로 실행 됩니다.

     

    • sort_index
    • sort_values

     

     

     

     

    코드 : sort_values>>

    import pandas as pd
    import numpy as np
    
    dict_var = {
        'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
        'col2': [2, 1, 9, 8, 7, 4],
        'col3': [0, 1, 9, 4, 2, 3],
        'col4': ['a', 'B', 'c', 'D', 'e', 'F']
    }
    
    df = pd.DataFrame(data=dict_var, index = [3,2,1,0,4,5])
    print("###df###")
    print(df)
    print("")
    df = df.sort_values(by='col1', ascending=False)
    print(df)

     

    결과>>

    ###df###
      col1  col2  col3 col4
    3    A     2     0    a
    2    A     1     1    B
    1    B     9     9    c
    0  NaN     8     4    D
    4    D     7     2    e
    5    C     4     3    F
    
      col1  col2  col3 col4
    4    D     7     2    e
    5    C     4     3    F
    1    B     9     9    c
    3    A     2     0    a
    2    A     1     1    B
    0  NaN     8     4    D

     

    주석>>

    15번 라인 : 첫번째 열(col1)을 이용해서 정렬을 하였습니다. ascending=False 값을 설정함으로서 내림차순이 설정되었습니다. default는 True이고 오름차순입니다. 

     

    그리고 return 값을 다시 df에 저장해야지 정렬이 됩니다. 그렇지 않으면 return을 받지 못해 정렬이 안되고 동일한 결과가 나옵니다.

     

     

     

     

    코드 : sort_index>>

    import pandas as pd
    import numpy as np
    
    dict_var = {
        'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
        'col2': [2, 1, 9, 8, 7, 4],
        'col3': [0, 1, 9, 4, 2, 3],
        'col4': ['a', 'B', 'c', 'D', 'e', 'F']
    }
    
    df = pd.DataFrame(data=dict_var, index = [3,2,1,0,4,5])
    print("###df###")
    print(df)
    print("")
    df = df.sort_index()
    print(df)

     

    결과>>

    ###df###
      col1  col2  col3 col4
    3    A     2     0    a
    2    A     1     1    B
    1    B     9     9    c
    0  NaN     8     4    D
    4    D     7     2    e
    5    C     4     3    F
    
      col1  col2  col3 col4
    0  NaN     8     4    D
    1    B     9     9    c
    2    A     1     1    B
    3    A     2     0    a
    4    D     7     2    e
    5    C     4     3    F
    반응형