반응형
API란?

API(Application Programming Interface)는 응용 프로그램에서 데이터를 주고받기 위한 방법을 말한다. 어떤 사이트에서 필요한 데이터를 공유받고 싶을 때 어떻게 정보를 요청(request)할지, 그리고 제공받을 수 있는 데이터의 정보에 대한 규격들을 통틀어 API라고 한다. 또한 이러한 내용을 문서화한 것을 'API 규격서'라고 한다.

 

공공데이터 포털 API 이용하기
step1. 공공데이터 포털 사이트 접속 및 로그인/회원가입
공공데이터 포털 사이트: https://www.data.go.kr

 

step2. 공공데이터 포털에서 필요한 자료 검색 및 활용 신청하기

이번 포스팅에서는 공공데이터 포털의 cctv API 자료를 신청하여 보겠다.

CCTV 오픈 API는 [인기 데이터] > 5번 [전국 CCTV표준 데이터]에서 찾을 수 있었다.

다른 필요한 자료가 있으면 그 자료를 검색해서 신청하면 된다.

화면의 우측 상단의 [활용신청]을 클릭한다.

신청하면 위와 같이 활용 목적 선택이 나오는데 해당 사항에 체크 후 간단하게 목적을 작성해 준다.

시스템 유형은 일반에 체크한다. 어떤 API는 [시스템 유형]에 [일반]/[서버 구축] 2가지가 나오는 경우가 있는데 DB를 구축할 때는 [서버 구축]에 체크해주면 된다.

상세 기능정보에 모두 체크하고 라이선스 [동의합니다]에 체크 후 활용신청을 클릭하면 된다.

그러면 신청 완료 메시지와 함께 1~2시간 후 API를 사용할 수 있다고 안내가 나간다.

데이터에 따라 1~2일 시간이 걸릴 수 있으니 이점 참고하자.

step3. 마이페이지에서 신청한 API 확인

마이페이지> 오픈 API> 개발계정에 접속하면 위와 같이 신청 승인된 CCTV표준 데이터가 나타난다.

이렇게 되면 오픈API 신청은 완료된다.

 

step4. 신청한 오픈API 사용하기

위의 CCTV 표준 데이터를 클릭하면 "개발계정 상세보기"가 아래와 같이 나타난다.

위와 같이 페이지가 나타나는데 아래 서비스 정보에서는 인증키를 확인할 수 있다.(위의 인증키가 꼭 있어야 이용 가능하다.)

인증키가 발급이 되지 않았을 때는 마이페이지> 인증키 발급현황에서 발급/재발급 가능하니 참고하자.

기본 설명에 [상세 설명]을 클릭하여 아래와 같이 요청 변수(Request Parameter) 등을 확인하자.

항목이 어떤 의미인지 명세되어 있다.

각각의 항목이 어떤 것인지를 알아야 활용이 가능하므로 숙지해 놓는 것이 좋다.

그 상태에서 아래로 스크롤을 내리면 위와 같은 샘플 코드가 나타난다. 거기서 필요한 프로그래밍 언어를 선택하면

샘플 코드가 나타나니 참고하면 된다. 아래의 '서비스 키'에 본인의 인증키를 입력하여 사용하면 된다.

 

위 샘플 코드의 url에 인증키를 넣고 미리보기를 하면 아래와 같이 내용이 나타난다.

마무리

오늘 간단히 공공데이터 오픈 API 사용법을 알아보았다.

cctv 데이터 말고도 다른 공공데이터들이 많으니 프로젝트시에 참고하면 도움이 많이 될 것 같다.

 

다음에는 네이버 API를 이용하여 크롤링하는 법을 포스팅할 예정이다.

질문은 댓글로 작성 바랍니다 :-)

반응형
반응형
람다(Lambda)란?

원래 파이썬에서는 함수를 만들 때 def를 사용하여 반복되는 작업을 정의된 함수로 처리한다.

이 때 lambda는 파이썬에서 함수를 더 간결하게 표현하기 위해 만들어진 함수이다.

일반함수→ def(매개변수,매개변수):
                    프로그램
                    return 반환값
lambda→ lambda 매개변수: 표현식(return반환값)

예를 들어 두 인수를 더하는 값을 반환값으로 가지는 함수를 각각 만들어 본다고 하자.

#def를 이용하여 두 인수를 더하는 함수 만들기
def add(num1,num2):
    return num1 + num2
