■ 파이썬을 통해서 우리가 이루고자 하는 목표 2가지
- 파이썬 문법 ( ~ 11장. ----> 웹스크롤링 ---> Tic Tac Toe)
↓
1.단층 퍼셉트론
2.greedy 알고리즘
3.확률(몬테카를로)
↓
통계학자4명+물리학자
- 웹스크롤링 기술
신문사 ------> 트위터 -----------> 인스타그램
원하는 사이트를 자유롭게 웹 스크롤링
- 머신러닝 프로그램 구현 (Tic Tac Toe - Mit 공대)
점프 투 파이썬
■ 파이썬 설치
인스타그램
■ 파이썬 설치
- 기본 파이썬 설치 파일
- 아나콘다(spider)
- 웹스크롤링 : beautiful soup 모듈
- 머신러닝(틱텍토) : numpy 모듈
- 파이참(pycharm)
■ 2장. 파이썬이란?
- 파이썬의 문법은 쉽다
- 라이브러리 (모듈) 이 많아서 유용하다
-Numpy 모듈 : 수학 연산에 필요한 모듈
-beautiful soup 모듈 : 웹스크롤링 모듈
-pandas 모듈 : 데이터 검색 모듈
■3장. 파이썬 설치
■4장. 데이터 다루기
- 4장 목차
1.파이썬에서 변수 사용법
2.산순연산자
3.함수
4.input 명령어 사용법
4.1. 파이썬에서 변수 사용법
- 일반변수 : 변수 안에 데이터가 한 개
예: a = 1000
print(a)
- 리스트 변수: 변수안에 여러개의 데이터(요소)가 들어있는 변수
a=1000print(a)print(type(a))a='e'print(a)print(type(a))a=1/7.0print(a)print(type(a))a='elrkjer'print(a)print(type(a))a=''print(a)print(type(a))a=nullprint(a)print(type(a)) |
1000<class 'int'>e<class 'str'>0.14285714285714285<class 'float'>elrkjer<class 'str'>
|
- 리스트 변수 : 변수안에 여러개의 데이터(요소)가 들어있느 ㄴ변수
d=[1000,2000,3000,4000]
print(d)
print(type(d))
------------------------
[1000, 2000, 3000, 4000]
<class 'list'>
문제1. 위의 d 리스트 변수에서 2000을 출력하시오
d=[1000,2000,3000,4000]
print(d[0])
[결과]
1000
문제2. d 리스트 변수안에 있는 요소드릉르 하나씩 출력하시오 !
d=[1000,2000,3000,4000]
for i in d:
print(i)
[결과]
1000
2000
3000
4000
설명 : 파이썬은 PL/SQL이나 JAVA, C언어 처럼 ; [세미콜론]을 사용하지 않는다.
그냥 : [콜론]을 사용하는데 (괄호쓰지않고 ) 반드시 콜론을 끝에 적어줘야하는
문법이 if 문, while loop, for loop, def 함수 생성시 사용한다.
PL/SQL 이나 자바,C 등을 사용하던 사람들은 뒤에 ; 을 붙이는 습관이있는데
파이썬은 기본적으로 구문의 뒤에 아무것도 붙이지 않는다. 대신 IF문이나
WHILE LOOP, FOR LOOP, DEF CLASS 문의 뒤에 는 꼭 붙여야한다.
파이썬이 다른 언어보다 보기 쉽고 소스코드가 간결한 이유는
콜론(:)을 사용해서 들여쓰기를 하도록 만들었기 때문이다.
파이썬은 블럭구분을 들여쓰기를 통해서 한다.
콜론(:) 뒤에 나오는 명령어를 다음줄에 작성하려면 들여쓰기를 해야한다.
문제3. a 라는 리스트 변수에 아래의 내용을 담으시오
a = ['7839','KING','PRESIDENT','0','1981-11-17','5000','','10']
for i in a:
print(i)
문제4. a 리스트에서 7839만 출력하세요
a = ['7839','KING','PRESIDENT','0','1981-11-17','5000','','10']
print(a[0])
- 함수
■len 함수 : 리스트 변수안에 있는 요소들이 몇개인지 출력하는 함수
a = ['7839','KING','PRESIDENT','0','1981-11-17','5000','','10']
cnt = len(a)
print(cnt)
a = ['7839','KING','PRESIDENT','0','1981-11-17','5000','','10']
↓
None
(오라클의 null)
문제6. 카페에서 파이썬 수업자료에 emp2.csv를 내려받아 D 드라이브 밑에
data라는 폴더에 다운 받고 아래와 같이 수행한다.
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list)
문제7. 위의 결과에서 사원번호만 출력하시오
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[0])
문제8. 이름과 월급을 출력하시오
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[2].rjust(10),emp_list[5].rjust(10))
문제9. 위의 14개의 리스트 변수의 요소의 갯수를 아래와 같이 출력하시오
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (len(emp_list))
결과 :
8
8
8
8
8
8
8
8
8
8
8
8
8
8
문제10. 이름과 이름의 길이를 아래와 같이 출력하시오 !
SMITH 5
SCOTT 5
ALLEN 5
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1] ,len(emp_list[1]))
■ 4.3 산술 연산자
+ 더하기
- 빼기
*곱하기
/ 나누기
% 나눈 나머지 값
문제11. 사원번호, 이름 , 월급을 출력하시오
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[0] ,emp_list[1],emp_list[5] )
문제12. 이름과 연봉(sal*12) 을 출력하시오 !
설명 : 숫자로 형변환을 해주어야 한다.
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[0] ,emp_list[1],emp_list[5]*12 )
[결과]
설명: 숫자로 형변환을 해주어야 한다.
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[0] ,emp_list[1],int(emp_list[5])*12 )
문제13. 이름과 커미션을 출력하는데 커미션이 none 이면 0으로 출력하시오 !
def ifnull(var,val):
if var is '':
return val
return var
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1] ,ifnull(emp_list[6],0) )
문제14.(오늘의 마지막 문제 ) 이름과 월급 + 커미션을 출력하시오 !
def ifnull(var,val):
if var is '':
return val
return var
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1] ,int(emp_list[5]) + int(ifnull(emp_list[6],0)) )
[결과]
...
KING 5000
BLAKE 2850
CLARK 2450
JONES 2975
MARTIN 2650
ALLEN 1900
TURNER 1500
JAMES 950
WARD 1750
FORD 3000
SMITH 800
SCOTT 3000
ADAMS 1100
MILLER 1300
def ifnull(var,val):
if var is '':
return val
return var
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print(emp_list[1],int(emp_list[5]),int(emp_list[5])+int(ifnull(emp_list[6],0)),int(emp_list[5])+int(ifnull(emp_list[6],0))-int(emp_list[5]), emp_list[6])
■ 어제 배운 내용
- 파이썬을 배우는 목표
ぁ 웹스크롤링 Big data 수집
ぃ 머신 러닝 - Tic Tac Toe 코드로 이해
엔트로피 지수로 가장 좋은 수를 찾는 방법을 구현 코드
퍼센트론 -----> 인공신경망
↓
행렬, 벡터를 이용한 수학 공식을 계산
사람의 뇌 구조를 아주 조금 컴퓨터로 구현했는데
그 안에 뉴런에서 보내는 신호를 가중치로 표현을
해서 그 가중치(반복학습을 하면 중요하다는 것을 알게되는것 !)
를 계산해야 한다.
2x + 3y + z = 4
x - y + 3z = 2 연립 방정식 계산식
5x + 2y + z = 4
선형대수학
- 데이터 다루기
- 변수 사용법
- 산술 연산자
- nvl 함수가 파이썬에는 없음
*4장 목차
- 변수 사용법
- 산술 연산자
- 함수
- input 명령어
4.3. 함수
책 83 ~ 85
*우리의 목표에 맞춰서 나름대로 다시 정리
오라클 |
파이썬 |
1. 문자함수
upper
lower
initcap
substr
replace
length
rtrim
ltrim
trim
rpad
lpad
instr
|
lower() 사용자 함수 변수[1:2] replace() len() rstrip() lstrip() strip() 사용자 함수 사용자 함수 사용자 함수 |
2.숫자함수roundtruncmodpower |
|
3.날짜함수months_betweenadd_monthsnext_daylast_day |
relativedelta사용자 함수monthrange |
4.변환함수to_charto_numberto_date |
|
5.일반함수 nvl decode case |
ifnull 사용자함수 if 문 |
6. 파이썬에 유용한 함수(MIT Tic Tac Toe)문자함수
|
split
append
range
count
|
■ 연산자
- 산술 연산자
- 비교 연산자
- 논리 연산자
- 기타 비교연산자
오라클 |
파이썬 |
|
산술 연산자
|
+-
|
+-/% |
비교연산자
|
= !=>>=<<= |
|
논리연산자
|
andornot |
&|! |
기타 비교 연산자 |
between .. andin, not inis nulllike |
<= & >=in==''^(시작), $(끝) , 정규식함수 |
문제15. 이름과 직업을 출력하는데 소문자로 출력하시오
---------------------------
함수 : upper , lower 함수
---------------------------
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1] ,int(emp_list[5]) + int(ifnull(emp_list[6],0)) )
문제16.(MIT TTT 코드를 이해를 위해 중요한 기초 문제)
이름을 출력하는데 이름의 첫번째 철자만 출력하고 소문자로 출력하시오!
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1][:1].lower())
문제17. 이름을 출력하는데 이름의 두번째 철자부터 마지막까지 소문자로
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1],emp_list[1][1:].lower())
문제18. 이름의 첫번째 함수는 대분자로 나머지는 소문자로 출력하시오
---------------------------
|함수: initcap 사용자 함수|
---------------------------
def initcap(val):
return val[0].upper()+val[1:].lower()
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (initcap(emp_list[1]))
문제19. 이름의 첫번째 철자부터 세번째 철자까지 출력되게하시오 !
---------------------------
|함수: substr 사용자 함수 |
---------------------------
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1][0:3])
문제20. 이름의 첫번째 철자부터 세번째 철자까지 출력되게하시오 !
def substr (val, num1, num2):
return val[num1-1:num2]
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (substr(emp_list[1],1,3) )
문제21. 이름과 월급을 출력하는데 월급을 출력할 때에 0 대신에 * 를 출력하시오
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[5].replace('0','*') )
문제22. 이름과 월급을 출력하는데 월급을 출력할때 0~2를 *로 출력하시오 !
---------------------
|함수: re 정규식함수|
--------------------- 참고사이트 : http://devanix.tistory.com/296
import re
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (re.sub('[0-2]','*',emp_list[5]) )
sub(pattern, repl, string[, count=0])
문제23. 이름과 이름의 길이를 출력하시오 !
---------------------
|함수: len() |
---------------------
import csv
file = open("D:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1],len(emp_list[1]) )
문제24. 아래의 split 함수의 예제를 수행해보시오!
---------------------
|함수: split() |
---------------------
file = 'a b c d e f g'
print ( file.split(' ') )
['a' , 'b', 'c' ,'d' , 'e', 'f' ,'g']
문제25. 아래 file 변수의 요소들을 리시트 변수로 담아내서 두번째 요소인 b만 출력해보시오 !
file = 'a b c d e f g'
a = file.split(' ')
print(a[1])
print ( file.split(' ')[3])
문제26. 겨울왕국 대본을 공백을 구분으로 두고 나눠서 리스트 변수로 저장되게 하시오 !
---------------------
|함수: split() |
---------------------
file = open("D:\data\winter.txt",'r')
for winter_list in file:
a= winter_list.split(' ')
print (a)
문제27. (점심시간 문제) 위의 스크립트를 이용해서 겨울왕국 각 리스트 변수안에 단어가 몇개 있는지 아래와 같이 출력되게하시오
file = open("D:\data\winter.txt",'r')
for winter_list in file:
a=len(winter_list)
print (a)
문제28."썸!
file = open("C:\Octave\winter.txt","r" )
b = 0
c = 0
for winter_list in file:
a= winter_list.split(' ')
b = b + len(a)
print(b)
문제29. 카운트 함수 써보자
---------------------
|함수: count() |
c = ['Anna','Elsa','Anna','Elsa']
d = c.count('Elsa')
print(d)
[결과]
2
file = open("C:\Octave\winter.txt","r" )
b = 0
c = 0
for winter_list in file:
a= winter_list.split(' ')
b+=a.count('Elsa')
print(b)
문제30. emp.csv 에서 14개의 사원번호를 출력해보자!
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
b = []
for emp_list in emp_csv:
b.append(emp_list[0])
print(b)
예제 : a = [1, 2, 3]
a.append(4)
print(a)
b = []
b.append(1)
b.append(2)
b.append(3)
print(b)
문제31. 겨울왕국 대본을 단어별로 출력하시오!
for loop for loop
csv ------------------> list 변수 ----------------------------> 하나의 단어
↓
['glide', 'and', 'pivot.\n']
['We', 'pull', 'away', 'slowly,', 'into', 'the', 'sky.', 'We', 'arrive', 'at', 'a', 'bird’s-eye\n']
file = open("D:\data\winter.txt",'r')
for winter_list in file:
a= winter_list.split(' ') # 스크립트 -----> 리스트 변수
for i in a: # 리스트 변수 --> 단어
print(i)
문제32. 위의 출력된 단어들을 하나의 list변수에 담으시오
---------------------
|함수: append() |
---------------------
file = open("D:\data\winter.txt",'r')
B=[]
for winter_list in file:
a= winter_list.split(' ')
for i in a:
B.append(i)
print(B)
문제33. 출력된 단어들 중에서 \n 은 잘라내시오
-----------------------------------
|함수: lstrip(), rstrip(), strip()|
-----------------------------------
file = open("D:\data\winter.txt",'r')
B=[]
for winter_list in file:
a= winter_list.split(' ')
for i in a:
i = i.strip('\n')
B.append(i)
문제34. rpad 함수를 생성하시오 아래와 같이 실행되게 하시오 !
-----------------------------------
|함수: rpad(), lpad() 함수 |
-----------------------------------
def rpad(var,val):
if var is '':
return val
return var
import csv
file = open("D:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
print (emp_list[1], emp_list[5] )
|
1. 날짜함수를 파이썬으로 생성
- next_day (사용자 함수)
- add_months ( 모듈 이용해서 구현)
- last_day ( monthrange 함수)
- months_between ( 사용자 함수) ---> ? 오래 생각해야할 문제
2. input 명령어 + if 문 사용
3. 비교 연산자 : ==
>=
<=
!=
>
<
in <----- 겨울왕국에서 긍정단어가 몇 개가 있는가?
■ 기타 비교연산자 :
in in
between .. and <= & >=
like 정규식 함수
is null ==''
■논리 연산자:
and &
or |
not ^
문제62. 직업이 SALESMAN 이고 월급 1200 이상인 사원들의 이름과 직업과 월급을 출력하시오 !
import csv
file = open("d:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if (emp_list[2] == 'SALESMAN') & (int(emp_list[5]) >= 1200):
print(emp_list[1], emp_list[5])
문제63. 월급이 1000에서 3000 사이인 사원들의 이름과 월급을 출력하시오 !
연산자: between .. and |
import csv
file = open("d:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if (1000 <= int(emp_list[5])) & (3000 >=int(emp_list[5])):
print(emp_list[1], emp_list[5])
문제64. 직업이 ANALYST, CLERK 인 사원들의 이름과 월급과 직업을 출력하시오 !
연산자: in |
import csv
file = open("d:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[2] in ['ANALYST','CLERK']:
print(emp_list[1], emp_list[5], emp_list[2])
문제65. 직업이 ANALYST, CLERK 이 아닌 사원들의 이름과 월급과 직업을 출력하시오 !
연산자: in |
import csv
file = open("d:\data\emp2.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[2] not in ['ANALYST','CLERK']:
print(emp_list[1], emp_list[5], emp_list[2])
문제66. 커미션이 null 인 사원들의 이름과 커미션을 출력하시오 !
4. 파이썬 수업용 실습 데이터의 emp_comm.csv 를 다운받아서 수행
연산자 : is null
import csv
file = open("d:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[6] =='':
print(emp_list[1], emp_list[6])
문제67. 커미션이 null 이 아닌 사원들의 이름과 커미션을 출력하시오 !
연산자: ins not null
import csv
file = open("d:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[6] !='':
print(emp_list[1], emp_list[6])
문제68. 이름의 첫번째 철자가 S 로 시작하는 사원들의 이름과 월급을 출력하시오 !
연산자: like
import csv
file = open("d:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[1][0:1] =='S':
print(emp_list[1], emp_list[6])
문제69. 이름의 두번쨰 철자가 M 인 사원들의 이름과 우러급을 출력하시오 !
연산자: like
import csv
file = open("d:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[1][1:2] =='M':
print(emp_list[1], emp_list[5])
문제70. 이름의 마지막 철자가 H인 사원들의 이름과 월급을 출력하시오 !
연산자: like
import csv
file = open("d:\data\emp_comm.csv",'r')
emp_csv = csv.reader(file)
for emp_list in emp_csv:
if emp_list[1][-1] =='H':
print(emp_list[1], emp_list[5])
'PYTHON' 카테고리의 다른 글
gcp를 이용해서 jupyter notebook / jupyter lab 서버 만들기 (0) | 2018.08.27 |
---|---|
9장. 객체와 클래스 (가장 중요한 단원) (0) | 2017.09.10 |
8장. 모듈 (0) | 2017.09.10 |
7장. 함수 (0) | 2017.09.10 |
6장. if 문과 loop문 (p126) (0) | 2017.09.10 |