-
스파르타 코딩클럽 데이터 분석 DAY-7카테고리 없음 2025. 4. 29. 17:41
오늘도 어제와 마찬가지로 파이썬을 배우는 날이다.
다만, 어제 배운 파이썬이 많이 헷갈리고,
오늘 배운 내용들도 난이도가 높았기 때문에 복습하는 시간을 따로 갖기로 했다.
배운 내용 복습
1. def 함수 : 나만의 함수를 만들 때 쓰는 키워드
문법 : def 함수이름() → 내가 만들고자 하는 함수
실행할 코드
ex 1
def hello() : print('안녕') hello()
라고 하면 "안녕" 이라는 결과값이 나온다.
ex2
def sum(a,b): print('더하기를 하셨네요 ') return a+b result = sum(1,2) print(result)
"더하기를 하셨네요
3" 이라는 결과값이 나온다.
여기서 sum(1,2) 는 print('더하기를 하셨네요') 와 return a+b를 반영한다.
ex3 버스를 타는 사람의 나이에 따라 무료인지, 성인인지, 청소년인지 확인하기
def bus_rate(age) : if age > 65 : print('무료입니다') elif age > 20 : print('성인입니다') else : print('청소년입니다') bus_rate(80)
"무료입니다" 라는 결과값이 나온다.
def 함수를 적어서 내가 원하는 함수에 대한 자동화시스템을 만들 수 있는 것 같다.
실습 : 주민등록번호의 뒷자리 첫번째 숫자가 홀수이면 남성 / 짝수이면 여성
def check_gender(pin): num = pin.split('-')[1] if int(num)%2 == 0 : print('여성') else : print('남성') my_pin = '200101-3012345' check_gender(my_pin)
my_pin에서 - 다음에 오는 첫번째 숫자는 3 즉, 홀수이므로
"남성" 이라는 결과값이 나온다.
여기서는 일단 pin 번호에서 뽑아내야 할 숫자를 split으로 뽑아내주고('-' 뒤에 오는 문자로)
num 를 정수형으로 바꿔준뒤(int함수)
나머지가 0 = 짝수이면 여성 / 그게 아니면 남성으로 결과값을 낼 수 있다.
2. 튜플과 집합
튜플은 순서가 있는 자료형인데 불변형으로 바뀌지 않는다.
[] 안에 들어있는 리스트의 경우 내용을 바꿀 수 있었지만, () 안에 들어가는 튜플의 경우 안에 있는 내용을 변경할 수 없다.
집합은 말 그대로 집합이라는 의미이고, 중복을 제거할 수 있다는 장점이 있다.
집합에 대한 교집합/합집합/차집합 예시
- 교집합
a = ['사과','감','배','수박','딸기'] b = ['배','사과','포도','참외','수박'] a_set = set(a) b_set = set(b) print(a_set & b_set)
{'사과', '배', '수박'}
이라는 결과값이 나온다.
a_set 라는 별칭을 set 함수를 통해 a 컬럼을 집합으로 묶어주고,
b_seet 라는 별칭을 set 함수를 통해 b 컬럼을 집합으로 묶어준뒤,
& 표시를 통해 교집합으로 추출한 것이다.
합집합은 '|'
차집합은 '-' 기호로 표시된다.
3. f-string : 파이썬에서 문자열 안에 변수나 수식을 쉽게 넣을 수 있는 문법이다.
문자열 앞에 f 를 붙이고 중괄호 {} 안에 변수나 계산식을 넣으면 그 자리에 들어가는 것이다.
예시 : 데이터에 있는 name, score 을 추출하려면
scores = [ {'name':'영수','score':70}, {'name':'영희','score':65}, {'name':'기찬','score':75}, {'name':'희수','score':23}, {'name':'서경','score':99}, {'name':'미주','score':100}, {'name':'병태','score':32} ] for s in scores : name = s['name'] score = str(s['score']) print(name+'는 ' +score+ '점 입니다.')
(여기서 str은 숫자형을 문자형으로 바꿔주는 함수이다)
라고 적으면
이름과 점수를 문장안에 넣어서 결과값이 나온다.
이렇게 하기 위해선 name 뒤에 + 기호를 붙여 문장에 붙여줘야 한다.
하지만 f-string을 이용하면 훨씬 간단하게 표현할 수 있다.
scores = [ {'name':'영수','score':70}, {'name':'영희','score':65}, {'name':'기찬','score':75}, {'name':'희수','score':23}, {'name':'서경','score':99}, {'name':'미주','score':100}, {'name':'병태','score':32} ] for s in scores : name = s['name'] score = str(s['score']) print(f'{name}는 {score}점 입니다.')
굳이 + 기호를 붙이면서 문장을 길게 끌고 나가지 않아도 단순하게 f 한글자로 같은 결과값을 낼 수 있다.
4. 예외처리
예외처리는 try 와 except 를 사용한 함수인데
데이터를 분석하던 중 오류가 나면 그 결과값은 모두 오류가 나버린다.
이럴 때 오류값을 지정해주고 나머지는 진행할 수 있게 해주는 함수이다.
하지만, 이 함수를 적으면 후에 프로그램이 잘 안돌아갈 수 있늬 자주 쓰지 말라고 하셨다...
예시 : 위 데이터에서 20살 이상인 사람의 이름을 추출하여라
people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] for person in people : if person['age'] > 20 : print(person['name'])
이렇게 결과값이 나오는데 만약 bobby 의 나이가 적혀 있지 않다면?
이렇게 오류가 뜬다
오류가 뜨면 더이상 결과 값이 나오지 않고,
어느 부분에서 오류가 난건지 실제 상황에서는 알 수 없다.
그렇기 때문에 try 와 except 함수를 넣어서 오류가 난 상황에도 진행을 할 수 있게 하고,
오류가 난 부분을 표시 하게 할 수 있다.
people = [ {'name': 'bob', 'age': 20}, {'name': 'carry', 'age': 38}, {'name': 'john', 'age': 7}, {'name': 'smith', 'age': 17}, {'name': 'ben', 'age': 27}, {'name': 'bobby'}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25} ] for person in people : try : if person['age'] > 20: print(person['name']) except : name = person['name'] print(f'{name}-에러입니다')
for ,except 함수, f-string 함수를 사용하면
어디서 오류가 났는지를 찾을 수 있다.
5. 파일 분리 : 만약 다른 파일에 있는 파이썬 데이터를 가져오고 싶다면
from 가져올 파일명 import *
여기서 * 가져올 파일 안에 있는 모든 컬럼을 뜻하며,
만약 특정 컬럼만을 가져오고 싶다면 import 뒤에 특정 컬럼의 컬럼명을 적으면 된다.
6. 한줄로 간단하게 표현하기
파이썬을 하다보면 문장 구조가 길어지는 경우가 많다.
그런 경우에 한줄로 줄여서 사용하기에 좋은 문장인데
조금 헷갈리기도 한다.
예시
num = 3 if num%2 == 0 : result = "짝수" else : result = "홀수" print(f'{num}은 {result} 입니다.')
라고 하면 3은 홀수 이기 때문에
"3은 홀수 입니다." 라는 결과값이 나온다.
그런데 if 문부터 "홀수 " 부분까지의 문장이 너무 길다면
아주 아주 간단하게 한줄로 줄일 수 있다.
num = 3 result = ('짝수' if num%2 == 0 else '홀수') print(f'{num}은 {result} 입니다.')
if 문에서 시작되는 4줄의 문장이
result 문 단 한문장으로 줄여진다
() 안에는
if 가 맞을 때의 출력값, if 조건, 아닐 때의 출력값 순으로 입력하면 된다.
사실 ()는 빼도 되지만, 아직 빼기에는 내가 너무 헷갈리기 때문에 ..
예시 2 : 주어진 리스트에 *2씩 하고 싶을 때
a_list = [1,3,2,5,1,2] b_list = [] for a in a_list : b_list.append(a*2) print(b_list)
[2, 6, 4, 10, 2, 4] 라는 결과값이 나온다.
append 함수는 리스트 함수 뒤에 새로운 값을 붙일 때 사용하는 함수이다.
여기서 for 에 대한 2 문장을 한줄로 줄이고 싶다면
a_list = [1,3,2,5,1,2] b_list = [a*2 for a in a_list] print(b_list)
굳이 새로운 b_list 를 공백으로 두지 않고,
b_list 안에 한줄의 문장으로 줄여서 넣으면 간단하게 완성된다.
이렇게 오늘은 다양한 문법들과
긴 파이썬 문장을 짧게 표현할 수 있는 구문들을 배웠다.
어제에 비해서는 파이썬 툴을 만지는 것도,
어제 배웠던 함수를 활용하는 것도 많이 익숙해졌지만
아직도 파이썬은 SQL 보다 조금 더 난이도가 높은 느낌이다..
오늘 어제와 오늘 배운 내용에 대해서 복습했으니,
내일은 모든 파이썬 강의에 대한 내용을 한번씩 더 복습해야 할 것 같다.
오늘 끝!