add(3,4)

결괏값: 7

#lambda를 이용하여 두 인수를 더하는 함수 만들기
add = lambda num1, num2: num1 + num2
add(2,4)

결괏값: 6

이렇게 lambda는 def를 쓸 때보다 간단하게 함수를 만들 수 있다.

 

map

map은 여러 개의 데이터를 한 번에 return 반환을 할 때 사용하면 편리하다.

때문에 리스트형이나 튜플등의 자료구조에서 사용하기 용이하다.

map을 이용하여 7,8,9에 각각 7을 곱하여 출력하는 lambda를 만들어 보도록 하자.

#map을 이용하여 lambda 만들기
multiple_nums = [7,8,9]

multiple_result = list(map(lambda x: x*7,multiple_nums))
multiple_result

결괏값: [49,56,63]

 

filter

필터는 말 그대로 특정 조건을 가지고  필터를 한 결과를 보여준다.

예제로 list 값(1~30) 중에서 3의 배수만 결과를 보여주는 lambda를 만들어 보자.

#list comprehension을 이용해 1~30을 가지는 list 만들기
list1 = [i+1 for i in range(30)] 

#filter를 사용하여 list1에서 3의 배수만 추출하기
list2 = list(filter(lambda i: i%3 == 0,list1))
list2

결괏값: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

 

reduce

reduce는 계산기의 memory(M) 기능과 같이 함수를 만들어 앞의 결과를 누적한 뒤 결과값을 반환하는 함수이다.

예를 들어 입력된 수를 다 더해주는 add함수를 만든다고 해 보자. def와 lambda를 이용한 2가지 방법을 사용하겠다.

#def로 add만들기
def add(*a):
    total = 0 #더한 결과값을 저장하는 변수
    for i in a:
        total +=i #total = total + i와 같음
    return total
add(1,2,3,4)

결괏값: 10

#reduce로 add 계산하기
from functools import reduce #python3부터는 reduce를 import해야 사용이 가능
a = [1,2,3,4]
add = reduce(lambda x,y: x+y, a)
add

결괏값: 10

위와같이 reduce를 사용하면  for문 생략하여 코딩을 할 수 있다.

 

참고자료

      TIL.28 람다 표현식(lambda) 사용하기

 

예제파일

lambda_example.ipynb
0.00MB


 

마무리

오늘은 lambda를 사용하여 함수를 간결하게 만드는 방법을 배웠다.

추후 코딩시에 유용하게 사용하길 바라며 ...

질문은 언제나 환영입니다. :)

반응형
반응형
List Comprehension이란?

List Comprehension(리스트 컴프리헨션)은

리스트를 한 줄의 코딩으로 빠르게, 효율적으로 만들 수 있는 파이썬 문법이다.

 

예를 들어 1~10까지의 정수를 가지는 리스트를 만들어  보고자 한다.

물론 list = [1,2,3,4,5,6,7,8,9,10] 이렇게 표현을 해도 되지만 더 큰 숫자를 쓸 때를 대비하여 

아래와 같이 표현해 보도록 하겠다.

#배열의 사이즈를 지정하는 변수 생성
arr_num = 10
#변수 arr_num의 갯수만큼 배열을 생성하는 리스트 생성
arr = [0]*arr_num
#생성된 arr 확인
print(arr)

- 중간 결괏값: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

#배열의 사이즈를 지정하는 변수 생성
arr_num = 10
#변수 arr_num의 갯수만큼 배열을 생성하는 리스트 생성
arr = [0]*arr_num
#생성된 arr 확인
print(arr)
print("-------------------------------")
#1~10의 배열을 가지는 arr값으로 변환하기
for i in range(arr_num):
    arr[i] = i+1
arr

- 최종 결괏값: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

이렇게 1~10까지 값을 차례로 가지는 리스트를 만드는 것에도 3줄 이상의 코드가 작성이 된다.

이때 List comprehension을 사용하면 리스트 만드는 줄의 코드를 1줄로 줄일 수 있다.

List comprehension의 기본 규칙: [(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위)]
#배열의 사이즈를 지정하는 변수 arr_num 생성
arr_num = 10

"""
list comprehension을 사용하여
변수 arr_num의 갯수만큼 배열을 생성하는 리스트 생성
"""

arr = [i+1 for i in range(arr_num)]
arr

-결괏값: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

위와 같이 List comprehension을 쓰면

