Python for loop example

Page content

강의 홍보

I. 개요

  • 지난 시간에 for_loop의 기본적인 개념에 대해 살펴봤다.
  • 이번 시간에는 for_loop의 실제 다양한 활용 방안에 대해 살펴본다.

II. 데이터 시각화

  • 변수의 개수에 상관없이 for-loop를 활용하면 무한대로 시각화를 작성할 수 있다.
  • 빠르게 코드로 확인해본다.
  • IRIS 데이터를 수집하는 코드를 작성한다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets

iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
print(df.head())
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0                5.1               3.5                1.4               0.2
1                4.9               3.0                1.4               0.2
2                4.7               3.2                1.3               0.2
3                4.6               3.1                1.5               0.2
4                5.0               3.6                1.4               0.2
  • 변수별로 시각화를 작성하기 위해, 우선 변수명을 List에 포함한다.
feature_names = iris.feature_names
print(feature_names)
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
  • 다음 코드는 시각화 작성을 위한 기본 환경설정이다.
  • figsizeJupyter Notebook에 맞게 최적화 되어 있기는 하지만, 수정할 수 있다.
%matplotlib inline
import matplotlib.pylab as plt

plt.rcParams["figure.figsize"] = (14,4)
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['lines.color'] = 'r'
plt.rcParams['axes.grid'] = True 
  • 그리고 마지막으로 for-loop 활용하는 시각화를 작성한다.
for fea in feature_names:
  data = df.copy()
  # iris.sepal_length[:20].plot(kind='bar', rot=0)
  data[fea].plot(kind='hist', rot=0)
  plt.xlabel(fea)
  plt.title(fea)
  plt.show()

png

png

png

png

III. 데이터 전처리

  • 영어 소문자를 대문자로 바꾸는 작업을 for_loop를 통해서 작성한다.
  • 먼저 가상의 데이터를 작성한다.
# 가상의 데이터 만들기
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'], 
                   'Product':['fruit', 'meat', 'fish ', 'milk'], 
                   'Updated_Price':[1250, 1450, 1550, 400], 
                   'Discount':[10, 8, 15, 10]}) 
  
# 데이터 출력
print(df) 
        Date Product  Updated_Price  Discount
0  10/2/2011   fruit           1250        10
1  11/2/2011    meat           1450         8
2  12/2/2011   fish            1550        15
3  13/2/2011    milk            400        10
  • Product의 각 아이템 앞 글자를 바꾸기 위해서는 capitalize() 함수가 필요하다.
  • 먼저 단어 하나를 가지고 앞글자만 대문자로 바꾸는 코드를 작성한다.
df.iat[0, 1].strip().capitalize() 
'Fruit'
df.iat[1, 1].strip().capitalize() 
'Meat'
  • 만약 바꿔야 하는 데이터가 100개이면 위와 같이 작성하는 코드가 굉장히 비효율적이다라는 것을 알 수 있다.
  • 이 때, for_loop를 활용하면 보다 효율적으로 작성할 수 있다.
  • df.shape는 데이터의 행과 열을 표시해준다.
    • 위 함수를 활용하여 데이터의 범위를 지정해주는 작업을 많이 한다.
for i in range(df.shape[0]): 
  df.iat[i, 1]= df.iat[i, 1].strip().capitalize()

print(df)
        Date Product  Updated_Price  Discount
0  10/2/2011   Fruit           1250        10
1  11/2/2011    Meat           1450         8
2  12/2/2011    Fish           1550        15
3  13/2/2011    Milk            400        10

IV. 결론

  • 간단한 예제를 통해서 for_loop의 활용에 대해서 탐색하였다.
  • 처음 프로그래밍을 배우는 사람이 for-loop를 배울 때 가장 난해한 것이 활용 목적을 잃을 때다.
  • 반복문은 말 그대로, 동일한 코드를 계속적으로 작성해야 하는 상황이 올 때 쓰면 된다.
  • 한가지 유의할 점은, 데이터셋이 커지면 커질수록 속도에 대한 부담감도 커지게 된다.