[Pandas]데이터프레임 순회하기

반응형
    반응형

    데이터프레임을 돌 때를 순회한다고 하는데 데이터프레임을 어떤 방식으로 순회할 수 있는지 살펴보겠습니다.

    다양한 방법으로 순회처리를 할 수 있습니다. 이번 포스팅에서는 4가지 방법을 설명하겠습니다.

    1. 인덱스를 사용하는 방법
    2. itertuples 
    3. iterrows 
    4. iteritems

    4가지 모두 간단합니다. 이런게 있는지 몰라서 못 쓰는 것 뿐이지 한번 보면 바로 쓸 수 있습니다.

     

    이번에 준비한 데이터는 sp500의 종목,종목코드,섹터,업종 데이터입니다. 

    이전 포스팅에서 여러번 썼지만 뭘 보여줄 때 이만큼 유용한 데이터 파일은 없는 것 같습니다. 

     

    df

    Symbol을 인덱스로 두었습니다.

     

     

    인덱스를 사용하는 방법

    가장 많이 사용하는 방법이 아닌가 싶습니다.

    예로 바로 보는게 빠르겠죠?

    인덱스를 활용해서 종목명을 가져오겠습니다.

    for idx in df.index:
        print(df.loc[idx,'Name'])

    df.loc를 이용하면 인덱스를 사용할 수 있으니 이렇게 엮어서 할 수 있습니다. 

    df['Name'][idx] 방식으로 할 수도 있는데 추천하는 방법은 아닙니다.

    데이터가 많이 크면 안 되는 건 아닌데 시작할때 빨간색 바탕에 뭔가가 뜨고 시작해서 찝찝하게 코딩이 돌아갑니다.

     

    itertuples

    이번에는 튜플로 반환하는 방법입니다.

     

    for item in df.itertuples():
        print(item)

    되게 복잡해보이지만 튜플로 반환된 겁니다. 각 행별로 튜플이 되어서 반환되게 됩니다.

    한개의 값만 꺼내고 싶다면 튜플인덱싱으로 꺼내면 됩니다.

    종목명만 꺼내봅시다.

    for row in df.itertuples():
        print(row[1])

    튜플로 하면 막 편하진 않지만 다른 방법에 비해 속도가 빠르기 때문에 쓰게 됩니다.

     

    iterrows

    이번에는 iterrows 입니다. 이 메쏘드는 각 행을 인덱스와 시리즈로 반환합니다. 그래서 변수를 두개로 두어서 하는게 편합니다.

    인덱스를 제외한 시리즈만 출력을 해보겠습니다.

     

    for idx,row in df.iterrows():
        print(row)

    이렇게 시리즈로 표현되서 나옵니다. 인덱스가 각 시리즈의 Name이 되는 것을 볼 수 있습니다.

     

    다 쪼개 보면 각 행으로 이루어지는 것을 확인할 수 있습니다.

    for idx,row in df.iterrows():
        print(idx,row[0],row[1],row[2])

     

    iteritems

    파이썬에서 딕셔너리에 쓰는 메쏘드인데 판다스에서도 쓸 수 있습니다.

    판다스의 전체틀 자체를 가져오는 방식인데

    구조가 조금 복잡해 보일수도 있어서 하나씩 뜯어보겠습니다.

    iterrows 와 마찬가지로 두개의 변수로 나타납니다.

     

    for idx,row in df.iteritems():
        print(idx)

    column위주로 나눠집니다. 그래서 idx는 column을 나타냅니다.

    row는 그에 맞춰서 하나씩 값이 나오는 방식입니다.

    한개만 보여드리면 이해가 빠를 것 같습니다.

    for idx,row in df.iteritems():
        print(idx, row[0])

    보시다시피 column : value 형식으로 되어 있는 모양입니다.

    전체를 다 하면 다음과 같이 나옵니다.

    for idx,row in df.iteritems():
        print(idx,row)

    Name 을 한번에 다 모으고 그 다음에 Sector를 다 모으는 방식입니다.

     

    제가 활용을 잘 못하고 있을 수도 있지만 제 경험상으론 iteritems는 보통 엑셀에 파일 정리해서 값을 넣을 때 많이 쓰고 실제 코딩으로 무언가 만들때는 잘 안 쓰는 것 같습니다. 

     

    이렇게 4가지 순회 방법을 알아보았는데요.

    어떻게 쓰는지에 따라 각각의 장점이 있습니다. 

    필요한 곳에 적재적소로 잘 쓰셨으면 좋겠습니다.

     

     

    관련포스팅

    [Python/Excel 다루기] - openpyxl로 엑셀 파일(.xlsx) 불러오기

    [Python/Pandas] - [Pandas] DataFrame 인덱스 설정, 리셋

    [Python/Pandas] - [Pandas] DataFrame 특정 row 선택하는 두가지 방법

     

     

    댓글

    Designed by JB FACTORY

    ....