Python_Basic

for 반복문: 데이터프레임과 함께 사용하기

Genie Lee 2022. 3. 20. 18:39
728x90
반응형

for col in dataframe 을 하게 되면, dataframe[col] 출력시, dataframe에 담긴 모든 컬럼명들이 출력되게 됩니다.  

 

import pandas as pd
 
import numpy as np
 
df1 = pd.DataFrame(np.random.randn(4,3),columns=['n1','n2','n3'])    #DataFrame 생성

for i in df1:
    print(i)
    
----
n1
n2
n3

df1은 dataframe 형태인데, for문을 돌려서 출력해 보면, 위의 보이는 바와 같이 컬럼명만 출력이 됩니다.

즉, for문의 경우 dataFrame을  반복 요소에 넣으면  Column이 출력됩니다.

for <반복자> in <반복할 수 있는 요소>:
        <코드>

 

사례로 확인을 해볼게요. 

app_train 이라는 데이터 프레임이 있습니다. 

 

아래  for col in app_train: 을 하면, 알아서 app_train[col]의 대괄호[   ]는 app_train 데이터프레임의 모든 컬럼명을 의미하고 실행합니다.  

 

# 이 노트북에서는 범주형변수의 유니크한 값이 2개일경우 Label encoding을 사용하고
#그 이상일 경우 One-hot encoding을 사용한다.
le=LabelEncoder()
le_count=0

# 컬럼별로 iterate 돌기
for col in app_train:
    # df[리스트] 
    # dataframe의 경우 
    if app_train[col].dtype=='object':
        # 데이터타입이 object이고 값의 종류가 두개 이하일경우,
        if len(list(app_train[col].unique())) <=2:  
            
            # train과 test에 동일하게 라벨인코딩을 하기위해 train기준으로 fit한값을 train,test에 동일하게 transform해줌
            le.fit(app_train[col])
            
            # train-set, test-set 둘다 Transform
            app_train[col]=le.transform(app_train[col])
            app_test[col]=le.transform(app_test[col])
            
            # 라벨인코딩을 한 컬럼이 몇개인지 카운트
            le_count+=1                                                    # Q 어떻게 카운트하는 건지?
print('%d columns were label encoded.' % le_count)

실제로 아래 코드를 쳐보면, app_train 데이터프레임의 컬럼명들이 나오는 것을 확인하실 수 있습니다.

728x90
반응형