Appia의 IT세상

파이썬[Python] Pandas, DataFrame 루프(Iteration) 돌기 본문

Python/Python Pandas

파이썬[Python] Pandas, DataFrame 루프(Iteration) 돌기

Appia 2020. 3. 31. 07:21
반응형

이번 포스팅은 파이썬[Python] Pandas의 데이터 컨테이너인 Series, DataFrame을 루프 돌리는 것에 대해서 한번 살펴보고자 합니다. 실제 많은 기본적인 반복문에 대해서 사용자들이 사용할 줄 알 것이라고 생각합니다. 하지만, 관련해서 혹시 알아보고자 하신다면, 다음 링크를 참조하시길 바랍니다. 

 

파이썬[Python] 004 분기문(조건문), 반복문

 

파이썬[Python] 004 분기문(조건문), 반복문

분기문(조건문) 흔히들 갈림길 또는 조건에 의해서 하나를 선택해야 하는 경우가 생깁니다. 프로그래밍을 하다 특정 조건에서만 실행되는 명령이 있고, 경우에 따라서는 그 조건이 부합할 때, 부합하지 않을 때,..

appia.tistory.com

앞서서 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는 이미 자체 좋은 함수 및 메쏘드를 제공합니다. 하지만, 위와 같이 전통적인 반복문을 사용할 때 오늘 포스팅 한 부분들이 많이 사용이 됩니다. 도움이 되셨으면 좋겠습니다. 혹 궁금하시거나 문제 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments