728x90
SMALL
- 오늘부터 2주 정도는 본격적으로 파이썬 프로그래밍의 기초 지식들, 그리고 관련하여 데이터 분석 실습을 진행할 예정입니다.
- 오늘은 그 중에서도 기본적인 파이썬 실습을 Spyder 환경에서 진행했습니다.
🐍 Python 프로그래밍
🕸️ Spyder
- 저희 수업에서는 이제 Spyder를 사용하여 파이썬 실습을 할 예정입니다.
- 그 이유는 Jupyter나 Colab 환경의 경우에는 추후 Django나 Flask와 같은 파이썬 웹 프레임워크와 연동하게 되면, 문제가 발생하는 경우가 생기기 때문입니다.
"""
Created on Mon Feb 3 09:10:48 2025 - 언제 만들었고
@author: author name - 누가 만들었고,
population data analysis - 어떤 파일인지
"""
- 파이썬 파일을 생성함에 있어서 반드시 명심해야할 것은 언제 만들어졌는지, 누가 만들었는지, 이 파일이 어떤 파일인지를 주석으로 명시해두는 것입니다.
- 파이썬에서는 #로 한 줄 주석, 따옴표들로는 여러 줄을 주석 처리할 수 있습니다.
💭 파이썬 시작 전
- 파이썬은 쉽고 직관적인 문법, 강력하고 풍부한 라이브러리들을 제공해줍니다.
- 이 라이브러리들은 IDE(Pycharm, Anaconda 등)마다 내장되어 있는 수가 다르기 때문에 프로젝트를 시작할 때에는 이 환경을 잘 살펴보아야 합니다.
✨ 데이터 입출력
💡 입력
- 사람(사용자)이 직접 컴퓨터에 정보(데이터)를 넣어주는 것을 의미합니다.
- 보통 input() 함수를 사용해 입력받고, 이 함수는 print()와 달리 문자열로 반환되는 값을 특정 변수에 저장이 가능합니다.
💡 출력
- 컴퓨터가 사람(사용자)이 내린 명령을 실행한 결과를 기기 화면으로 보여주는 것을 의미합니다.
- 출력 시 문자는 꼭 따옴표로 감싸야 합니다! 그렇지 않으면 SyntaxError가 발생합니다.
- 실행 결과에 오류가 발생하는 경우에는 원하거나 예상한 결과가 아닌 어떤 문제 상황이 발생했다는 것을 말합니다.
- 문자열을 연산하여 출력하는 것은 덧셈, 뺄셈, 나눗셈 연산자가 아닌 *(곱셈) 연산자만 가능합니다.
💡 기본적인 오류 몇 가지
- SyntaxError: invalid syntax. Perhaps you forgot a comma?
- 이는 파이썬 문법상의 오류가 발생했을 때 나타나는 오류입니다.
- TypeError: can only concatenate str (not "int") to str
- 타입이 맞지 않은 두 변수를 합치게 되면 나타나는 오류입니다.
- ZeroDivisionError: division by zero
- 0으로 값을 나누었을 때 나타나는 오류입니다.
- print(34 / 0)와 같이 눈에 0이 직관적으로 보여지는 경우에는 오류 사항을 한 눈에 파악할 수 있지만,
- 여러 데이터가 복잡하게 얽혀있는 경우에는 이를 해결하기 쉽지 않기 때문에 인지하고 있어야 합니다.
- NameError: name 'var' is not defined
- 변수가 사전에 정의되지 않았을 때 나타나는 오류입니다.
✨ 변수
- 여러 값으로 변하는 수를 의미합니다.
- a = 10은 변수를 선언하는 것, b = a + 10은 해당 변수를 사용하는 것을 뜻합니다.
- year = year + 1을 year += 1와 같은 축약어로도 변경이 가능합니다.
- +=, -=, *=, /= 와 같은 표현도 사용할 수 있습니다.
- 변수명은 변수에 저장하는 값이 의미하는 바를 나타내도록 정하는 것이 좋습니다!
- 그리고 변수명은 파이썬에서만큼은 최대한 소문자로 지정하는 것이 좋습니다.
✨ 조건문과 반복문
💡 조건문
- 데이터의 무결성은 우리가 데이터를 봤을 때 이 데이터가 우리의 일반적인 상식을 벗어나지 않도록하는 원칙을 얘기합니다. 이런 무결성을 지키기 위해 조건문은 필수적이라고 보시면 됩니다.
- 조건문의 형식은 예를 들어, 조건 A에 해당하면(조건 A가 참이라면) B를 실행하라는 선택 구조로 이루어져 있습니다.
- 똑같은 내용의 조건이라도 일반적으로 효율적인 측면에서 바라보았을 때 어떤 조건으로 기술되어야 하는지 판단하는 능력이 길러져야 합니다.
- (예를 들어 성인일 때만 주류를 판매할 것인지 / 미성년자일 때 주류를 판매하지 않을 것인지와 같은 상황)
- 조건문을 작성할 때 ≥, ≤와 같은 표현은 내부적으로 두 번을 검사하기에 특이 케이스를 제외하고는 >, < 표현을 작성하는 것이 좋습니다.
💡 반복문
- for 문 안에 if 문 구조는 데이터 분석에 있어서 가장 중요하고 빈번하게 사용되는 구조입니다.
- for 문은 반복 구간에 초깃값(시작 숫자)과 반복 조건이 들어있기에 반복 조건 변수를 정의할 필요가 없습니다.
- 이에 비해 while 문은 반복 조건만 있기에 변수 초깃값을 미리 지정 후에 조건을 빠져나갈 수 있는 과정이 반드시 필요합니다. 안 그러면 무한 루프가 생성될 수 있기 때문에!!
- while 문은 데이터 분석에는 아니지만, 추후 DB를 다룰 때에는 자주 사용되는 구문입니다.
🚂 리스트
- 이미 3일차에 리스트 + 딕셔너리 관련 내용을 익혔기 때문에 여기서는 간단히 오늘 한 내용들만 언급하고 넘어가겠습니다.
- 여러 데이터를 묶어 변수 하나에 담아 표현하는 데이터 타입을 파이썬에서는 '리스트'라고 합니다.
- 이 리스트 내 데이터를 요소(element) 또는 원소라고 칭하고, 각 요소는 ,(콤마)로 구분됩니다.
✨ append()
list.append(data)
- 리스트에 요소를 추가하는 함수입니다.
- 전체 데이터에서 조건문을 통해 원하는 데이터를 뽑아냈으면, append()로 특정 리스트에 저장해두는 것이 중요합니다. 몇몇 데이터 분석가들이 간과하고 있는 부분 중에 하나라고 합니다.
✨ 간단 자동 판매기 구현!
- 간단히 지금까지의 내용을 바탕으로 자동 판매기를 구현해보았습니다.
- 해당 자동 판매기는 사용자로부터 투입한 돈과 물건 값을 입력 받습니다.
- 물건 값은 100원 단위라고 가정하고, 프로그램은 잔돈을 계산하여 출력하도록 설계되어져 있습니다.
- 또한, 자판기는 동전 500원, 100원 짜리만 가지고 있다고 가정하고, 거스름돈에 쓰인 500원 동전 개수와 100원 동전 개수를 출력하도록 설계했습니다.
- 이때, 거스름돈에 쓰인 동전의 개수는 최소가 되어야 합니다.
- 아래는 해당 내용을 구현한 코드입니다!
money = int(input('돈을 투입해주세요: '))
price = int(input('구매하실 물건의 값을 입력해주세요: '))
rest = money - price
if rest < 0:
print('돈이 부족합니다. 추가로 지불해주세요.')
else:
counts = [0, 0]
types = [500, 100]
for i in range(len(types)):
counts[i] += rest // types[i]
rest %= types[i]
print(f'총 거스름돈은 {money-price}이며, 500원 {counts[0]}개, 100원 {counts[1]}개로 거슬러집니다.')
- 위 코드는 divmod() 함수로도 간단히 구현할 수 있지만, 추후에 다루게 된다면 작성하도록 하겠습니다.
📚 딕셔너리
- 딕셔너리는 선언 시에는 중괄호로 선언하지만, 값을 꺼낼 때에는 리스트처럼 대괄호를 이용하여 접근합니다.
- sorted() 함수를 사용하게 되면 원본 데이터가 변경되기 때문에 주의하여 사용해야 합니다.
✨ itemgetter()
- 기본적으로 정렬은 처음 원소 기준으로 하기에 정렬 기준을 다르게 하려면 operator 모듈 내 itemgetter 함수를 이용하면 편리하게 정렬이 가능합니다.
- 이는 이미 다들 익히 알고 계실 lambda와 동일하게 작동합니다.
import operator
sorted(mart.items(), key=operator.itemgetter(1), reverse=True)
- 그리고 공식 문서를 확인해보니 itemgetter()는 다음과 같이 간단히 동작하고 있습니다.
def itemgetter(*items):
if len(items) == 1:
item = items[0]
def g(obj):
return obj[item]
else:
def g(obj):
return tuple(obj[item] for item in items)
return g
- itemgetter()가 인자로 받은 key에 해당하는 value를 기준으로 sorted()가 수행되어 정렬되는 것을 확인할 수 있었습니다.
🤔 5일차 회고
- 오늘은 파이썬 관련하여 기초 문법을 다뤘고, 관련해서 Spyder로 실습을 진행했는데, 사실 기초적인 부분이라 따라가는 데에만 별 무리가 없었습니다. 중간중간 이야기해주시는 실무적인 이야기들이 나름 유익했던 것 같습니다!
- 후반부에는 오늘 배운 내용들을 가지고 10문제 정도를 내리 풀었습니다. 어려운 문제들은 아니었지만, 배운 내용들을 정리하기엔 충분했던 것 같고, 알고리즘 문제를 푸는 기분이 들어 시간 가는 줄 모르고 몰입하면서 풀었습니다. ㅎㅎㅎㅎ
- 오늘 짬나는 시간마다 ADsP 자격증 공부를 하게 되었습니다. 교육 초반, 쉬운 파트를 다뤄주실 때 시간을 효율적으로 활용해 자격증을 많이 따놓고 싶은 열망이 있습니다...! 🔥
- 내일은 오늘에 이어서 조금 더 심화 과정인 파이썬 모듈과 클래스와 관련된 내용을 쭉 다룰 예정입니다.
728x90
LIST
'부트캠프 > LG U+' 카테고리의 다른 글
🤔 Series와 DataFrame 그리고 Pandas (0) | 2025.02.06 |
---|---|
🤔 함수와 모듈 그리고 클래스 (14) | 2025.02.04 |
🤔 Jupyter, folium 그리고 tkinter (2) | 2025.01.24 |
🤔 Python과 데이터 분석의 기초 (3) | 2025.01.23 |
🤔 보안 그룹과 EBS 그리고 ELB (10) | 2025.01.22 |