arr = [i+1 for i in range(arr_num)] 이 한 줄의 코드만으로 리스트 생성이 가능하다.

 

조건문을 사용하여 arr 만들기

List comprehension을 사용할 때 조건문(if)을 추가하여 리스트 생성이 가능하다.

예를 들어 1~30의 범위 안에서 홀수의 배열을 가지는 list를 만들어 보자.

조건문 arr : [(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위) if (조건문)]
# 1~30 중에 홀수(2로 나눴을 때 나머지가 1인 수) arr만들기
arr = [i for i in range(1,30) if i % 2 == 1]
arr

-결괏값: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]

 

AND , OR 조건 추가하기

마찬가지로 List Comprehension의 AND, OR 조건을 추가하여 List 생성이 가능하다.

AND 조건: [(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위) if (조건문) if (조건문)]
OR 조건: [(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위) if (조건문) or (조건문)]

예제로 각각 1~30 중 홀수의 배열이고 3의 배수인 배열,

1~30 중 3의 배수 또는 2로 나눴을 때 몫이 3인 배열을 생성해보자.

#AND 조건
arr = [i for i in range(1,30) if i%2 == 1 if i%3 == 0]
print(arr)

#OR 조건
arr = [i for i in range(1,30) if i%3 == 0 or i//2 == 3]
arr

-결괏값: [3, 9, 15, 21, 27]

           [3, 6, 7, 9, 12, 15, 18, 21, 24, 27]

 

다차원 매트릭스 리스트 만들기 

list comprehension으로 리스트 안의 리스트를 만들 수 있다.

예시로 1,2,3의 값을 한 행으로 갖는 2차원의 매트릭스 행렬 (3x3) 리스트를 만들어 보도록 하자.

MATRIX : [[(변수에 적용할 수식) for (컬럼 변수) in (for문이 돌아가는 범위)] for (행 변수) in (for문의 범위)]
#3x3 행렬을 가지는 2차원 리스트 만들기
matrix = [[i+1 for i in range(3)] for n in range(3)]
matrix

-결괏값: [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

 

위의 리스트를 다시 1차원 리스트로 바꿀 수도 있다.

#2차원 행렬(matrix)을 1차원 리스트로 변환하기
row = [r for i in matrix for r in i] #첫번째 for문은 행, 두 번째 for문은 행안의 열을 다룬다.
row

-결괏값: [1, 2, 3, 1, 2, 3, 1, 2, 3]

 

예제파일

List_comprehension_ex.ipynb
0.01MB

 

참고자료

1. list comprehension에 대한 즐거운 이해

2. 파이썬을 활용한 회계프로그래밍-List comprehension

3. 예제로 배우는 파이썬 프로그래밍-Python comprehension


마무리

오늘은 list comprehension에 대해 다루어 보았다.

list 자료구조뿐만이 아니라 dict, tuple 등의 다른 comprehension도 있으니 참고자료를 확인하길 바란다.

이번 list comprehension을 잘 이해하였다면 다음 강좌인 lambda는 수월히 익힐 수 있을 것이다.

반응형
반응형
Class란?

- Class: 인스턴스(객체)를 만들 수 있는 틀

- 인스턴스: Class로 만들어진 객체

 

예를 들어 A라는 학생이 크리스마스가 되어 주변 지인들에게 감사의 마음을 담아 쿠키를 만들어 선물을 준다고 해 봅시다. 한 명에게 단 하나의 트리 모양의 쿠키를 만들어준다면 반죽을 만들고 칼로 대충 모양을 만들어 쿠키를 금방 완성할 수 있을 것입니다. 하지만 A는 20명의 사람들에게 10개씩 쿠키를 나누어 주고 싶어 합니다. 이때, 칼로 일일이 수작업하여 만든다면 오랜 시간이 걸리겠죠? 이때 트리 모양 쿠키 틀을 구입하여 반죽 위에 찍어서 쿠키를 만든다면 칼로 하는 것보다 더 빨리, 많이, 똑같은 모양으로 예쁘게 만들 수 있습니다. 

 

이때 트리 모양 쿠키 틀Class 이며

쿠키 틀로 만든 과자를 인스턴스라고 할 수 있습니다.

 

 

class와 객체 만들기
# 클래스 만들기
class 클래스이름:
      변수 또는 함수 입력

#클래스는 속성(변수)들과 동작(함수)들을 가질 수 있습니다.      

# 객체 만들기
객체명 = 클래스이름()

##클래스에 함수 만들기##
class 클래스 이름:
     def 함수이름(self):  #※클래스 안의 함수의 매개변수는 self가 꼭 필요합니다.
         프로그램

#객체의 함수 호출방법
객체변수명.함수명()

※여기서 잠깐!※

클래스 안의 함수를 만들 때 self를 꼭 넣어주셔야 합니다.

self를 안 적으면 오류가 나서 클래스 작동이 제대로 되지 않기 때문입니다.


class 예제

위의 내용을 이용해서 쿠키의 모양을 알려주는 class를 만들어 볼까요?

cookie라는 이름의 class를 만들어 shape(모양)을 속성으로 가지고 쿠키 틀에 따라 

"저는 shape 모양의 쿠키입니다^0^"를 출력하는 클래스를 만들어봅시다.

#class예제

# 쿠키 클래스 만들기
class cookie:
    shape = " "
    def say(self):
        print("저는 %s 모양의 쿠키입니다^o^"%self.shape)

#쿠키 클래스의 객체 만들기
first_cookie = cookie()

#쿠키 클래스의 shape속성에 접근하여 쿠키모양을 알려주기
first_cookie.shape = "트리"

#쿠키 클래스의 함수 호출하기
first_cookie.say()

- 결괏값 : 저는 트리 모양의 쿠키입니다^o^

 

위와 같이 first_cookie.shape의 내용을 세모, 동그라미 등으로 바꿔주고

first_cookie.say() 함수를 호출하면 "저는 세모/동그라미 모양의 쿠키입니다^o^"의 결괏값을 얻을 수 있습니다.

 

상속

class는 상속이 가능합니다.

자식 class가 부모 class의 변수, 함수 등을 물려받아 자식 class에서 부모 class의 변수를 바꾸거나 함수를 호출하여 사용할 수 있습니다.

 

예제로 부모 class인 도우dough(반죽) class를 만들고 부모 클래스 안에 반죽의 재료가 되는 변수(madeof)를 생성합니다. 그다음 child(자식)클래스를 만들어 부모 클래스를 상속받아

저는 ~로 만든 반죽입니다. (부모 class 함수호출)

저는 ~로 만든 쿠키입니다. (부모 class의 변수 호출)

위와 같은 문장을 출력하는  class를 만들어 실행해보도록 하겠습니다.

 

# dough 클래스를 상속받아 child 클래스를 만듭니다.
class child(dough):
    def hello(self):
        print("저는 %s로 만든 쿠키 입니다."%self.madeof)
        
# child(상속) class 선언
wheat = child()
#속성 설정
wheat.madeof = "밀가루" #부모 class 인 dough 클래스 속성
#부모 class인 dough의 함수 실행
wheat.intro() 
#자식 class인 child의 함수 실행
wheat.hello()

- 결괏값 : 저는 밀가루 반죽 입니다.

             저는 밀가루로 만든 쿠키 입니다.

 

첨부파일

 

위에 나온 모든 class 관련 예제는 아래의 주피터노트북(ipynb) 파일을 다운받아 실행할 수 있습니다.

Class_example.ipynb
0.00MB

 

참고자료

class에 대해 더 알고 싶은 것이 있으면

'점프 투 파이썬- 클래스'를 참고하시길 바랍니다.


마무리

오늘 Class에 대해 알아보았는데요

앞으로 python 함수를 사용할 때 class를 이용하여 더욱더 효율적으로 코딩하시길 바랍니다.

질문 댓글로 주저 말고 달아주세요! 언제나 환영입니다 :-D

 

 

반응형
반응형

¡BIENVENIDOS A WONA_IN_IT!

기술 블로그를 위한 공간을 Tistory에 새로 마련했습니다.

잘 부탁드립니다 :)

주로 python 관련 내용이 업로드 될 예정입니다. 

궁금한 점이 있으면 언제든 댓글로 달아주세요.

꾸준히 확인하며 소통하도록 하겠습니다. 

Blogspot

https://wonhwa1.blogspot.com/

 

WONA

 

wonhwa1.blogspot.com

일상블로그가 궁금하다면? 

WONA_IN_WONDERLAND를 방문해주세요.

이곳은 일상, 추억을 기록하는 공간입니다.

모두들 환영합니다 ;-)

 

반응형

+ Recent posts