Quiet Time

1-5장

PYTHON2017. 9. 10. 00:40
   ■ 파이썬을 통해서 우리가 이루고자 하는 목표 2가지
  1. 파이썬 문법 ( ~ 11장. ----> 웹스크롤링 ---> Tic Tac Toe)
                                                      ↓
                                                  1.단층 퍼셉트론
                                                  2.greedy 알고리즘
                                                  3.확률(몬테카를로)

                                                              ↓
                                                       통계학자4명+물리학자

  1. 웹스크롤링 기술

               신문사 ------> 트위터 -----------> 인스타그램

               원하는 사이트를 자유롭게 웹 스크롤링
  1. 머신러닝 프로그램 구현 (Tic Tac Toe - Mit 공대)


점프 투 파이썬


■ 파이썬 설치

인스타그램

■ 파이썬 설치
  1. 기본 파이썬 설치 파일
  1. 아나콘다(spider)

     - 웹스크롤링       : beautiful soup 모듈
     - 머신러닝(틱텍토) : numpy 모듈

  1. 파이참(pycharm)


■ 2장. 파이썬이란?

  1. 파이썬의 문법은 쉽다
  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'>

<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])

  1. 함수
■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])



■ 어제 배운 내용
  1. 파이썬을 배우는 목표
ぁ 웹스크롤링 Big data 수집
ぃ 머신 러닝 - Tic Tac Toe 코드로 이해
     엔트로피 지수로 가장 좋은 수를 찾는 방법을 구현 코드

     퍼센트론  -----> 인공신경망
                         ↓
                    행렬, 벡터를 이용한 수학 공식을 계산

                    사람의 뇌 구조를 아주 조금 컴퓨터로 구현했는데
                    그 안에 뉴런에서 보내는 신호를 가중치로 표현을
                    해서 그 가중치(반복학습을 하면 중요하다는 것을 알게되는것 !)
                    를 계산해야 한다.

     2x + 3y + z  = 4
     x -  y  + 3z = 2     연립 방정식 계산식
     5x + 2y + z  = 4

          선형대수학


  1. 데이터 다루기
          - 변수 사용법
          - 산술 연산자
          - nvl 함수가 파이썬에는 없음


     *4장 목차
  1. 변수 사용법
  2. 산술 연산자
  3. 함수
  4. input 명령어

4.3. 함수
책 83 ~ 85
*우리의 목표에 맞춰서 나름대로 다시 정리

오라클
파이썬
1. 문자함수
upper
lower
initcap
substr
replace
length
rtrim
ltrim
trim
rpad
lpad
instr

upper()
lower()
사용자 함수
변수[1:2]
replace()
len()
rstrip()
lstrip()
strip()
사용자 함수
사용자 함수
사용자 함수

2.숫자함수roundtruncmodpower

round()trunc()%power()
3.날짜함수months_betweenadd_monthsnext_daylast_day

사용자 함수
relativedelta사용자 함수monthrange
4.변환함수to_charto_numberto_date

str()int(), float()datetime.strptime()
5.일반함수
nvl
decode
case

사용자함수
 ifnull
사용자함수
if 문
6. 파이썬에 유용한 함수(MIT Tic Tac Toe)문자함수




변환함수


기타(MIT 코드 이해를 위해필수로 알아야하는 중요함수 )


format()isalpha()isnumeric()isspace()

list()tupple()

split
append
range
count

■ 연산자
  1. 산술 연산자
  2. 비교 연산자
  3. 논리 연산자
  4. 기타 비교연산자



오라클
파이썬
산술 연산자

+-

mod
+-/%
비교연산자

= !=>>=<<=

논리연산자

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] )




file = open("D:\data\winter.txt",'r')

a=0

b=0

for winter_list in file:   

        a= winter_list.split(' ')        

        b+=a.count('Elsa')

        

print (b)




     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