DataScience 와 DataEngineering 의 공통점과 차이점에 대해 알아보았는데, 아직은 현업에서 각 분야가 하고 있는 일이 어떻게 다른지 확실한 감이 오지 않는 것 같다. 내가 명확히 재밌어하는 것은 아직까지는 어떤 디테일한 분야가 아니라, 수학적인 것, 프로그래밍 적인 것들을 배운 것을 적용해보고 응용하는 것에 흥미를 느끼는 것 같은데 이보다 더 앞서 생각해보고 결정하려고 하니 감이 잘 오지 않는 것 같다.
지금 현재로서는, 다양한 기계학습 알고리즘과 머신러닝 등을 이용하여 prediction 등을 통해 새로운 Insight 를 얻어내는 것에 관심이 있는 것 같다. 이 분야를 공부하고 배워 나가면서 엔지니어링 분야를 필요에 의해 점차 공부해 나가는 방향으로 삼고 싶다.
Posted Updated wiki / Pillow3 minutes read (About 439 words)
Pillow 는 Python에서 이미지를 핸들링 하기위한 라이브러리이다. 스크린 샷, 이미지 크롭, 썸네일 등을 만들 수 있다.
또한, 다양한 이미지 확장자를 다룰수 있다. (예, jpg, png)
Pillow install
1
pip install Pillow
1. Import Convention
Pillow 를 사용하기에 앞서, Import 해야한다.
1
from PIL import Image
2. Pillow 메소드
(1) open()
이름 그대로, 경로와 파일 이름을 적어주면, 해당 이미지리턴하여 Variable 에 할당한다.
1
image = Image.open("imagefile_name")
(2) crop()
이름 그대로, image 를 잘라준다. 이 때 Parameter 는 box형태로 들어가게 된다.
box 는 (left, upper, right, lower) 로 들어가게 된든데, pixel 단위로 들어가면 된다
이미지의 가장 왼쪽과 위쪽 라인을 기준으로,
left px 만큼
upper px 만큼
(왼쪽을 기준으로) right px 만큼
(위쪽을 기준으로) bottom px 만큼
잘라, box 로 만들어 준다.
1 2 3
box = (10, 10, 110, 110) image.crop(box) ### 이렇게 되면 가로세로 100px 만큼의 이미지가 만들어진다.
(3) thumbnail()
썸네일을 만들어준다.
썸네일의 활용 방안은 한 가지 사진을 어플리케이션 곳곳에서 사용한다고 할 때, 데이터 사이즈가 큰 원본 사진을 계속 해서 들고 다니며 사용하면 어플리케이션에 따라 메모리 낭비, 서버용량 낭비, 트래픽 낭비 등으로 이어질 수 있다. 따라서, 이미지의 데이터 크기와 해상도를 낮춰 사용할 수 있다.
1 2
image.thumbnail((pixel, pixel)) #thumbnail 메소드를 사용하여, 원하는 pixel 수로 줄일 수 있다.
Requests 패키지는 크롤링 하고자 하는 페이지를 url 값을 통해 가져와 객체로 변환 해주는 기능을 가지고 있다.
1. Installation
Requests 를 이용하기 위해 package 를 설치해준다.
1
$ pip3 install requests
request를 이용하면서, json 형식으로의 크롤링과, html 형식으로 css selecting 을 위한 크롤링을 실습해 볼 것이므로, BeautifulSoup Package 역시 같이 설치해준다. (BeautifulSoup은 html parser 를 이용해보기 위함이다.)
python-forecastio 는 dark sky 의 api를 활용해 날씨 데이터를 받아올때 사용해보기 위해 설치한다.
.find_elements_ by_css_selector 는 다르다.element 는 하나의 selector 만 선택하는 반면, elements 는 여러가지 element 를 셀렉팅 해서, 리스트 형식으로 Return 한다.
따라서 이렇게 리스트 형식으로 Return 이 된 경우, List[0] 등과 같이 그 엘리먼트를 뒤에 지정해줘야된다. 즉,
1 2 3 4
driver.find_element_by_css_selector(nameof cssselector) #위는 바로 selecting 이 된것이지만, driver.find_elements_by_css_selector(nameof cssselector)[0] #위는 뒤에 selecting 위해 list 의 요소를 선택 해주어야한다.
4. 버튼 클릭하기
1 2
# 위의 방법처럼, element 를 선택해준다. driver.find_element_by_css_selector("name of css selector").click()
5. id, class, 그 외의 attribute 값을 selecting 하는 법
1 2 3 4
driver.find_element_by_css_selector("name of css selector.").click() # id 의 경우 : #idname # class 의 경우 : .classname # 다른 attribute 의 경우 : [attribute = 'value']
6. selecting 한 element 의 attribute value 를 얻는 방법
CSS로 선택한 element에 html 태그에는 다양한 attribute 들이 있을 수 있다. 이 중 attribute의 value에 접근 하고 싶을 때는 .get_attribute()메소드를 사용할 수 있다.
1
driver.find_element_by_css_selector("name of css selector").get_attribute("attribute_name")
7. element 의 위치와, 사이즈 구하기
스크롤을 내리거나, 엘리먼트의 위치와 크기를 알고 싶을 때 사용할 수 있다.
1 2 3 4 5
element = driver.find_element_by_css_selector("name of css selector") element.location #element 의 좌측 상단의 위치가 pixel 단위로 x, y 값의 dictionary로 보여준다. element.size #element 의 size 를 height, width를 pixel 단위로 dictionary로 보여준다.
Documentation 과 각종 개념 자료들을 혼자 보고 공부하면서, 파이썬이라는 언어가 단순히 책 한권 끝냈다고 해서 끝나는 언어가 아님을 깨달았다. 기본적인 문법을 금방 익숙해져서, ‘역시 쉬운 언어인가’라고 생각했다가 오늘 다양한 자료를 찾아보고 읽어보면서 언어 하나만해도 아직 공부할게 무궁무진 하다는 것을 깨달았다.
<스터디> 멀티 스레딩에 관해 이야기, 공부해볼 정보들 공유, 어떻게 코드를 구성할 것인지 의견을 나누었다.
Queue 개념 정리 및 코드 구현 연습
베르누이 분포, 이항분포 정리 및 Searching
블로그 수정
내일 할 일은 무엇인가
오후 4시 멀티 스레드 관련한 내용으로 온라인 스터디 모임 예정
멀티스레딩 개념을 활용한 네이버 크롤링 코드 짜기
각종 확률 분포 및 검정 부분까지 복습
무엇을 느꼈는가
오늘 공부한 testing 시작부분부터는 그간 배웠던 것을 한꺼번에 적용한다. 배웠던 여러가지 분포를 활용하여, 가설을 세우고 이 가설이 선택한 분포의 관점에서 봤을 떄, 가설을 선택할지 기각할지에 관한 내용은 점차 data를 통해 prediction 을 해가는 과정에 있는 듯한 느낌을 받았다.
아직 검정 과정과 앞으로 공부하게 될 여러가지 분석 모델을 이해하기에 앞서배운 확률분포 부분의 내용이 부족한듯하여, 계속 꾸준히 앞부분을 공부해야될 것 같다.