# 어제 배운 것 리뷰
- 클래스, 함수,
- 문자열 클래스 다양한 메서드
- 리스트 클래스 다양한 메서드
+ append, extend, insert, remove...
# 딕셔너리
- Dictionary : 영어 및 국어 사전
- 구성 : key-value, keyword(=key), 결괏값(=value)
+ 문자열, 리스트, tuple : 데이터 조회 시, 인덱싱 또는 슬라이싱
+ 딕셔너리에서 값을 조회하는 방법은 key 값을 통해서 값을 조회
# 나라-수도 이름
country_capital = {
"대한민국" : "서울",
"프랑스" : "파리",
"미국" : "워싱턴",
"영국" : "런던"
}
country_capital
# 딕녀너리에서 value 값을 조회하는 방법은 key 값을 통해 조회
country_capital['대한민국']
# key값은 중복으로 만들 수 없음
country_capital['미쿡']
data = {1:'버스', 3:'비행기'}
data
# 숫자 1은, 리스트, 문자열, tuple 인덱스 번호와는 다른 숫자
# 현재 여기에서는 숫자 1은 key값이다!
data[1]
data2 = {'list1' : [1, 2, 3], 'list2' : [4, 5, 6]}
data2
data3 = {'list1' : [1, 2, 3], 'list2' : [4, 5, 6], 1:'테스트', 2 : 100}
data3
## 딕셔너리 사용처
- 데이터 분석 : 엑셀 테이블
+ 1억개, 데이터 가공 (최소 1-2시간 가공작업)
+ 임시 테이블
- HTML, CSS, 인터넷 자료형 중, JSON 데이터 포맷
- JSON 데이터포맷 ==> 딕셔너리와 동일
+ API 데이터 크롤링, 기본 자료형(JSON) ==> 딕셔너리 변환, 변환 후 데이터 가공
import pandas as pd
# 이 데이터가 있음
data = {
'A' : [1, 2, 3],
'B' : [4, 5, 6]
}
df = pd.DataFrame(data)
# 데이터 가공 연습 ==> 1억개 데이터 적용
df
## 딕셔너리 다루기
- 딕셔너리의 value 값 수정하는 방법
# 내가 좋아하는 도시 이름
country_capital['대한민국'] = '부산'
country_capital
# del
del country_capital['영국']
country_capital
country_capital['프랑스'] = None
country_capital
country_capital['일본'] = '도쿄'
country_capital
## 딕셔너리 메서드
country_capital = {
"대한민국" : "서울",
"프랑스" : "파리",
"미국" : "워싱턴",
"영국" : "런던"
}
print(type(country_capital)) # 딕셔너리 객체
# 딕셔너리가 보유한 클래스 메서드를 사용할 수 있음
result = country_capital.keys()
result.append('독일')
result = list(country_capital.keys())
result.append('독일')
result
# 딕셔너리에서 키 전체를 리스트 형태로 반환
print(type(country_capital.keys()))
# 데이터 형변환
list(country_capital.keys())
country_capital.values()
country_capital.items()
new_df = {
'중국' : '베이징', '필리핀' : '마닐라', '호주' : '캔버라'
}
country_capital.update(new_df)
country_capital
country_capital.clear() # 빈 Dictionary 생성
country_capital
# If 조건문
- 만약 A라면 ~일 것이다
- 프로그래밍에서 조건문
+ 만약 조건이 True라면 ~를 해라
+ 참과 거짓을 만드는 것이 포인트
x = int(input("점수를 입력하세요")) # 문자를 숫자로 형변환
if x >= 90: ### <- 조건문을 여러분들이 직접 설계하는 것이 포인트!
# 코드블록
print("합격")
- 조건문을 문장으로 먼저 만드는 훈련을 하는 것이 중요함
+
x = int(input("점수를 입력하세요")) # 문자를 숫자로 형변환
if x >= 90: ### <- 조건문을 여러분들이 직접 설계하는 것이 포인트!
print("합격")
# ㅇㅁ
# ㅇㅁㄹㅇ
# ㅁㅇㅁㄹ
print(x)
else:
print("불합격")
x = int(input("점수를 입력하세요")) # 문자를 숫자로 형변환
if x >= 90: ### <- 조건문을 여러분들이 직접 설계하는 것이 포인트!
print("합격")
elif x >= 80:
print("부분합격, 면접 필요")
else:
print("불합격")
# 문제
- 학생 성적에 따라서 여러분들이 등급을 정합니다. 점수는 0에서 100점
- A, B, C, D, F
+ 조건식은 여러분들이 직접 임의로 작성
- 조건문
+ 첫번째 조건 : 점수가 90점 이상이어야 함
+ 두번째 조건 : 점수가 75점 이상이어야 함
+ 세번째 조건 : 점수가 60점 이상이어야 함, C등급
x = 90
(x >= 80) and (x < 90)
# 이러한 식을 직접 코딩할 수 있는 능력이 조건문의 핵심
x = int(input("점수를 입력하세요...")) # 문자를 숫자로 형변환
if x >= 90: # 경계값으로 테스트하는 것이 좋음
print("A등급")
elif x >= 75: # 범위 : 80점 이상~90점 미만
print("B등급")
elif x >= 60:
print("C등급")
else:
print("아직 값을 못 정함")
# 중첩 조건문
# if 조건문 내부에 또다른 조건문 생성
x = int(input("점수를 입력하세요...")) # 문자를 숫자로 형변환
# 100점 맞은 사람이 있으면 '장학금' 출력
# 합격을 받은 사람들 중에서 100점인 사람인 경우 장학금 주겠다.
if x >= 90:
if x == 100:
print("장학금 수여")
else:
print("합격")
else:
print("불합격")
# 반복문
- for-loop, while
- 반복문의 필요성
# Hello Python 10번 출력해서 가져오세요
# 똑같은 코드 5-6번 치기 시작하면 불편함을 느낌
# 효율적인 코드가 뭘까?
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
print("Hello Python")
2주차 Hello Python 100개 출력
3주차 Hello Python 1457개 출력
4주차 Hello Python 145782개 출력
for i in range(145):
print("Hello Python")
## for-loop 특징
- 반복 범위가 주어짐
for a in range(3):
print(f'{i}번째 Hello Python')
for idx in range(3):
print(f'{idx}번째 Hello Python')
- 반복 범위 지정 시, 시퀀스 자료형도 사용 가능
+ 오늘/내일 블로그 주제 : 시퀀스 자료형에 대해서 정리
+ 대표적인 것 : 리스트, 문자열
nums = [1, 2, 3, 4, 5]
for num in nums:
print(num)
strings = "Hello"
for text in strings:
print(text)
tuples = (1, 2, 3, 4)
for num in tuples:
print(num)
# country_capital['대한민국']
x = '대한민국'
country_capital[x]
x = '프랑스'
print(f'대한민국의 수도는 서울이다')
print(f'{x}의 수도는 서울이다')
print(f'{x}의 수도는 {country_capital[x]}이다')
country_capital
for country in country_capital:
print(country) # key값만 출력, 원하는 것은 value값
# print(f'{country}의 수도는 {country_capital[country]}이다.')
양해구합니다 ㅠㅠ 택배기사님 10분 후, 방문..
# 중첩 포문
# 반복문 내 또 다른 반복문
x_list = ['x1', 'x2']
y_list = ['y1', 'y2']
# print('x1 y1')
# print('x1 y2')
# print('x2 y1')
# print('x2 y2')
for x in x_list:
print(x)
for y in y_list:
print(x, y)
## 구구단
- 2 x 1 = 2
x = 3
y = 6
print(f'{x} * {y} = {x * y}')
x_list = [2, 3, 4, 5, 6, 7, 8, 9]
y_list = [2, 3, 4, 5, 6, 7, 8, 9]
y = 2
for x in x_list:
for y in y_list:
print(f'{x} * {y} = {x * y}')
break
for x in range(1, 10):
for y in range(1, 10):
print(f'{x} * {y} = {x * y}')
print("---")
names = ["A", "B", "C"]
ages = [10, 20, 30]
for x, y in zip(names, ages):
print(x, y)
names = ["A", "B", "C"]
for idx, name in enumerate(names):
print(idx, name)
## While 특징
- for-loop 특징 : 항상 반복문의 범위를 지정한다.
+ 몇번 반복문을 수행할지 숫자로 컨트롤 가능
- While 특징
+ 조건문이 False가 될 때까지 반복문을 수행
+ 조건문이 True가 반복문은 무한 수행
# 초깃값 지정
i = 1
n = 3
while 1 <= 3: # 특정 조건문을 False가 되도록 코드를 작성하는 것이 포인트
print(f'현재 {i} 번')
# i = i + 1
## for-loop, while 비교
- Only 데이터 분석만 하겠습니다. (for-loop만 집중 공부)
+ 행과 열은 거의 고정
+ 범위가 주어져 있음
- 개발자로 경력을 쌓고 싶습니다. (for-loop, while 문 둘다 익힐 것)
+ 카메라 켜진 상태에서, 필터를 추가한다...
+ 카메라 is ON (==True)
+ ~~~~ 기능을 수행하라
+ 카메라 OFF (== False)
+ 기능 수행하는 코드 미 작성
## break 문
- 중간에 반복문 강제 종료
+ 특정 시점에 반복문 강제
# 초깃값 지정
i = 1
n = 3
# 1 <= 3
while True: # 특정 조건문을 False가 되도록 코드를 작성하는 것이 포인트
print(f'현재 {i} 번')
if i >= 5:
break
i = i + 1
for i in range(10):
print(f'현재 {i} 번')
if i > 5: # 참
print("if 조건문 만족")
break
## 문자열과 for-loop
texts = 'Python'
for text in texts:
print(text)
# text가 t가 되면 break
if text == 't': # 조건식을 숫자로 비교, 문자 매칭 여부에 따라서 True/False
print("text는 t입니다.")
break
## 리스트 컴프리헨션
- for loop 및 for loop if 조건문 한줄로 처리
# pythonic 코드
numbers = [1, 2, 3, 4, 5]
result = [1, 4, 9, 16, 25] # 거듭제곱
numbers = [1, 2, 3, 4, 5]
result = []
result = []
temp1 = 1 ** 2
temp2 = 2 ** 2
temp3 = 3 ** 2
result.append(temp1)
result.append(temp2)
result.append(temp3)
result
numbers = [1, 2, 3, 4, 5]
result = []
for i in numbers:
result.append(i ** 2)
result
numbers = [1, 2, 3, 4, 5]
result2 = [i ** 2 for i in numbers]
result2
- 조건문 추가
numbers = [1, 2, 3, 4, 5]
result = []
for i in numbers:
if i >= 3:
result.append(i ** 2)
result
numbers = [1, 2, 3, 4, 5]
result2 = [i ** 2 for i in numbers if i >= 3]
result2
- 시각화 라이브러리
+ matplotlib, plotly 옵션 설정 할 때, 자주 사용됨.
# 파이썬 문서화 (Docstring)
- 코딩을 한다. 프로그래밍을 한다.
- 누군가에게 관련 지식을 전달하는 것과 동일
+ 혼자 코딩하고, 혼자만 알 수 있는 언어로 코딩을 했다 ==> 협업 불가능
+ 취업, 퇴사, 이직 ==> 업무 인수인계를 해야 함
+ 코딩한 것에 문서화를 하지 못하면, 업무 인수인계 자체가 불가능
- 프로젝트 진행
+ 3주 / 4주 ==> 마지막주에는
- 2-3명, PPT 보고서 작성
- 남은 인원, Docstring을 사용해서, 문서화
+ help() 명령어를 사용해서 불러오기 할 수 있음 (예. read_csv() 문서처럼 출력이 가능)
help(print)
import math
help(math)
def myPower(n):
'''숫자 n을 입력하면 n의 거듭제곱으로 반환'''
result = n ** 2
return result
print(myPower(3))
print(myPower.__doc__)
print(print.__doc__)
def read_csv(sep, header):
'''
Returns the sum of ~~~ .
Parameters:
sep (str) : Character or regex pattern to treat as the delimiter.
header(int) : Row number(s) containing column labels.
Returns:
c (int) : Sum of ~~
'''
c = sep + header
return c
- 코드 문서화를 좋아한다 ==> 네카라쿠배.. 갈 확률이 높아짐
- 코드 문서화를 싫어한다 ==> 네카라쿠배.. 갈 확률이 낮아
- swagger 같은 API 명세서가 docstring일까요?
+ 클라이언트 용 명세서(공공기관, 한글 또는 워드 작업)
print(read_csv.__doc__)
# 클래스 상속
- 부모 > 자식
- 대분류 > 중분류 > 소분류
- 동물
+ 동물의 공통적인 특징 : 살아 움직인다
- 포유류
+ (살아 움직인다) 4발이 있다, 새끼를 낳는다.
- 파충류
+ (살아 움직인다) 알을 낳는다.
class Animal:
# Attribute 정의(=클래스 변수)
name = ""
# 공통함수
def eat(self):
print("나는 먹을 수 있음")
class Dog(Animal): # 클래스 상속을 했다.
# 동물 ==> 강아지로 기본 기능을 제공함
# name = "" # 이 코드는 불 필요함
# 새로운 메서드
def dance(self):
print(f"{self.name} 강아지가 춤을 춘다")
# 객체 생성
a = Dog()
a.name = "코코"
a.eat()
a.dance()
b = Animal()
b.name = "시고르자브종"
b.eat()
b.dance()
## 클래스 Docstring
> 들여쓴 블록
class Person:
"""
자기 소개하는 Person 클래스.
'''
Attributes
-----------
name : str
사람의 이름을 의미
age : int
사람의 나이를 의미
grade : int
사람의 현재 학년을 의미
Methods
-----------
info(comment=""):
사람의 개인정보를 출력
"""
def __init__(self, name, age, grade):
"""
"""
self.name = name
self.age = age
self.grade = grade
def info(self, comment = ""):
"""
"""
print(f'내 이름은 {self.name}. 내 나이는 {self.age}. 현재 학년은 {self.grade}. {comment}')
print(Person.__doc__)
help(Person)
'복습' 카테고리의 다른 글
loc 와 iloc의 차이 (1) | 2024.01.05 |
---|---|
240103복습 (0) | 2024.01.03 |
변수의 형태 chat gpt (0) | 2023.12.30 |
231228복습 (0) | 2023.12.30 |
231227 학습내용 (0) | 2023.12.28 |