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)']
- 다음 코드는 시각화 작성을 위한 기본 환경설정이다.
figsize
는Jupyter Notebook
에 맞게 최적화 되어 있기는 하지만, 수정할 수 있다.- 본인만의 스타일 수정을 원한다면 다음 링크 참조 하기 바란다. Customizing Matplotlib with style sheets and rcParams
%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()
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
를 배울 때 가장 난해한 것이 활용 목적을 잃을 때다. - 반복문은 말 그대로, 동일한 코드를 계속적으로 작성해야 하는 상황이 올 때 쓰면 된다.
- 한가지 유의할 점은, 데이터셋이 커지면 커질수록 속도에 대한 부담감도 커지게 된다.
- 따라서, 이러한 부분을 어떻게 극복할 것인지에 대한 고민도 필요하다. (예시 - Python - Pandas 병렬처리)