ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python_EDA] as_index옵션과 index옵션의 차이
    쪼랭 X Python 2023. 11. 19. 11:06

    ※주의

    이 글은 세상물정모르는 코린이가 Chat GPT가 알려주는 지식을 여과없이 이해해 작성한 자료임으로,
    저와 같은 코린이분들은 비판없는 수용을 '지양'해주시기 바라며 저와 다른 세상에서 코딩을 하시는
    코딩 고수분들은 아낌없는 조언과 비판을 '지향'해주시기 바랍니다. :)

     

    ※사용법 필자가 쓴 말은 초록색, GPT가 한말은 파란색으로 구분해두었습니다.

     

    [사건의 발단]

     

    공공데이터포털에 개방된 '공공데이터 개방현황'을 활용해 데이터 분석을 해보고 싶었다.

    가장 먼저, 기관별 다운로드수를 보고싶었고 아래 코드를 실행했다.

     

    ---------------------------------------------------------------------------------------------

    code_down_groupby4 = df.groupby('code')['down'].mean()
    print(code_down_groupby4)
    code_down_groupby.to_excel(path+'기관별다운로드수4.xlsx', + index=False)

    ---------------------------------------------------------------------------------------------

     

    실행한 결과를 알고 싶어 저장한 엑셀파일을 확인해보니...

     

     

    내가 원한 것은.... [code]와 [down]칼럼이 모두 나오는 것이었는데...

    이 문제를 해결하기 위해 이해 없이 사용해왔던 "index=False"의 역활을 파보기로 하였다.

     

     

    [먼저! 인덱스(index)란?] 

     

     (쪼랭) 인덱스의 정확한 뜻이 뭐야? 

     (GPT)

    인덱스(Index)는 데이터 구조에서 각 항목에 대한 고유한 식별자입니다. 일반적으로 판다스에서는 데이터프레임(DataFrame)이나 시리즈(Series) 객체의 행을 식별하는 데 사용됩니다.

    판다스의 DataFrame은 표 형식의 데이터 구조이며, 각 행과 열에는 인덱스와 컬럼이라는 두 가지 종류의 레이블이 있습니다.

    • 행 인덱스(Row Index): 각 행에 대한 식별자로, 기본적으로는 0부터 시작하는 정수로 지정됩니다. 그러나 사용자가 지정할 수도 있습니다.
    • 열 인덱스(Column Index): 각 열에 대한 식별자로, 컬럼의 이름이나 사용자가 지정한 다른 레이블이 될 수 있습니다.

    인덱스를 사용하면 데이터프레임에서 특정 행이나 열에 빠르게 접근할 수 있습니다. 또한, 데이터의 정렬, 그룹화, 병합 등 다양한 연산에서 유용하게 활용됩니다.

    판다스에서 groupby 함수와 함께 사용할 때, 그룹화된 데이터의 결과에서 각 그룹의 식별을 위해 인덱스가 사용됩니다. as_index 옵션을 사용하면 그룹화된 결과에서 인덱스를 유지할지 여부를 제어할 수 있습니다.

     

    ['as_index = False' 랑 'index= False' 랑 기능은 같지만 쓰임이 다르다고...?] 

    (GPT)

    • groupby 메서드의 as_index 옵션: 그룹화된 결과에서 대상 열을 인덱스로 사용할지 여부를 결정합니다. as_index=False를 사용하면 대상 열이 인덱스로 지정되지 않고, as_index=True일 경우에는 대상 열이 인덱스로 지정됩니다. (아무것도 쓰지 않을 경우 'as_index=True'로 설정된다!)
    • to_excel 메서드의 index 옵션: DataFrame을 엑셀 파일로 저장할 때, 인덱스를 엑셀 파일에 포함할지 여부를 결정합니다. index=False를 사용하면 인덱스가 엑셀 파일에 저장되지 않으며, index=True일 경우에는 인덱스가 엑셀 파일에 포함됩니다.

    groupby 메서드에서 as_index 옵션은 그룹화된 결과에서의 인덱스 설정을 제어하고, to_excel 메서드에서 index 옵션은 엑셀 파일에 저장할 때의 인덱스 설정을 제어합니다.

     

    (쪼랭)

    그럼 내가 이해한게 맞는지 확인해줘 groupby매서드에서는 as_index 옵션이 대상 열을 index 설정을 할지말지 결정하는것이고 to_excel매서드에서는 index옵션이 index로 설정된 열을 저장된 엑셀에 보일지 말지 결정하는거야?

     

    (GPT)

    네, 정확히 맞습니다! 여러분의 이해가 정확합니다.

     

    [예시] 

    (예시를 작성하면서 알게된 사실...!)

    인덱스로 설정된 데이터 값은 생산된 엑셀파일에서 Bold(굵은글자)처리가 된다...!

    [아무것도 설정하지 않았을 때]
    code_down_groupby = df.groupby('code')['down'].mean()
    print(code_down_groupby)
    code_down_groupby.to_excel(path+'기관별다운로드수.xlsx')

    [groupby 인덱스만 설정했을 때]
    code_down_groupby2 = df.groupby('code',as_index=False)['down'].mean()

    print(code_down_groupby2)
    code_down_groupby2.to_excel(path + '기관별다운로드수2.xlsx')

    [두개 모두 인덱스 설정했을 때]
    code_down_groupby3 = df.groupby('code', as_index=False)['down'].mean()
    print(code_down_groupby3)
    code_down_groupby3.to_excel(path + '기관별다운로드수3.xlsx', index=False)

     [to_excel 인덱스 설정했을 때]
    code_down_groupby4 = df.groupby('code')['down'].mean()
    print(code_down_groupby4)
    code_down_groupby.to_excel(path+'기관별다운로드수4.xlsx', index=False)

     

Designed by Tistory.