일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 아웃룩
- VBA
- Outlook
- office
- 윈도우11
- pythongui
- matlab
- 안드로이드
- 파워포인트
- 문자열
- win32com
- 깃
- pyqt5
- Windows11
- 엑셀
- Windows10
- Excel
- python
- 파이썬
- pandas
- 오피스
- Android
- 윈도우10
- 비주얼베이직
- git
- 파이썬GUI
- html
- windows
- python3
- 파이썬3
Appia의 IT세상
파이썬[Python] Pandas, DataFrame 루프(Iteration) 돌기 본문
이번 포스팅은 파이썬[Python] Pandas의 데이터 컨테이너인 Series, DataFrame을 루프 돌리는 것에 대해서 한번 살펴보고자 합니다. 실제 많은 기본적인 반복문에 대해서 사용자들이 사용할 줄 알 것이라고 생각합니다. 하지만, 관련해서 혹시 알아보고자 하신다면, 다음 링크를 참조하시길 바랍니다.
앞서서 Pandas에서 살펴보면서, Series/DataFrame 에 대해서 살펴봤는데요. 관련해서 다음과 같이 루프 문으로 반복을 진행해 보고자 합니다. 그럼 먼저 다음 예를 한번 살펴보겠습니다.
example)
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(4,3),columns=['n1','n2','n3']) #DataFrame 생성
df2 = pd.Series([1,2,3,4]) #Series 생성
print("DataFrame Loop result :")
for i in df1 :
print(i)
print("Series Loop result :")
for si in df2:
print(si)
|
cs |
result)
DataFrame Loop result :
n1
n2
n3
Series Loop result :
1
2
3
4
|
cs |
보이는 바와 같이 DataFrame의 경우 Column인 출력이 됩니다. 그럼, Series의 경우 위에 입력한 값이 출력 되는 것을 알 수 있습니다. 실제 여기에서 이제 문제가 조금 있습니다. Series의 경우 값이 출력되기 때문에 그리 큰 상관이 없습니다. 하지만, DataFrame의 경우 값이 출력이 되지 않습니다. 이러한 문제를 극복하고자 DataFrame의 루프를 돌리면서 값을 출력하기 위한 함수들에 대해서 한번 살펴보고자 합니다.
그럼 다음 예제들을 한번 살펴보면서 이야기를 드리겠습니다.
example)
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(4,3),columns=['n1','n2','n3'])
for key, value in df1.iteritems():
print(key,value)
|
cs |
result)
n1 0 -0.040363
1 -1.055913
2 -0.365176
3 -0.725238
Name: n1, dtype: float64
n2 0 0.187429
1 -0.491225
2 -0.561005
3 0.003273
Name: n2, dtype: float64
n3 0 -1.110092
1 -2.238002
2 -0.278132
3 -0.486980
Name: n3, dtype: float64
|
cs |
Column을 기반으로 각 값들을 출력을 해줍니다. 즉 Series 단위로 값을 표현해준다라고 보시는 것이 조금 더 정확합니다. 이 때, key와 Value 한짝으로 생성을 해줍니다.
그럼 이번에는 Row 기반으로 출력해주는 방법에 대해서 살펴보겠습니다. 즉, row index 하나에 각 column이 해당하는 부분들을 출력해주신다고 보시면 됩니다. 그럼 다음 예제를 살펴보겠습니다.
example)
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(4,3),columns=['n1','n2','n3'])
for row_index, value in df1.iterrows():
print (row_index,value)
|
cs |
result)
0 n1 -0.276907
n2 -2.566083
n3 0.544182
Name: 0, dtype: float64
1 n1 1.097778
n2 -1.178530
n3 -0.163585
Name: 1, dtype: float64
2 n1 -0.788264
n2 1.081698
n3 0.377370
Name: 2, dtype: float64
3 n1 -0.736717
n2 1.556362
n3 -0.788426
Name: 3, dtype: float64
|
cs |
iterrows()함수를 이용하여 한 열씩 어떤 Column값이 무엇인지에 명시해 주고 있습니다. 저는 iteritems()와 iterrows() 위의 두가지 함수를 이용해서 Pandas의 DataFrame의 값과 인덱스/Row들에 대해서 출력을 해봤습니다.
많은 데이터를 처리하는 Pandas는 이미 자체 좋은 함수 및 메쏘드를 제공합니다. 하지만, 위와 같이 전통적인 반복문을 사용할 때 오늘 포스팅 한 부분들이 많이 사용이 됩니다. 도움이 되셨으면 좋겠습니다. 혹 궁금하시거나 문제 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python Pandas' 카테고리의 다른 글
파이썬[Python] Pandas, DataFrame의 인덱스(label)를 이용한 열, 행 선택 방법(loc) (0) | 2020.04.03 |
---|---|
파이썬[Python] Pandas, DataFrame의 데이터 정렬하기(Sort) (0) | 2020.04.01 |
파이썬[Python] Pandas, Reindex - Row/Column Label(Index)구조 및 이름 변경하기 (0) | 2020.03.29 |
파이썬[Python] Pandas, 기술 통계[descriptive statistics] 메소드 (0) | 2020.03.27 |
파이썬[Python] Pandas, DataFrame 기본 메소드 기능 (0) | 2020.03.25 |