1. 기업맞춤형 빅데이터 분석가 양성과정 소개
2. 기업맞춤형 빅데이터 분석가 양성과정 노트목록
https://crosefrog.tistory.com/entry/20210104-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-4%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8
https://crosefrog.tistory.com/entry/20240105-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D%EA%B0%80-%EC%96%91%EC%84%B1%EA%B3%BC%EC%A0%95-5%EC%9D%BC%EC%B0%A8-%EB%85%B8%ED%8A%B8
3. Chepter 05 함수 / 함수-연습문제 배포용.ipynb
4. Notion 빅데이터 분석가 양성과정 대시보드
https://shaded-chair-f39.notion.site/d1191ac35d7c4f09b2fd0bdc9a91debc?pvs=4
5. Naver 블로그 포스팅
https://blog.naver.com/moment_by_moment/223317609682
6. Google Colaboratory Notebook
https://colab.research.google.com/drive/1hFxP4OziKheY2xN-dYT8PLxfxUo-FPKe#scrollTo=NL7na45ebK0G
https://colab.research.google.com/drive/1UYFcAsfJhshj1WgUCerl7a-0fQSw4Bw2#scrollTo=kqECBD9mtu5X
7. 필기노트
전문대에서 영어와 컴퓨터 프로그램만 열심히 하겠다는 생각으로 다녔다.
미이크로프로세서라는 특정 과목에 관심있었다.
1달 동안 ‘여자’생각이 한번도 나지 않을만큼 집중했었다.
인생은 알 수 없다. (편입)
제어 마이크로 프로세서와 통신분야를 공부했었다.
⇒ 세월이 지날수록 내가 어디서 무엇을 하게될 지 알 수 없다.
- 인생은 상상할 수 없는 일들이 생긴다.
오늘은 수업진도를 조금 나갈 것이다.
(박자를 조금 늦춰서 진도를 나간다.)
혼공파 교재의 챕터 1~6은 기초, chepter7~8은 응용 및 심화, 활용의 내용으로 구성되어 있다.
- 함수(기능)
함수 호출 = 함수 실행
매개변수: 함수(기능)를 실행할 때 함수에 전달할 값을 가지고 있는 변수
변수개수는 넘쳐도 문제, 적어도 문제다.
#코딩 실행 시, 밑에 뜨는 오류를 잘 읽어봐야 한다. (어디가 문제인지, 어떻게 수정해야 할지 생각해보자.)
가변 매개변수
‘*’(asterisk): 가변 매개변수라는 것을 표시하기 위해 붙이는 기호
#튜플도 하나씩 요소를 꺼낼 수 있다.
언어를 배울 때, 자꾸 보고, 듣고, 말하니까 자연스럽게 익히게 되었다.
(문법을 배우지 않아도 말을 할 수 있었다.)
- 기본 매개변수(Defaut parameter)
:print( )함수는 다음과 같은 형태로 매개 변수를 받음
print('hello', 'world!',sep=@, end=' ')
print('my nickname', 'is ship')
=> hello@world! my nickname is ship
#필요에 의해 볼 때는 거부감없이 잘 이해될 것이다.
(기본 매개변수가 있었다는 것만 기억해보자.)
- 키워드로 명확하게 전달해주면 문제가 되지 않는다.
가변 매개변수, 기본 매개변수
#가변 매개변수와 기본 매개변수를 섞어서 전달하면 된다.
⇒ 이 2가지를 써서 키워드로 전달하면 된다.
기본 매개변수!
import matplotlib. pyplot as pit
y = [1,2,3,4]
plt.plot(y, color='red', marker='s', linestyle='-' )
plt.show()
리턴(return)
코드 분석
def double)print(string):
print(string)
print(string)
return
print('끝')
data = double_print('Hello World!')
print(data)
=>
Hello World!
Hello World!
None
양치질을 처음에 배울 때, 이유가 중요하지 않았다.
튜플과 함수
- 함수에서 여러 개의 값을 반환할 때 튜플 형 데이터를 자주 사용
def test():
math = 80
engl = 90
return (math, engl)
math, engl = test()
print('math = {}, engl = {}'.format(math, engl))
=> math = 80, engl = 90
- 람다(lambda)에서 map( )과 filter( )
일꾼 중에서 pandas가 데이터를 잘 다룬다. (데이터분석)
#데이터분석이라는 관점에서 보면, filter를 써서 분석하진 않을 것이다.
- 람다(lambda)를 사용하면, 간단한 것들을 더욱 간단하게 사용할 수 있다.
def power(x):
return x*x
x = range(10)
y = map(power, x)
print(list(y))
power = lambda x : x*x
x = range(!0)
y = map(power, x)
print(list(y))
x = range(!0)
y = map(lambda x:x*x, x)
print(list(y))
- 람다(lambda)
함수를 코딩하는 것도 번거롭고 코딩 공간 낭비라고 생각하는 사람들이 늘어났다고 함. 그래서 심플한 개념이 등장했는데, 그것이 바로 람다(lambda)
- 람다(lambda)의 형태
lambda 매개변수: 리턴값
콜백 함수를 받는 함수를 람다(lambda)의 형태로 표현
def under_3(item):
return item < 3
lst = [1,2,3,4,5]
output = filter(under_3, lst)
print(list(output)
=> [1, 2]
lst = [1,2,3,4,5]
output = filter(lambda x:x*x<3, lst)
print(list(output)
=> [1, 2]
파일(file)
: 컴퓨터가 있기 전에, 문서서류가 파일이었다.
⇒ 파일을 열어서 작업하고, 닫아서 보관한다.
- 파일 처리
파일은 크게 ‘텍스트 파일’과 ‘바이너리 파일’로 나눌 수 있음
- 파일 처리 과정
파일 오픈(open) → 파일 처리(읽기, 쓰기) → 파일 닫기(close)
- 파일 오픈
파일을 열 때는 open()함수를 사용
파일을 닫을 때는 close()함수를 사용
사용 형태
파일_객체 = open(파일경로, 모드)
모드 w: wirte 모드(새로 쓰기 모드)
모드 a: append 모드(파일 끝에 이어 쓰기 모드)
모드 r: read 모드(읽기 모드)
colab은 클라우드에서 작동함
file = open('test.txt, 'w') # 파일(file)을 엽니다.
file.write("Python Programming") # 파일에 텍스트를 씁니다.
file.close() # 파일을 닫습니다.
- with 키워드
프로그램이 길어지면 open()함수와 close()함수 사이에 많은 코드가 들어갑니다. 그러다가 실수로 파일을 닫지 않는 경우가 생길 수 있습니다. 이런 실수를 방지하기 위헤 with 키워드가 있습니다.
with open(문자열:파일경로, 문자열:모드) as 파일_객체:
⇒ 프로그램이 길어지면 open() 함수와 close()함수 사이에 많은 코드가 들어감
문자열
string = '가나다라'
print(string[0]+string[1]+string[2], string[3])
lst = list('가나다라')
print(lst)
=> 가나다 라
['가', '나', '다', '라']
string = '가나다라'*2 +'가'
print(string)
print('string 안에 "가"라는 문자열이 몇 개 있는지 :', string.count('가') )
print('string 안에 "가나"라는 문자열이 몇 개 있는지 :', string.count('가나') )
=>
가나다라가나다라가
string안에 "가"라는 문자열이 몇 개 있는지 : 3
string안에 "가나"라는 문자열이 몇 개 있는지 : 2
- random 모듈
import random
for i in range(6):
d = random.randint(1,6)
print(d, end='\\t')
for i in range(3):
sample = random.sample(['사과', '배', '수박', '딸기', '참회')]
print(sample)
=>
['tn
식별자 생성규칙: 숫자난 특수기호가 오면 안된다. (언더바 ’_’ 는 된다.)
- 모드 ’w’는 파일을 생성하여 연다는 의미이다.
import random
hanguls = list("가나다라마바사아자차카타파하")
with open('info.txt', 'w') as file:
for i in range(100):
name = random.choice(hanglus)+random.choice(hanguls)
weight = random.randrange(40, 100)
height = random.randrange(140, 200)
file.write('{}, {}, {}\\n'.format(name, weight, height))
for 한_줄을_나타내는_문자열 in
- new line은 눈에 보이지 않는다. (줄을 바꾸라는 명령)
⇒ 이미 이 데이터에 줄바꿈이 붙어 있다.
파일은 1) open, 2) 처리, 3) close로 이루어진다.
with를 가지고 있으면, close는 알아서 한다.
- 직접 내가 파일을 건드리는 작업은 거의 없을 것이다.
(어떤 아저씨(객체, 모듈)를 통해서 진행될 것이다.)
- 제너레이터(generator)
: 파이썬의 특수한 문법, 함수가 값을 한 번만 반환하는 것이 아니라 연속적으로 반환할 수 있었으면 좋겠다는 발상에서 만들어졌음
(일반적인 함수는 값을 한 번만 반환함)
⇒ 제너레이터를 생성하는 함수는 return 대신 yield 키워드를 사용
def mygen():
yield 'a'
yield 'b'
yield 'c'
g = mygen()
print( type(g) )
print( next(g) )
print( next(g) )
print( next(g) )
def mygen():
for i in range(1, 7):
result = i*i
yield result
gen = mygen()
print( next(gen) )
print( next(gen) )
print( next(gen) )
def mygen():
for i in range(1, 7):
result = i*i
yield result
gen = mygen()
print( next(gen) )
print( next(gen) )
print( next(gen) )
for item in gen:
print(item)
statement: 실행가능한 최소단위
표현식: 값을 산출해내는 expression
genareter라는 형태의 값을 만들어내는 표현: expression
- 제너레이터는 def키워드를 사용해 함수 형태로 만들 수도 있지만 아래와 같이 튜플 표혀식으로도 간단히 만들 수 있음
- 이 표현식으로 얻은 제너레이터는 mygen()함수로 만든 제너레티어와 완전히 똑같음.
카메라에서 함수를 하나 호출한다.
→ 찍은 영상 가져오기
(1초에 16프레임이라면, 초당 16장씩 가져와야 한다.)
→ 읽어오면 줄어든다.
데이터처리에서 등장하긴 어려울 것이다.
- global 지정: 따로 정하지 않고 밖에서 쓰고 있는 그대로 사용한다는 의미. (특정 함수 내에서만 사용한다는 의미)
list 내포: 리스트 안 요소를 문장처럼 채웠다.
dictionary 내포: 내용물을 채워 넣는다.
lambda 등
모든 언어에서 지원하는 기능이 아닌,
파이썬을 파이썬 코드답게 만드는 것(파이썬에서만 지원하는 것들)을 활용할 수 있으면 좋겠다.
점점 뒤로갈수록 차이(gap)가 벌어진다.
PyQt, 웹 크롤링이 남아있다.
- 웹 서버 얘기를 한 뒤 진행할 지 고민중이다.