Python 1 - 4강

nahye·2021년 5월 8일
0

AI School

목록 보기
4/8

1강

통계 분야에는 파이썬 주로 사용
다양한 라이브러리가 많아
원하는 기능구현에 집중할 수 있음

원하는 인공지능을 구현하기 위한 통계와 시각화 기반의 라이브러리를 제공하고 있다.
구글은 이러한 파이썬 언어를 바탕으로 머신러닝과 딥러닝을 자유롭게 구현하고 다양하게 실험할 수 있도록 구글은colaboratoty(코랩)을 만들었다.

코랩은 인터넷만 가능하다면 그 어떠한 공간에서도 실행할 수 있으며, 심지어 스마트폰에서도 가능하다.
복잡하고 무거운 프로그램도 별도로 설치할 필요 없음


2강

파이썬 사칙연산 가능
shift + enter : 코드 즉시 실행
ctrl + enter : 다음 코드랑 생성없이 이 코드만 실행됨
** : 제곱
/ : 일반 나눗셈(소수점까지 반환) 13/2 => 6.5
// : 나눗셈의 몫을 정수로 반환 13//2 => 6
% : 나눗셈의 나머지 출력 11 % 3 => 2

파이썬은 복소수를 j라는 값을 사용해 표현
1.2 + 3.4 j => (1.2+3.4j)

데이터 타입
type()을 이용하여 데이터 타입 확인

  • int : 정수 integer의 약자
  • float : 소수
  • complex : 복소수
  • str : string의 약자인 str

변수

이런 값들을 저장하며, 저장된 값들을 통해 다양하게 활용해야함
이러한 변수들을 저장하기 위해 필요한 것이 등호 기호
등호 기호를 사용하여 오른쪽에 있는 데이터들을 왼쪽 변수로 저장할 수 있다.

x=10

변수의 이름은 자유롭게 할 수 있지만
첫 문자는 알파벳, 한글, underbar(_) 밑줄만을 사용해야

if나 for 등의 미리 지정된 예약어는 사용할 수 없다.
예약어 모음은 코드입력란에 help('keyword')라고 치면 알 수 있다.

# 주석, 주석은 코드로 인식되지 않음

