티스토리 뷰
파이썬 기반 공공데이터 API 분석모델 구축
1. 빅데이터 플랫폼 구축
Written By 박정관 / Superscalar Hama
2021-05-01
- 개발환경 설정
- 빅데이터 플랫폼 개발환경 구축 아나콘다
- 개발 툴 파이참(커뮤니티) 버전
- 깃배쉬 레포지토리 설정하기
- 파이썬 기본 문법
- 자료형
- 변수
- 연산자
- 입출력
- 파이썬 알고리즘
- 파이썬 프로그램 구조
- 함수형 프로그래밍과 객체지향 프로그래밍
- 객체지향 프로그래밍(OOP)
- 함수형 프로그래밍
- 파이썬에서 함수형 프로그래밍 적용
- 파이썬에서 객체지향 프로그래밍 적용
- 파이썬에서 모듈 적용
- 파이썬에서 패키지 적용
- 파이썬의 데코레이터는 함수형 2가지, class형 2가지 총 4가지 방식을 통해 작성한다
개발 환경 설정
빅데이터 플랫폼 개발환경 구축 아나콘다
아나콘다 닷컴에 접속한다.
다운로드 버튼을 클릭한다. 설치과정에서 개인PC라면 All Users로 변경을 권장한다. 다음 화면은 아나콘다3의 설치 폴더가 보인다. 해당 폴더 경로(이하 콘다 경로)를 기억해 둔다. 다음은 설치 확인의 과정이다. 윈도우 + r 키를 눌러서 열기 입력창에 sysdm.cpl ,3을 입력한다. 3 앞에 스페이스 한 번 콤마가 있다는 것에 주의한다. 환경변수 버튼을 클릭한다. 시스템 변수에서 새로 만들기 이후 변수 이름과 변수 값을 생성한다.
변수이름 ANACONDA_HOME1과 변수 값 C:\Users\<개인계정>\anaconda3 (콘다 경로)를 입력한다
변수이름 ANACONDA_HOME2과 변수 값 C:\Users\<개인계정>\anaconda3\Scripts 를 입력한다
변수이름 ANACONDA_HOME3과 변수 값 C:\Users\<개인계정>\anaconda3\Library\bin 를 입력한다
변수이름 ANACONDA_HOME4과 변수 값 C:\Users\pakjk\anaconda3\Library\mingw-w64\bin 를 입력한다
시스템 변수에서 Path를 편집 버튼 클릭 해서 %ANACONDA_HOME1%와 같은 형태로 4개의 변수를 모두 등록한다.
cmd 창을 열어 conda —version을 입력해서 버전 출력이 되면 설치 성공이다.
개발 툴 파이참(커뮤니티) 버전
젯브레인닷컴에 접속한다.
파이참을 다운받아 설치한다. 원하는 프로젝트 폴더 생성 후 우클릭해서 파이참으로 열기를 선택해서 프로젝트을 오픈한다.
상단메뉴에서 File > Settings 를 선택한다.
프로젝트의 파이썬 인터프리터를 선택해서 우측화면에서 톱니바퀴버튼을 클릭해서 Add 를 선택한다.
좌측메뉴에서 콘다환경으로 전환하고 ok 버튼을 클릭한다. main.py를 우클릭해서 Run main을 실행한다. Hi, PyCharm 이 콘솔이 출력된다.
깃배쉬 레포지토리 설정하기
깃배쉬 다운로드로 검색해서 접속한다.
다운로드 버튼을 클릭한다, 다운받은 파일을 설치한다.
깃허브 닷컴에 접속한다.
계정을 생성한다. New 버튼을 클릭한 후 레포지토리 이름을 입력한다. Create-Repository 버튼을 클릭한다.
프로젝트 폴더 내에서 우클릭해서 Git Bash Here를 선택한다.
git config --global user.name "<YOUR ID>“ git config --global user.email <EMAIL> git init git add . git commit -m "first commit" git remote add origin <GIT 주소> git push -u origin master |
파이썬 기본 문법
자료형 (Data Type)
스칼라 개념
숫자: int, float, complex
문자: str
벡터 개념
리스트
튜플
세트
딕셔너리
변수 (variable)
변수는 자료형의 값을 저장하는 공간이다.
연산자 (Operator)
a = 14 b = 5
# 산술 연산자 sum = a + b sub = a - b multiply = a * b divide = a / b divide2 = int(a // b) remainder = a % b power = 2 ** 10
print('덧셈 : %d' % (sum)) print('뺄셈 : %d' % (sub)) print('곱셈 : %d' % (multiply)) print('나눗셈 : %f' % (divide)) print('나눗셈 : %f' % (divide2)) print('나머지 : %d' % (remainder)) print('제곱 : %d' % (power))
# 양의 정수는 우측 정렬 # 정수는 확보할 자리수 print('제곱2: [%3d]' % (power)) print('제곱3: [%6d]' % (power)) print('제곱4: [%-6d]' % (power))
su = 12.3456789 print('서식1 : [%f]' % (su)) print('서식2 : [%.2f]' % (su)) print('서식3 : [%6.2f]' % (su)) print('서식4 : [%-6.2f]' % (su))
|
입출력(I/O)
# 학생의 이름과 국어, 영어, 수학 점수를 입력 받으세요. # 김철수, 50, 60, 80 # 총점은 소수점 2자리로, 평균은 소수점 3자리로 출력하세요.
# 출력 결과 # 이름 : 김철수 # 국어 : 50점 # 영어 : 60점 # 수학 : 80점 # 총점 : 190.00 # 평균 : 63.333
name = input('이름을 입력하세요') kor = int(input('국어 점수를 입력하세요')) eng = int(input('영어 점수를 입력하세요')) math = int(input('수학 점수를 입력하세요')) total = kor + eng + math avg = total/3
print('이름 : %s' % (name)) print('국어 : %d점' % (kor)) print('영어 : %d점' % (eng)) print('수학 : %d점' % (math)) print('총점 : %.2f점' % (total)) print('평균 : %.3f점' % (avg)) |
su = 3 fruit = '사과'
# 인덱스 기반 매개변수 대입 print('positional argument') str1 = '나는 {}를 {}개 먹었습니다.' print(str1.format(fruit, su))
# 이 방법 추천 str2 = '나는 {0}를 {1}개 먹었습니다.' print(str2.format(fruit, su))
str3 = '나는 {1}를 {0}개 먹었습니다' print(str3.format(su, fruit))
print('keyword argument') str4 = '나는 {abc}를 {defg}개 먹었습니다.' print(str4.format(defg=su, abc=fruit))
# 2가지 혼합 방식 str5 = '나는 {abc}를 {}개 먹었습니다.' print(str5.format(su, abc=fruit))
# # 이렇게 하면 안된다. positional argument가 앞에 오고 키워드 인자는 뒤에 와야 함 # str6 = '나는 {abc}를 {}개 먹었습니다.' # print(str6.format(abc=fruit, su))
name = '김철수' fruit = '사과' su1 = 8
# 서식 지정자 %s(string), %d(decimal) # %f(float): 기본 값으로 소수점 6자리까지 표시 # %c(문자 1개), %o(8진수), %x(16진수) # %% : %문자를 표현할 때 사용 myformat = '%s가 %s를 %d개 먹었습니다.' print(myformat % (name, fruit, su1))
su1 = 4 su2 = 9 # 4 곱하기 9는 36입니다.
myformat2 = '%d 곱하기 %d는 %d입니다.' print(myformat2 % (su1, su2, su1*su2))
# pow(a, b) : a의 b 제곱 print(pow(5, 2))
# 2.0의 10.0승은 1024.0입니다. su3 = 2.0 su4 = 10.0 myformat3 = '%f의 %f승은 %f입니다.' print(myformat3 % (su3, su4, pow(su3,su4)))
rate = 0.4567 print('비율 : %.3f%%' % (100*rate)) |
파이썬 알고리즘 (Python Algorithm)
if 문
조건문 뒤에는 반드시 콜론(:)이 붙는다
조건부 표현식
message = “success” if score >= 60 else “failure”
while 문
for 문
List Comprehension
a = [1,2,3,4]
result = [ i * 3 for i in a if i % 2 == 0 ]
print(result)
[6, 12]
파이썬 프로그램 구조
함수형 프로그래밍과 객체지향 프로그래밍
프로그래밍은 두가지의 범주로 구성된다.
선언형방식에는 함수형과 논리형이 있으며, 대표적인 함수형 프로그래밍 언어에는 자바스크립트가 있다.
명령형방식에는 절차형과 객체지향이 있으며, 대표적인 객체지향 프로그래밍 언어에는 C++, 자바등이 있다.
파이썬은 함수형 프로그래밍 언어와 객체지향 프로그래밍 언어 두가지의 특징을 공유한다.
객체지향 프로그래밍(OOP)
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
구성요소는 다음과 같다.
클래스(Class) - 스키마 구조에 맞춰 속성(attribute)과 행위(behavior)를 정의한 것으로 사용자 정의 데이터형(user defined data type) 이다. 디스크에 저장된다.
객체(Object) - 클래스의 구조를 실제 메모리상에 할당해서 생성된 주소공간이 인스턴스이다.
메서드(Method) - 객체를 사용하는 방법으로서 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용된다.
메시지(Message) - 객체 간의 통신은 메시지를 통해 이루어진다. 서로 다른 메소드사이에 매개변수의 형태로 전달된다.
함수형 프로그래밍(functional programming)
자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다. 프로그래밍이 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다.
구성요소는 다음과 같다
함수 (function) - 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분을 의미한다. 하나의 큰 프로그램을 여러 부분으로 나누어주기 때문에 같은 함수를 여러 상황에서 여러 차례 호출할 수 있으며 일부분을 수정하기 쉽다는 장점을 가진다.
파이썬에서 함수형 프로그래밍 적용
메인 함수는 진입점(엔트리 포인트)이다. 최초 실행함수이다.
def main(): print('Hello Python') if __name__ == "__main__": main() |
파이썬에서 객체지향 프로그래밍 적용
클래스 선언
class MyClass: pass
# Member m = new Member() 자바방식 a = MyClass() # 파이썬 b = MyClass() print(a) print(b) |
파이썬에서 모듈 적용
모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이다. - 점프 투 파이썬
__name__ 변수란?
__name__이라는 내장변수는 현재 모듈의 이름을 담고있는 내장 변수이다. 이 변수는 직접 실행된 모듈의 경우 __main__이라는 값을 가지게 되며, 직접 실행되지 않은 import된 모듈은 모듈의 이름(파일명)을 가지게 된다 – 점프 투 파이썬
파이썬에서 패키지 적용
파이썬 패키지는 디렉터리와 파이썬 모듈로 구성이다.
파이썬의 데코레이터는 함수형 2가지, class형 2가지 총 4가지 방식을 통해 작성한다.
1. 함수형 decorator(데코레이터에 인수 전달이 없는 경우 X)
1) main 함수 제작(Decorator함수에 끌려갈 함수)
2) Decorator 함수에 전달받을 함수 받기 & Decorator 함수 안에 main 함수를 매개변수로 갖는 함수 제작(wrapper라고 주로 부름)
3) wrapper에서 전달받은 main 함수를 호출 or return(사용자 마음대로)
4) Decorator함수(wrapper 함수와 같은 위치)에서 wrapper를 return
2. 함수형 decorator(데코레이터에 인수 전달이 있는 경우 O)
1) main 함수 제작(Decorator함수를 먼저 작성해도 상관 없음.)
2) Decorator 함수 제작 인수 전달이 있는 경우엔 main 함수가 아니라 decorator의 매개변수를 먼저 불러옴.(decortator의 변수 지정)
3) decorator 안에 진짜 데코레이터(1.의 구조와같음) 구현 real_deco에서 main함수를 매개변수로 전달받는다.
4) real_deco의 안에 wrapper 생성(wrapper에서 function(main)의 매개변수를 받음.
5) real_deco에서 wrapper를 반환하고 가장 바깥의 main_deco에서 real_deco를 리턴한다.
3. Class 형 decorator(데코레이터에 인수가 없는 경우 X)
1) __init__메서드에 main함수(호출할 함수) 저장, self.function = function
2) __call__(인스턴스를 함수 호출처럼 사용가능하게 만들어줌.)메서드에 호출할 함수의 매개변수를 넘긴다.
3) 메인함수에 매개변수를 넣어서 호출하는 형태로 return
4. Class 형 decorator(데코레이터에 인수가 있는 경우 O)
1) __init__메서드에 decorator의 인수 저장
2) __call__ 메서드에 호출할 함수를 전달한다.
3) 메인함수에 매개변수를 넣어서 호출하는 형태로 return
4) __call__메서드에 wrapper 함수 생성 후 wrapper에 매개변수 전달
5) wrapper 함수에서 전달받은 함수 return
6) __call__ 메서드의 리턴을 return wrapper(매개변수)과 같은 형식으로 한다.
'5. 파이썬' 카테고리의 다른 글
(마드리드) 파이썬> Flask requirements.txt (0) | 2021.07.30 |
---|---|
데이터 수집 프로그램 (0) | 2021.05.07 |
파이썬/--/하이파/ 플라스크, 리액트 기반 주가예측 API stock.py (0) | 2020.12.01 |
파이썬/머신러닝/2020-10-29/ 주식거래 AI 추천서비스 (0) | 2020.10.29 |
파이썬/--/마드리드/ 삼성전자 보고서 워드클라우드 WordCloud samsung_report.py (0) | 2020.10.29 |
- Total
- Today
- Yesterday
- Java
- Mlearn
- SQLAlchemy
- JPA
- tensorflow
- Git
- React
- Django
- nodejs
- Eclipse
- SpringBoot
- ERD
- docker
- mariadb
- FLASK
- Oracle
- KAFKA
- Algorithm
- database
- COLAB
- Python
- AWS
- maven
- springMVC
- vscode
- terms
- JUnit
- intellij
- Mongo
- jQuery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |