[Pandas]데이터프레임 순회하기
- Python/Pandas
- 2021. 4. 10.
데이터프레임을 돌 때를 순회한다고 하는데 데이터프레임을 어떤 방식으로 순회할 수 있는지 살펴보겠습니다.
다양한 방법으로 순회처리를 할 수 있습니다. 이번 포스팅에서는 4가지 방법을 설명하겠습니다.
- 인덱스를 사용하는 방법
- itertuples
- iterrows
- 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 선택하는 두가지 방법
'Python > Pandas' 카테고리의 다른 글
[Pandas] 데이터프레임 엑셀(xlsx) 저장, 불러오기 (0) | 2021.04.17 |
---|---|
[Pandas] 원하는 값으로 필터링 (0) | 2021.04.11 |
[Pandas] DataFrame을 딕셔너리로 변환 (0) | 2021.04.04 |
Pandas에서 이동평균선 구하기 (0) | 2021.03.20 |
[Pandas] 간단하게 수익률 구하기(pct_change) (0) | 2021.02.27 |