성동2기 데이터분석가

[성동2기 전Z전능 데이터 분석가] DAY 17- Python(3)(반복문, 함수/ 패키지, 데이터프레임)

성동2기_YJ 2024. 6. 5. 17:57

2024.06.05 ☁️

 

반복문

특정한 구문을 반복해서 수행

  • for
  • while

 

While

  • 무한 루프 또는 특정 조건이 만족할 때까지 반복
  • 주로 파일을 읽고 쓸 떄 많이 사용

 

for

  • 반복횟수가 정해져있는 경우
  • 구하고자 하는 값의 조건이 명확할 경우
  • 리스트를 사용할 경우

While i <  :

조건이 참이라면, While문 아래 문장이 반복해서 수행된다.

 

i=0
while i<10:
    print(i)
    i=i+1
    #0부터 출력
0
1
2
3
4
5
6
7
8
9

 

 

i=0
while i<10:
    i=i+1
    print(i)
    #1부터 출력
    #print의 위치에 따라 달라진다
1
2
3
4
5
6
7
8
9
10

 

 

 

While은 조건을 만족할 때까지 반복하기에, 답정너를 만드는 것이 가능하다.

 

s1=""
while s1 != "아스파라거스가 좋아":
    print("끝내려면 '아스파라거스가 좋아'를 입력하세요.")
    s1=input()
끝내려면 '아스파라거스가 좋아'를 입력하세요.
 베이컨이 좋아
끝내려면 '아스파라거스가 좋아'를 입력하세요.
 짜장면이 좋아
끝내려면 '아스파라거스가 좋아'를 입력하세요.
 짬뽕이 좋아
끝내려면 '아스파라거스가 좋아'를 입력하세요.
 바게트가 좋아
끝내려면 '아스파라거스가 좋아'를 입력하세요.
 아스파라거스가 좋아

 

아스파라거스가 좋다고 말해!!!!라고 하는 것이 가능하다는 말

단, 이런 반복 구문을 만들 시 잘못하면 무한루프로 빠질 수 있으니 조심해야한다.

(끊임없이 반복되는 대화가 얼마나 피곤한지는 다들 알고 있지 않은가. 컴퓨터도 그러하다)

 


For을 사용하는 반복문(with List)

for i in 리스트:

menu=['제육볶음', '돈까스','쫄면','참치김밥', '오므라이스']
for i in menu:
    print(i)

 

제육볶음
돈까스
쫄면
참치김밥
오므라이스

 

  • For문과 List를 같이 사용할 경우 아이템의 숫자만큼 반복한다.
  • 반복될 때마다 i변수에 리스트의 첫번째 아이템부터 하나씩 대입된다.
  • for문을 사용할 때는 i 변수가 자동으로 지정되는데, i 변수에 저장된 값을 활용해서 프로그래밍이 가능
    (활용하면 코드 단순화 가능!)

 

For을 사용하는 반복문(with List)

for i in range(5): 0이상 5미만 or 5번 반복한다

for i in range(2,5): 2이상 5미만

for i in range(0,101,10): 0이상 101 미만으로 10씩 증가한다

  • range(5)를 사용하면 [0,1,2,3,4]의 리스트가 생성된다
  • 시작숫자를 정해줄 수 있다(지정 안할 시, 자동으로 0이 됨.)
  • range()에 넣은 수만큼 행동을 반복한다.

 

 

예시)

for i in range(1,11):
    print("*"*i)
for i in range (9,0,-1):
    print("*"*i)
*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*

 

 

 

 


반복문 활용

리스트에 아이템 추가 .append( )

list=[]
#while은 보통 사용자가 커맨드를 끝내고 싶을 때 사용함
while True:
    score=int(input())

    if score==-1:
        break
        #-1이면 무한 루프를 끝내겠다
    else:
        list.append(score)

print(list)
 4
 3
 2
 1
 -1
[4, 3, 2, 1]

 


 

for 안에 for

for i in range(3):
    print("%")
    for j in range(5):
        print("    #")
%
    #
    #
    #
    #
    #
%
    #
    #
    #
    #
    #
%
    #
    #
    #
    #
    #

 


 

While True:  해당 조건까지 반복하기

numbers=[]

while True:
    n=int(input("수를 입력하세요 : "))

    if n==-1:
        break
    else:
        numbers.append(n)

numbers.sort(reverse=True)
print(numbers)
 

 


함수/패키지

함수(function): ( )가 붙어있는 모든 것

패키지(packages): 함수가 여러 개 들어있는 꾸러미

 

패키지

import 패키지 이름

import 패키지이름 as 약어

 

 

 


seaborn 

그래프를 만들 때 주로 사용하는 패키지

 

import seaborn as sns

sns.countplot(data=데이터, x='열 이름', hue='추가구분기준 열')

 

X축

 

y축+ hue
다양해졌더니 색깔이 그라데이션으로! 예쁘다.

 


 

데이터 프레임

 

데이터 프레임

데이터를 다룰 때 가장 많이 사용되는 데이터 형태

행(가로)열(세로)로 구성. (표처럼 생김!)

 

데이터가 크다

데이터의 행이 커지는 경우와 열이 커지는 경우 모두 포함

but, 접근방법은 다르다.

 

 

열(세로)

컬럼(Coulumn) 또는 변수(Variable)이라고 불림

열(세로): 속성

 

 

행(가로)

로우(Row) 또는 케이스(Case)라고 불림

행(가로) : 한 사람의 정보 or 하나의 단위

* len(df) : 행의 개수 구하기


 

데이터프레임 만들기(Pandas이용)

import pandas as pd

pd.Dataframe({'열 이름1' : [ '문자1' , '문자2' , '문자3'],

                          '열 이름2' : [ 숫자1, 숫자2, 숫자3] })

df1=pd.DataFrame({'제품':['사과', '딸기', '수박'],
                  '가격':[3000,9000,21000],
                  '판매량':[24,39,15]})
df1

 


외부데이터 이용하기-파일 불러오기

  • df= pd.read_excel ('불러오고싶은엑셀파일.xlsx') 
  • df= pd.read_csv ('불러오고싶은csv파일.csv')

 


 

 

마무리

반복문이 들어가니까 확실히 난이도가 높아졌다. 

이해는 했는데 막상 손으로 코드를 짜려면 종종 막히는 경우가 있다.

 

연습문제를 풀 때 답은 맞추는데 코드가 뭔가 효율적이지 않아서 아쉬울 때가 많다.

경제적으로 풀기 위해서 연습해야겠다.

 

어렵다는 생각이 좀 있었는데, 또 부딪혀보니까 할만하다.

재밌기도 하고.

원하는 데이터 분석을 할 수 있을 정도로 힘내자

 

 

오답노트

반복문

numbers=[]
while i != -1:
    i=int(input("수를 입력하세요."))
    numbers.append(i)
numbers.sort()
print(numbers)

여기서 문제는 i를 미리 지정하지 않았다는 것이다...

for문과 다르게, while의 경우 i를 지정해야한다.

즉, i가 -1인지 점검하는 과정이 없기 때문에, 무한루프가 발생한 것이다.

 

데이터프레임

열 제목에 ' ' 씌우는 거 잊지말기