변수는 하나의 값만 가질 수 있음
그래서

  • 리스트(list)

    • 다수의 값들을 저장하고 있는 존재, 물품이나 사람의 이름 따위를 일정한 순서로 적어 놓은 것

    • 리스트에 저장된 값들은 각각 '요소'라고 부름

    • 리스트의 요소 각각에는 위치가 지정되어 있음

    • 해당 요소를 사용하기 위해서는 이러한 위치를 통해 접근해야함

    • 대괄호 안의 숫자를 '인덱스'라고 부름

    • 파이썬에서의 첫번째는 1이 아닌 0부터 시작한다는 점 꼭 기억하기

    • '음수 인덱스'는 뒤에서 부터 시작, 맨 뒤값만 출력

    • 리스트 장점은 리스트 안에 또 다시 리스트, 문자열, 소수, 정수 등 저장할 수 있는 데이터 타입과 깊이의 제약이 없음

    • 다차원 데이터가 등장함에 따라 리스트의 강력함이 나타나게 된다.

    • 콜론을 사용하여 범위를 지정하면 요소 여러 개를 한 꺼번에 출력할 수 있다.

    • 콜론 이전 요소 값은 포함되지만 콜론 이후 요소값은 미포함되기 때문에 "~ 이상 ~미만"으로 알아두기

    • [:3]은 첫 번째부터 세 번째 요소까지 전부 출력이라는 형식으로 사용됨

    • 언제든지 수정 가능


  • 튜플

    • 대괄호가 아닌 소괄호를 이용

    • 한 번 만든 요소에 대하여 추가 변경 삭제가 불가능

    • 튜플은 변경하려면 에러를 불러일으킴
      - 데이터가 바뀌지 않기에 리스트보다 처리속도가 약간 빠르다.

  • 조건문과 반복문(conditional and loop)

    - 코드의 시작 지점부터 끝 지점까지 코드가 실행되는데 조건문이란 개념을 통해 조건을 지정하게 되면 코드 실행에 대한 순서를 조정할 수 있게 된다.
    ![](https://velog.velcdn.com/images%2Fnahye0910%2Fpost%2F53070847-514e-4906-b0c9-6c9b763b7e39%2Fimage.png)
    • 어떠한 조건일 때만 실행하고자 하는 경우 if문 사용
    • 조건문의 조건이 맞지않는 경우 실행
    • 반복문은 이후 ML 혹은 DL에서 무척 중요한 역할을 함
    • 우리가 지정한 횟수만큼 반복하여 단순 퍼셉트론의 가중치 학습을 진행하는 경우 하나하나 코드를 작성하는 것보단 반복문을 적절하게 사용한다면 간단하게 진행 가능
    • for문은 조건에 포함되는 값 개수만큼 블록을 반복 실행
    • 반복문이라는 것을 알려주는 for
    • range 함수는 시작 숫자부터 끝 숫자바로 전까지숫자 간격에 따른 연속 정수 값을 저장하는 함수
    • 포함된 값 개수만큼 총 3번 print() 실행함
    • 리스트 안 요소와 그에 해당하는 인덱스를 함께 출력하는 enumerate()를 사용한 예제
    • 리스트의 해당 인덱스는 i
    • 리스트 요소는 e로 할당하게 됨
    • 최종 출력값은 for문의 조건에 포함된 값 개수만큼 이렇게 총 3번에 걸쳐 출력함


    • for문처럼 조건값을 지정한 만큼 반복하는 것이 아닌, 조건을 만족하지 않을 때까지 무한으로 반복 실행하는 while문
    • ML이 지정한 목적 함숫값에 도달할 때까지 연속해서 학습을 진행하고 싶은 경우 사용
    • while문을 넣고 멈춰야 하는 조건을 넣어주면 됨
    • 처음 i값인 0을 출력하고, 기존 i값에 1을 더해 저장하고, 다시 조건문으로 가서 조건 부합하니, 다시 아래 코드 실행, 그리고 다시 기존 i값인 1에 다시 1을 더해 저장하고 다시 조건문으로 가서 조건 부합 확인하며 while문 동작


3강

함수와 클래스를 사용한다면 코드를 반복해서 작성할 필요가 없어진다.

함수

  • 함수는 필요한 전달 값을 받아, 특정 작업을 수행한 후
    결괏값을 반환하는 코드 블록


👆 함수 사용할 때 프로그램의 순서도

  • 함수 안에 코드 블록을 가지고 있고 호출할 때마다 코드블록 실행
  • 장점
    • 함수가 동작한 후에 어떠한 결과가 나오는지만 알면 함수 내부 구조를 몰라도 사용하는 데 문제가 없다는 점
      - 코드를 반복해서 작성하는 일 또한 줄어듬
  • def
    • define:정의하다
    • def라는 파이썬의 예약어
    • def 뒤에는 함수의 이름과 전달 값을 저장하기 위한 변수의 이름을 나열
    • 앞서 배운 다른 구문들과 동일하게 콜론과 들여 쓰기가 된 코드를 작성하면 함수를 만들 수 있다.
    • 이때 전달 값을 받을 필요가 없다면 () 빈칸으로 나 두면 됨
    • 함수는 기본 출력말고도 반환이 존재
    • 반환은 바로 출력하는 것이 아닌 함수 내의 변수에 저장하게끔 하는 기능을 가지고 있다.
    • 반환을 마친 함수는 종료가 되는 것
    • 함수는 우리가 필요한 기능에 대하여 자체 제작을 할 수 있으며 반대로 이미 제작된 내장 함수 또한 존재한다.
    • 예를 들면 변수가 가진 값의 길이를 반환하는 len 함수, 사용자로부터 문자열을 입력받고 그를 화면으로 출력하는 input 함수, 앞서 사용한 range도 기본 내장함수
    • 내장함수는 좀 더 효율적으로 프로그래밍에 집중할 수 있도록 다양한 기능들을 제공해 주고 있다.

클래스

함수와 마찬가지로 코드의 반복을 줄이기 위해서도 사용되지만, 대체로 규모가 큰 프로그램을 만들 때 개발자가 코드를 잘 이해하기 위해 사용되고는 한다.

  • 함수 제작을 위해 def라는 예약어를 사용했듯,
    클래스 또한 class라는 예약어 사용
  • 클래스 위에 클래스 명과 콜론 적어주기
  • 클래스의 특이한 점은 함수와 달리 self라는 전달 값이 추가된 점
  • 실제 전달값이 아닌 파이썬 내부에서 사용되는 약속된 값
  • 1부터 10까지의 코드는 Email 코드를 정의하는 코드
  • 이 클래스는 sender라는 변수를 가지고 send_mail이라는 함수를 하나 가지고 있다.
  • 앞서 말한 것 처럼 self는 파이썬 내부에서 사용되는 값이기 때문에 self를 제외한 send_mail은 전달값을 3개 입력받는 함수이다.
  • 이 클래스는 실제 메일을 보내는 함수는 아니지만, 관련 내용을 출력하는 함수인데, 5번째 줄을 보면 self를 출력하기 위해 self.sender로 작성한 것을 확인 가능
  • 이는 함수 안에서 만든 변수가 아니라, 클래스에 속한 변수이기 때문에 클래스 자기 자신이 가진 sender라는 의미로 self.sender라 표기해야 함
  • 12번째 코드보면 일반적인 문자가 아닌 클래스가 저장 되어 있음
  • 즉 클래스가 변수로서 저장되었다는 의미
  • 이는 Email 클래스 자료형 변수가 되는 것을 의미
  • 이 클래스 변수는 이후 클래스에 속한 변수와 함수를 모두 사용할 수 있게 된다.

13번째 코드에서 e변수에 점이 하나 있고 sender 변수가 붙어 있는데, 이는 Email 클래스 안에 있던 sender 변수에 접근하고자, 점을 이용한 것이다.

  • 점을 활용하게 되면 클래스 내부에 있는 변수에 접근할 수 있다.
  • 그리고 이 변수에 문자열을 저장해 주는 것
  • 14번째 코드는 우리가 잘 알고 있는 문자 열을 리스트 형태로 저장한 것이고 이는 가상의 수신 메일 리스트이다.

16번째, 17번째 코드는 14번째 줄에서 만든 리스트를 순회하면서 e클래스 변수에 있는 send_mail() 함수를 호출

  • send_mail()의 self는 직접 전달값으로 사용되는 변수가 아니기 때문에 3개의 전달 값만을 입력해야 한다.

출력화면

클래스 활용

다른 파이썬 파일에 있는 클래스를 사용하는 방법은 import와 from을 사용함

메모장을 열고 1번째부터 10번째 코드 까지 바탕화면에 저장하기

코렙 좌측에 보면 업로드 버튼 누르기
우리가 저장한 파이썬 파일 저장해 코렙으로 불러주기
(코렙이 켜져있는 상태에서만 가능하니 코렙을 실행한다면 파이썬 파일 한 번 더 불러와주기)

from 파일이름 import 클래스명
이 파이썬 파일에 있는 클래스를 이 코드란으로 불러올 수 있게 된다.

또 클래스에 있는 함수와 변수도 활용할 수 있게 된다.

이처럼 각 기능을 다른 파이썬 파일에 나눠 개발함으로써,
개발자도 코드 관리가 쉬워 생산성을 향상할 수가 있게 된다.
클래스는 좀 더 깊은 분야까지 접근했을 때 등장하는 개념

하지만 클래스나 객체 기반의 객체지향 프로그래밍 개념은 파이썬을 사용한다면 꼭 알아야한다.

이후 규모가 거대한 프로젝트나 시스템 개발에 있어 이러한 클래스 기반의 개념은 필수가 됨.


4강

아는 데이터 형식 : text, csv, excel
요즘 같이 공공데이터에 대한 수요와 공급이 넘쳐나는 세상에서, 내가 알고 싶은 데이터를 확보하기 위해
오픈 api 그리고 json 타입의 파일을 알아보자



JSON

  • JSON은 그 이름에서 유추할 수 있듯 JavaScript Object Notation의 약자로 자바스크립트의 프로그래밍 언어 부분에 기반하고 있으며, 데이터를 효율적으로 저장하고 교환하는데 사용되는 텍스트 데이터 형식 중 하나

  • 사람이 읽고 쓰기에도 쉬우며 또한 컴퓨터가 파싱하고 생성하기에도 쉽기에 자주 사용됨

  • 이처럼 이름과 값의 집합, 그리고 정렬된 값의 리스트 이렇게 두 개의 구조로 이루어져 있다.

  • '이재화'라는 이름을 가진 학생에 대한 정보를 포함하고 있는 JSON 타입의 데이터가 있을 때, 이름과 값의 집합, 그리고 정렬된 값의 리스트 형식 구조를 확인할 수 있다.


✔ 파이썬의 list와 tuple이 JSON으로 변환하게 되면 array로 바뀌며, 반대로 JSON의 array는 파이썬의 list로 변환하게 된다는 점!

파이썬에서 JSON을 다룰려면 내장모드의 JSON이 필요
import JSON 해주기

  • JSON 불러오는 법
    1. JSON형식의 데이터를 열어 파이썬 객체로 읽어와 주는 것
      - with문과 함께 open함수를 사용하여 json파일 불러옴, 뒤에 as로 별칭 지어줌
      - 불러와진 data를 json 모듈의 load 함수에 첨가 시켜 파이썬 객체(json_data)로 저장시켜줌

    2. 파이썬의 객체를 JSON의 문자열로 변환하기

      • json 모듈의 dumps 함수에 넣어줘야함
      • 가독성이 떨어지는 문제 발생
      • 가독성을 위해 indent로 들여쓰고 sort_keys로 key를 기준으로 정렬해줄 수 있다.

이름과 값의 집합, 정렬된 값의 리스트 이렇게 두 개의 구조로 이루어져 있으며
컴퓨터와 사람 모두 읽고 쓰기 쉬운 형태로 되어 있다.

OPEN API

우린 이 api를 가지고 무엇인가를 개발하려는 목적이 아니기 때문에 우리만의 문장으로 바꿔보면

라고 정의할 수 있다.

Open API를 사용하면 데이터를 가져올 수 있다는 이야기가 되는데, 공공데이터를 먼저 가져오기 앞서, 영화진흥위원회에서 제공해주는 Open API를 사용하여 일별 영화 순위 정보를 가져와 보자


Open API를 활용하려면 해당 업체에서 제공해주는 '키'가 필요하게 된다.

한두 명의 사람이 API를 너무 과도하게 사용하게 되면, 제공 해주는 입장에서도, 아니면 또 다른 사용자들에게도 부담이 되기 때문에, 제공자 입장에서는 어느 정도의 컨트롤이 필요함

종종 키가 필요없는 경우도 있긴 하다.

영화진흥위원회의 open api를 사용하기 위한 키가 필요한데, 여기서는 하나의 키를 가지고 일 3000회까지 사용할 수 있다고 함

회원가입이 귀찮으면 여기 이 키를 사용해보기

Open API를 제공하는 곳에서는 "API를 이렇게 사용하세요"라고 일종의 가이드라인을 제시해준다.
그래야 사람들이 이용할 수 있기 때문

  • 가이드라인
    1. 필요한 데이터 확인
    2. 데이터 공급형태 확인
      (어떠한 데이터를 어떻게 공급하는지 확인해야 이 데이터를 어떻게 활용할지 그려볼 수 있음)
    3. 데이터 정제

내가 찾는 데이터가 맞으면 파이썬을 통해 접근해줘야 하는 주소인 URL 찾기
다양한 방식이 있지만 이곳에 응답 예시가 있는데

우리가 앞서 발급받은 키와 날짜로 추정되는 숫자가 보인다.


이 URL을 가져다가 나만의 키 값으로 바꿔주고, 내가 원하는 기준 날짜로 설정해주기


URL에 들어있는 정보를 요청하기 위해
request 모듈의 get함수를 이용하여 정보를 저장해주기

다음 인간이 확인하기 위해서 text문자로 변환해 주고

JSON형태로 변환하여 살펴보기 위해
맨 마지막 줄을 사용해준다.

JSON 모듈의 dumps 함수를 사용해주고 가독성 향상을 위한 속성값을 설정해주면 데이터 출력됨

앞서 봤던 API 가이드라인을 참고해
이 단어가 뜻하는 게 무엇인지 알려주고 있음
이러한 설명들을 바탕으로 우리가 출력한 데이터를 확인해주기

우리가 원하는 데이터를 출력하기 위해 key라는 함수를 통해 어떠한 key들을 사용해줘야 하는지 확인하기

key들이 출력 됐는데 이 때 앞서 확인한 정보를 바탕으로 이 데이터는 대략 여기쯤 있겠구나 라고 확인해주기
우리가 확인하고 싶은 정보는 dailyBoxOfficeList에 들어있음

여러개의 데이터를 반복해서 출력해야하는 상황이니 for문을 사용해주고

최종데이터가 저장된 객체에 제일 상단에 있는 boxOfficeResult, dailyBoxOfficeList
그리고 각 i에 담긴 데이터에 우리가 원하는 응답필드(rank, rankOldAndNew, movieCD, movieNm, saleAmt)를 넣어 출력해보기

영화 순위에 대한 데이터 출력됨

추가로 이런 데이터를 pandas 프레임 형식으로 저장하고 싶다면 append 함수를 사용해주면 됨.

공공데이터

공공데이터 포털 접속
찾고 싶은 주제를 적으면 open api정보가 나타나는데
우리가 알고 싶은 건 단 2가지

이 참고 문서와 url


일단 이 참고문서를 클릭하면 요청 url과 응답필드를 확인할 수 있는데 이 open api는 따로 key값이 존재하지 않음


이전 사용했던 코드를 그대로 가져와 url만 변경
객체 이름은 원하는 이름으로 수정후 데이터 확인하기


우리가 확인하고자 하는 공적 마스크 현황 데이터는 sales라는 key 안에 들어있는 것을 확인 가능


한 번에 데이터 프레임으로 저장하기 위해
빈 리스트로 생성한 다음 for문을 통해 반복문을 선언해 주고 sales라는 key로 접근하여 append함수를 통해 각 i에 담긴 값들을 list에 저장해주면 됨

그리고 pandas dataFrame에 저장해주면

원하는 정보를 확인할 수 있게 된다.

profile
Slow and steady wins the race

0개의 댓글