브로트캐스팅에 대해 알아보겠습니다. 일반적으로 ndarray는 배열이 행렬으로 되어있습니다. 보통 행렬은 같은 모양끼리 연산을 할 수 있습니다. ndarray도 행렬로 이루어져 있으므로 배열이 같은 형식끼리 연산을 하게 되는게 일반적입니다. 하지만 예외적으로 numpy에서는 배열 모양이 달라도 연산을 할 수 있습니다. 이런 예외적인 계산방식을 Broadcasting(브로드캐스팅)이라고 합니다. 그림과 같은 방식의 계산이 일어납니다. numpy 안에 내장되어 있는 브로드캐스팅 기능으로 편리하게 계산을 할 수 있습니다. 주의할 점은 브로드캐스팅이 되려면 그림과 같이 뒷차원의 배열과 같아야 합니다. import numpy as np a = np.arange(15).reshape(3,5) b = np.arang..
axis(축)에 대해 이야기해볼까 합니다.축의 원리는 다 비슷하기 때문에 한번 알아두면 벡터형식의 배열을 다루는데 큰 도움이 됩니다.함수를 그릴려면 2차원은 x,y축을 그렸었고 3차원은 x,y,z축을 그립니다. 위 그림처럼 그렸었는데 numpy에서는 x축을 axis=0, y축을 axis=1,z축을 axis=2로 여깁니다.그렇지만 ndarray는 그림처럼 축으로 나눠지는 그래프가 아니고,벡터와 행렬형식의 배열이기 때문에 축을 어떻게 여기는가가 관건입니다.ndarray에서는 x축이 row 기준,y축은 column기준,z해 이야기해볼까 합니다. 축의 원리는 다 비슷하기 때문에 한번 알아두면 벡터형식의 배열을 다루는데 큰 도움이 됩니다.함수 그래프에서는 axis의 번호를 붙이지 않았지만 numpy에서는 x축을..
ndarray를 가지고 연산과 통계를 이끌어내봅시다. Jupyter에서 numpy를 np로 바꾸고 시작하겠습니다. 먼저 np. 하고 tap을 누르면 아래와 같은 조그마한 창이 뜹니다. 이게 np로 할 수 있는 함수들을 나열해놓은 창입니다. 스크롤을 내려보면 정말 많은 함수가 내장되어 있는지 느낄 수 있을겁니다. 이 많은 함수를 다 일일히 배울수는 없습니다. 혹시 자신이 써야 하는 함수에 대해서 알고 싶다면 Jupyter에서 해당 함수에 커서를 놓은후 shift+tap을 누르면 자세한 설명이 나와있으니 그걸 참고하시면 좋을 것 같습니다. shift +tap 을 누르면 위와 같은 창이 뜹니다. 이번 포스팅에서는 ndarray의 연산과 통계, 집계를 할 때에 쓰는 함수들을 소개할까 합니다. 함수가 굉장히 많지..
ndarray의 형태 바꾸는 방식을 설명하겠습니다. reshapereshape로 바꾸는 방법입니다. 원하는 모든 모양으로 바꿀 수 있습니다. 당연한 거지만 꼭 주의해야 할 것은 ndarray가 가지고 있는 숫자와 맞아야 합니다. 예를 들어, np.arange(16)로 하면 가능한 모양은 (3,5),(5,3),(15,1),(1,15) 만 가능합니다. 다른 모양을 하라고 명령하면 숫자가 맞지 않는다는 오류가 뜹니다. import numpy as npx = np.arange(15)print(x)x.reshape(3,5)x는 15개의 원소로 이루어진 모양이(15,)인 ndarray였는데 (3,5)로 바꾼 것을 볼수 있습니다. flattenflatten은 모든 배열을 다 1차원 배열로 만들어줍니다. 즉, 일렬..
주어진 ndarray 인덱스는 어떻게 이루어져 있고 슬라이싱은 어떻게 하는지 소개하겠습니다. 결론적으로 말하면 파이썬의 리스트를 다루었던 방법과 동일합니다. 다른 점이 있다면 리스트에서는 1차원의 경우만 다뤘지만 ndarray는 2차원이상도 인덱싱, 슬라이싱을 다루어야 하는게 다릅니다. 하지만 파이썬의 리스트에서 다루었던 인덱싱, 슬라이싱과 다름없이 다룰 수 있습니다. import numpy as np 항상 numpy를 쓰려면 import를 먼저 해야겠죠. 1차원 인덱싱, 슬라이싱 x = np.arange(10) print(x) 간단하게 0부터 9까지의 나열을 보겠습니다. 여기서 3을 가져오고 싶습니다. 그럼 3의 인덱스를 알아야합니다. 3의 인덱스는 무엇일까요? 파이썬의 리스트에서처럼 3이 됩니다. 다..
numpy의 random모듈을 이용해 랜덤한 값들을 생성하는 방법에 대해 알아보겠습니다. 먼저 numpy를 np로 바꿔서 쓰겠습니다. import numpy as np rand 함수 np.random.rand(2,3) rand 함수는 0,1 사이에서 랜덤하게 숫자를 가져와 ndarray를 만듭니다. rand가로 안에는 형태를 써주면 ndarray가 생성됩니다. randn 함수 np.random.randn(2,3) randn 함수는 정규분포로 샘플링된 된 ndarray를 생성합니다. 그래서 -1에서 1 사이의 값들이 랜덤하게 나오면서 생성합니다. randint 함수 np.random.randint(1,100,size=(1,5)) randint에 커서를 놓고 shift+tap을 누르면 다음과 같이 어떤 파라..
ndarray를 생성하는 다양한 방법을 소개하겠습니다. 생성에 앞서 numpy를 불러오겠습니다. import numpy as np import를 하면 모듈을 불러올 수 있습니다. numpy가 잘 설치가 되었다면 아마 오류없이 불러올 수 있을 겁니다. 앞으로 numpy를 np로 변경해서 쓰겠습니다. np.array 함수로 생성 x = np.array([1,2,3,4]) y = np.array([[2,3,4],[1,2,3])) print(x) print(y) ndarray는 np.array로 생성할 수 있는데 수학시간에 배운 행렬과 동일하게 생성됩니다. np.array 안에 대가로로 행렬을 표시합니다. 2차원이상일 경우에도 대가로 안에 두개의 리스트를 넣어서 생성할 수 있습니다. np.arange 함수로 생..
Numpy파이썬이 잘 쓰이지 않은 큰 이유가 바로 계산속도입니다. 계산속도가 느리면 데이터 처리를 하거나 코드 명령이행을 하면 결과를 도출하는데 시간이 많이 걸리게 됩니다. 당연히 다른 언어를 쓰는게 훨씬 효율적입니다. 파이썬의 계산속도 문제를 해결하기 위해서 Numpy라는 모듈을 씁니다. Numpy는 수치 배열 데이터를 다루기 위해 사용하는데 보통 파이썬의 리스트와 비슷하게 생겼고 효율적인 계산과 다양한 선형수학을 다룰 수 있습니다. 또한 numpy로 인해 계산속도를 개선해서 파이썬만의 직관적이고 간단한 언어를 가지고 데이터 처리를 할 수 있다는 큰 장점이 생기게 되었습니다. Numpy 장점1. 파이썬 리스트보다 계산 속도가 빠름.2. 파이썬 리스트보다 적은 메모리 사용.3. 선형대수,통계관련 함수가 ..
https://news.v.daum.net/v/20200506153410306 외신 "삼성 갤럭시Z플립 3월 23만대 판매..전달보다 56.1% 증가" (서울=연합뉴스) 이한승 기자 = 삼성전자의 폴더블폰 갤럭시 Z플립의 3월 판매량이 전달보다 50% 이상 증가한 것으로 나타났다. 샘모바일 등 미국 IT전문매체는 5일(현지시각) 삼성 갤럭시 Z플립이 news.v.daum.net 다음 뉴스를 가지고 크롤링을 해보겠습니다. 뉴스 제목 크롤링 뉴스 제목을 크롤링하는 방식은 다음과 같습니다. requests 모듈로 기사의 링크를 가져옵니다. BeautifulSoup으로 Html을 파싱해옵니다. 뉴스 제목에 해당하는 tag를 파싱한 곳에서 찾습니다. 찾은 tag에서 get_text()를 이용해 text를 가져옵니..
가끔 옆에 autosavefailed 가 뜨고 저장버튼을 누르면 아래와 같이 나올 때가 있습니다. 이럴 때는 파일이 잘못됐거나 jupyter 버전이 너무 낮아서 생길 수 있어요~! 오류가 발생했다면 일단 prompt에서 다음 코드를 쳐서 update를 해줍시다. conda update jupyter 그래도 안 되면 다른 파일은 저장이 되는지 확인해봅니다. 저장을 누르면 보면 Last Checkpoint 가 나와야 하는 게 정상입니다. 그런데 어느 파일은 나오고 어느 파일은 안 나온다면 오류가 뜨는 해당 ipyb파일손상으로 오류가 발생할 가능성 큽니다. mac에서 windows로 옮길때 파일 손상이 일어날 수도 있고(파일 이름이 한글인 경우 한글이 깨져서 전송됨) 컴퓨터를 하다가 잘못 덮어씌어진 경우도 있..
BeautifulSoup의 간단한 메소드 소개를 할까합니다. 웹크롤링을 하게 되면 개발자모드에서 데이터를 가져옵니다. 개발자모드를 보면 알겠지만 데이터는 보통 html로 되어있습니다. 그걸 다 가져올수는 없고 제가 필요한 부분만 가져와야 합니다. 더구나 데이터가 많거나 웹사이트가 무거운 경우는 일일히 찾아서 복사해서 붙여넣을수도 없습니다. 그런 불편함을 BeautifulSoup으로 해결할 수 있습니다. BeautifulSoup으로 html에서 필요한 부분을 가져올 수 있습니다. html = ''' 그림책 Tap 그림책이란? 그림책은 그림으로 설명하는 책을 말합니다 ''' html 하나를 만들고 한 번 다뤄보겠습니다. Find 함수 from bs4 import BeautifulSoup soup = Beau..
크롤링을 하는데 꼭 필요한 모듈이 requests 모듈입니다. 웹사이트를 내 공간으로 불러들여야 코딩작업을 할 수 있는데 requests로 불러올 수 있습니다. 웹크롤링의 시작이고 반드시 해야 하는 작업중에 하나입니다. HTTP 전달 방식 http는 크게 get 방식과 post 방식으로 나뉩니다. 간단하게 구분을 하자면 get 방식은 링크를 보면 www.naver.com/~~~ 로 뒤에 무언가가 붙어서 주소로써 나오는 것들을 말하고 post 방식은 주소로 보이지 않고 창에 나오는 것들을 말합니다. 아이디나 비밀번호도 주소에 나온다면 큰 문제기 때문에 방식을 바꿔서 전송을 합니다. Get 방식 크롤링 get 방식은 url만 알아내면 금방 가져올 수 있습니다. 아무 기사를 크롤링 해봅시다. https://n..
정규표현식에 대해 설명하겠습니다. 정규표현식은 특정한 패턴과 일치하는 문자열을 검색하거나 치환하거나 제거하는 기능을 가지고 있습니다. 이메일 형식 판별이나 전화번호 판별, 자신이 원하는 문자열 판별 등을 할 수 있습니다. 그래서 정규표현식을 이용해 스팸메일 걸러내거나 문서를 걸러내는 업무 자동화등을 할 수 있습니다. 참고로 re 모듈을 import 하고 시작할 수 있습니다. 이번 포스팅에서는 정규표현식의 기초적인 문법만 설명하겠습니다. 기본 패턴 정규식을 사용하려면 메타 문자를 알고 있어야 패턴을 생성해서 원하는 검색을 할 수 있습니다. 메타 문자 설명 * 0회 이상 반복 허용 + 1회 이상 반복 허용 ? 0회나 1회 반복 허용 {m} m회 반복 허용 {m,n} m회부터 n회까지 반복 허용 . 줄바꿈 문..
웹크롤링? 파이썬을 통해서 데이터 처리를 하려고 하지만 데이터가 없으면 무용지물입니다. 데이터를 받아오는 방법은 많지만 그 중에서도 웹사이트내에 있는 데이터나 정보를 가져오는 방법을 소개하려고 합니다. 웹크롤링이라고 하는데요. 크롤링을 스파이더링이라고 부르기도 하는데 웹페이지에서 정보를 추출하기 위한 작업을 의미합니다. 웹사이트의 내용을 수집하므로 웹크롤링으로 불리기도 합니다. 크롤링으로 데이터를 수집하는 프로그램을 크롤러(crawler)라고 합니다. 스파이더(spider) 또는 봇(bot)이라고도 부릅니다. 알면 좋은 지식 크롤링을 하려면 html의 기본문법정도는 알면 좋습니다. 어떤 태그에서 어떤 역할을 하는지 안다면 빠르게 검색을 할 수 있어서 여러모로 도움이 됩니다. 기초지식은 제가 html에서 ..
예외처리에 대해 알아봅시다. 프로그램을 실행하다 보면 의도치 않게 오류가 발생하는 경우가 많이 생깁니다. 오류가 나서 프로그램이 중단될 수도 있고 있는 파일이 없어져서 처리가 안될 수도 있습니다. 오류가 나면 프로그램이 중단되기 때문에 어떤 오류가 났는지 확인하거나 프로그램상 없어도 되거나 예외적인 상황이 발생했을 때 패스를 하는 방식으로 처리를 해줘야만 프로그램을 원활하게 실행할 수 있습니다. 이런 처리를 예외처리라고 합니다. 파이썬에서는 try;except 명령으로 할 수 있습니다. stock = ['삼성전자', '엘지전자', 'SK텔레콤'] stock.index("삼성") 리스트에서 찾고자 하는 이름이 없다면 위 같은 오류가 발생합니다. 그럼 코드 진행이 안 되겠죠? 이럴 때 try;except를 ..