본문 바로가기

전체 글122

[네이버쇼핑] 전동킥보드DB 만들기 (크롤링, 텍스트 마이닝) 무분별한 크롤링, 과도한 작동은 삼갑시다. 네이버 스마트 스토어 운영하시는 분이 전동 킥보드 관련 물품을 다루시는데 문의 전화가 올 때마다 그때그때 문의 들어오는 것에 대한 정보를 찾아볼 수 있는 데이터베이스가 있으면 좋을 거 같다 하셔서, 재능기부 및 공부 겸 크롤링과 텍스트 마이닝을 활용하여 간단하게 킥보드 제품명을 검색하면 전압, 충전규격 등을 알 수 있는 DB를 만들어 보았다. 데이터는 네이버 상위 랭크 10페이지까지 있는 킥보드 종류로 하였다. 품목을 살펴보니 네이버 쇼핑에 전동킥보드를 검색하면 상위 말고는 킥보드의 부품이나 소모품들이 훨씬 많았다. driver = webdriver.Chrome('c:/chromedriver.exe') url = 'https://www.naver.com' dri.. 2022. 11. 23.
[조향체험] 나만의 향수 만들기 체험 향수 조향을 체험하러 상수동에 위치한 유니베르시떼드퍼퓸공방에 방문했다. 좋아하는 향이 있다면 어떤 향기를 좋아하는가? 조향 체험을 하기 전 직접 나에게 질문을 던져 보았을 때 평소 딱히 생각해보지 않은 부분이라 그런지 답이 어려웠다. 이곳에서 다양한 40가지 이상의 향을 직접 시향 경험을 할 수 있어 내가 좋아하는 향이 무엇인지 찾아보기로 했다. 가게는 이국적인 느낌이 났다. 계단을 따라 반층 정도 내려가는 위치에 있다. 입구를 지나 가게에 들어가면 이런 분위기이다. 과학 실험실 같은 느낌이 첫인상이었다. 들어가면 이런 설문지(?), 탐색지(?)를 준다. 좋아하는 향 및 정말 싫어하는 향을 체크하는 부분이 있는데 잘 모르겠다면 딱히 표시하지 않아도 무방했다. 이렇게 각각의 향료가 있었다. 어떤 향을 조향.. 2022. 11. 19.
[머신러닝] 데이터 유형과 데이터에 따른 시각화에 대하여 1. 개체 (Entity) 개체란, 의미있는 하나의 정보 단위이다. 우리의 현실속에서의 한 사람이 갖고있는 의미있는 하나의 정보 단위를 말하자면 성별, 나이 소득, 직업, 주소, 개인금융상태 등 다양한 정보를 찾을 수 있다. 즉, 이는 사람에 대한 정보 한 사람을 개체 entity로 본다면 그 사람이 갖고 있는 성별, 나이 소득, 직업, 주소, 개인금융상태 등울 속성으로 볼 수 있다. 한가지 더 예시를 갖자면, 자동차라는 개체(entity)에는 브랜드, 마력, 주행거리, 연비 등의 속성을 찾을 수 있다! 이는 우리가 분석하려고 하는 것의 기본적인 관계가 된다. 이런것들의 개체는 현실세계에서는 시간과 공간 속에서 포착된다. 이 시간과 공간은 분석의 관점이 되는 기준이 될 수 있다. 2. 현실세계의 데이터 .. 2022. 11. 17.
[머신러닝] 범주형 데이터 (Categorical Data) 범주형 데이터란, 명확한 종류를 표현하는 데이터를 말한다. 영어로는 카테고리컬 데이터라고도 하는데, 이는 카테고리화를 명확하게 시킬 수 있어서 그렇다. 대표적인 파워풀한 범주형 데이터로서의 예시는 '성별' 을 예로 들 수 있겠다. 머신러닝에 들어가는 대부분의 데이터 모형 모델에는 숫자로만 입력 받을 수 있기 때문에 범주형 데이터는 숫자화 시켜야한다. 이렇게 숫자로 변환 하는 방법엔 더미변수화와 임베딩 방법이 있겠다. 예를들자면, 남자는 M 여자는 F 로 표기된 데이터가 있다고 가정한다면 남자는 '0' 여성은 '1' 이렇게 변환 할 수 있다. 더미변수란 , 범주형 변수를 연속형 변수로 변환한 변수라 말한다. 연속형 변수로만 사용가능한 분석기법을 활용 할 수 있게 도와준다. 여기서 말하는 연속형 변수란 키 .. 2022. 11. 17.
[데이터분석] 전국 신규 민간 아파트 분양 가격 동향 분석하기 공공데이터 포털에 있는 자료를 활용하여 전국 신규 민간 아파트 분양 가격 데이터를 분석해보려고 한다. https://www.data.go.kr/data/15061057/fileData.do 주택도시보증공사_전국 신규 민간아파트 분양가격 동향_20211231 주택분양보증을 받아 분양한 전체 민간 신규아파트 분양가격 동향으로 지역별, 면적별 분양가격 등의 자료를 제공합니다. 해당 데이터는 주택도시보증공사 홈페이지 및 통계청 KOSIS에서도 www.data.go.kr 데이터 파일은 공공데이터 포털에 2021년 12월 31일 자료로 주택도시보증공사에서 제공한 자료를 활용하였다. 1. 전국 신규 민간아파트 분양가격 동향 데이터 읽어오기 df = pd.read_csv('./data/전국신규민간아파트분양가격동향_20.. 2022. 11. 7.
[Jupyter Notebook] 주피터노트북 목차 활성화 주피터 노트북에서도 google의 colab 환경과 비슷한 목차를 활용 할 수 있다! 함께 주피터노트북 환경에서 목차를 활성화 시켜보자. 목차 활성화 하기 아나콘다를 사용한다면 아나콘다프롬프트에서 다음 명령어를 순서대로 실행시켜주자 # 1. extensions 설치 pip install jupyter_contrib_nbextensions # 2. Nbextensions 활성화 jupyter contrib nbextension install --user 1. extensions 설치 실행 결과 프롬프트에서 설치가 이렇게 완료된다면 두번째 단계로 넘어가자 2. Nbextensions 활성화 활성화가 완료되었다. 만약 주피터 노트북이 실행중이였다면 종료하고 다시 접속하자. 다시 접속하면 아래와 같이 Nbext.. 2022. 11. 7.
[데이터 분석] 귀무가설, 대립가설, 기대 개수, 검정 통계량에 대하여 확인하고자 하는 사항을 가설로 세우고, 이 가설이 실제로 맞는지를 검증하는 과정이 바로 통계분석 과정이다. 통계분석 과정에서 쓰이는 이해하기 어려웠던 것들을 정리해 보도록 하겠습니다. 귀무가설 (Null Hypothesis, H0) 귀무가설, 입에 붙지 않는 단어이다. 예를 들어 한 영화관에서, 상영하는 영화의 장르가 간식류 구매에 영향을 미치는지 분석하여 상영 영화 시간에 맞게 스낵을 알맞은 재고로 맞춰두고 싶어 한다면 데이터 분석을 할 줄 아는 당신이라면 조언해 줄 수 있을 것이다. A : "영화 장르가 간식류 구매에 영향을 줄 거 같아?" B : "아니, 다 비슷하겠지" A : "아니야 근데 내 생각엔 사람들이 공포영화 보러 들어갈 때 더 팝콘을 많이 구매하는 거 같아" B : "느낌일 뿐이지 어떻.. 2022. 11. 3.
[Pandas] Numpy 배열 인덱싱/슬라이싱 1차원 배열의 요소 참조 및 변경 array = np.arange(16) print(array) array[5] = 777 print(array) 0에서 15까지의 숫자의 배열을 불러온 후 인덱스값이 5인 데이터를 777로 바꾸었다. 3차원 배열의 요소 참조 및 변경 array = np.arange(16).reshape(2,2,4) print(array[1,1,2]) array[1,1,2] = 777 print(array) 3차원 구조의 배열은 2,2,4 배열로 reshape 후, 1,1,2 에 해당하는 데이터를 777로 바꾸었다. Numpy 1차원 배열 슬라이싱 arange 이용해서 1~10 10개 요소를 가진 1차원 벡터를 만들어 주었다. ar = np.arange(1,11) print(ar) ar[.. 2022. 11. 2.
[로또] Random 함수를 이용한 로또 번호 생성하기(with numpy) lotto = np.random.randint (1, 45, 6) lotto 1과 45 사이에 있는 번호를 무작위로 6개 나열해준다. 하지만 이렇게 되면 중복되는 번호가 생길 수 있어서 바로 업데이트해주었다. lotto_version_2 = np.random.choice(45, 6, replace=False) lotto_version_2 하지만 이렇게 하면 숫자 0이 나와버린다 로또엔 0번은 없는데.. 오류가 있는 코드지만 행운 깃들길.. 만약 1등 못하면 코드 탓해야지.. 그래도 오류가 있는 코드지만 한 번에 원하는 대로 값이 잘 나와줬다 나중에는 머신러닝을 통하여 각 회차별 번호 확률을 구해 조금 더 과학적인 번호 추출을 해보고 싶다. 뭔가 배운걸 나름 써먹은 느낌이라 뿌듯하다 BYE 2022. 11. 2.
[Pandas] Numpy - matplotlib, seaborn를 이용한 자료 시각화 lineplot # plt x = np.array([1, 2, 3, 4, 5, 6]) y = np.array([1, 2, 3, 4, 5, 6]) #title. x label, y label, 범례 plt.plot(x,y, 'ms--',label='low') #스타일은 색깔, 마커, 선종류 순서로 지정 plt.plot(x,y*2, label = 'high') plt.legend() plt.title("test") plt.xlabel("xlabel") plt.ylabel("ylabel") plt.show() #그래프만 보여줌 우리가 알고 있는 그 선 그래프이다. 코드는 위와 같이 들어가며 스타일은 색깔, 마커, 선종류 순서로 지정된다. histogram plt.hist(iris['sepal_width']) .. 2022. 11. 1.
[Pandas] Numpy - np.zeros, ones, full, eye, random 알아보기 Array 의 초기화 함수들(zeros,ones,full,eye) np.zeros ar = np.zeros((3,4)) printinfo(ar) np.zeros()는 배열의 모든 원소에 0을 삽입한다. np.ones array = np.ones((2,3)) print(array) np.ones()는 배열의 모든 원소에 1을 삽입한다. np.full array= np.full((2,3), 1234) print(array) np.full()은 배열에 사용자가 지정한 값을 삽입합니다. np.eye array = np.eye(3) print(array) 주 대각선의 원소가 모두 1이며 나머지 원소는 모두 0인 정사각형 행렬을 반환. (단위행렬) 참고 np.ranodm.random array = np.random.. 2022. 11. 1.
[Pandas] Numpy Numpy는 수치 데이터를 다루는 python package다. Numpy의 핵심인 다차원 행렬 자료구조인 array를 통해 벡터 및 행렬을 사용하는 선형 대수 계산에서 주로 사용된다. Numpy의 계산은 python에 비해 빠르고 편리하다. 넘파이에 대해 구체적으로 알기 전 기본적으로 알고 들어가면 좋은 단어들의 의미들을 먼저 살펴보자! Scalar : 한개의 원소로 이루어진 데이터 Vector : 원소들이 모인 집합으로 1차원 배열에 속하고, 각원소의 데이터 타입이 동일. Series array : 벡터들을 모아놓은 데이터 집합으로 2차원의 배열이고, Matrix라 불린다. Tensor : 백터에 높이를 추가한 형태로 같은 크기의 행렬들을 모아놓은 데이터 집합 이를 참조하여 array 구조에 대해 살.. 2022. 11. 1.
[Pandas] Google Colab Notebooks 이용해보기 (with Google Drive) 구글 드라이브와 colab을 이용하여 클라우드상에서 pandas를 이용해봤다. 여러 사람들과 쉽게 클라우드 환경에서 데이터를 공유할수 있어 편리하다. 또한 colab은 쥬피터 노트북과 비슷하게 동작한다. 언제, 어디서든, 어떤 환경에서도 구글의 gpu를 사용하여 python 스크립트를 작성하고 수정할수 있으며 공유가 굉장히 편리하다는 장점을 갖고있다. 50메가 정도 되는 큰 데이터의 정보를 쉽게 불러와서 볼 수 있으며 데이터를 깔끔하게 정리하고 전처리 작업을 할 수 있다. from google.colab import drive drive.mount('/content/drive') 이를 위해선 구글 드라이브에 있는 클라우드 환경 속 데이터를 import 해서 불러와야한다. 다음의 코드와 같이 구글 드라이브.. 2022. 10. 31.
[여의도] 북카페 카페꼼마&얀 쿠브레 오늘은 여의도 샛강 쪽에 위치한 카페꼼마 & 쿠브레에 다녀왔습니다. 주말을 맞아 해야 할 일을 사람들 사이에서 조금 더 효율적으로 마치기 위해 방문했습니다. 외부에서 봐도 아주 큰 빌딩에 2층까지 공간이 있어서 엄청 커 보입니다! 신기하기 카페와 디저트 가게가 나뉘어 있는데 공간은 자유롭게 앉으면 된답니다. 별도로 카페에서 파는 디저트도 있답니다~ 케이크 쿠키 등 스타벅스 리저브 느낌으로 커피 내리는 공간 앞에 바로 앉을 수도 있고 공간이 정말 다양하게 잘 되어있어서 놀랐답니다. 큰 책상과 충전기를 쉽게 꽂을 수 있는 노트북에 최적화된 공간, 아주 편한 소파와 1인 리클라이너 의자로 되어있는 독서에 최적화되어있는 공간, 일반 카페처럼 대화를 위한 공간 등 정말 공간이 좋았습니다 이렇게 공간이 있고 도서관.. 2022. 10. 30.
[Pandas] Data 다루기 (About : null data) 1. NULL 값 다루기 data = [[1, np.nan, 2], [2,3,5], [np.nan,4,6]] df = pd.DataFrame(data) df.dropna() #행에 null 값이 하나라도 있으면 드랍 df.dropna(axis=1) #열에 null 값이 하나라도 있으면 드랍 해당 DATA 의 DATAFRAME df.dropna() 행에 null값이 하나라도 있으면 행을 드랍한다. df.dropna (axis =1 ) 열에 null값이 하나라도 있으면 드랍한다. 여기서 정말 중요한 사실이 한가지 있다. Pandas 에서 drop 을 제외한 모든 동작의 default 값은 행과 열중에 열 기준으로 동작하는게 기준이다 dorpna() 했을때 행이 드랍되고 조건으로 axis 를 줬을 때 해당 열.. 2022. 10. 30.
[Pandas] 시리즈와 데이터 프레임 Series and Dataframe(with anaconda) 오늘은 판다스에 대해서 다뤄보려고 한다. 기본적으로 아래와 같이 판다스를 import 해서 pd로 별칭을 주어 사용한다. import pandas as pd print(pd.__version__) 버젼확인을 해서 정상적으로 나온다면 사용할준비는 완료 !!! 데이터 구조는 크게 시리즈와 데이터 프레임으로 나눌 수 있다 시리즈와 데이터 프레임은 비슷하지만 다르다. 그 차이를 한번 느껴보도록 하자. 시리즈 ( Series ) pd.Series(data = [1,2,3,4], index = ['a', 'b', 'c', 'd']) pd.Series([1,2,3,4], index = ['a', 'b', 'c', 'd']) 시리즈는 ond-dimension 데이터 구조를 갖는다 즉, 일차원이며 여러가지 데이터가 아닌.. 2022. 10. 28.
[Python] Class Class란 ? 과자 틀 → 클래스 (class) 과자 틀에 의해서 만들어진 과자 → 객체 (object) 여기에서 설명할 클래스는 과자 틀과 비슷하다. 클래스(class)란 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면이고(과자 틀), 객체(object)란 클래스로 만든 피조물(과자 틀을 사용해 만든 과자)을 뜻한다. 클래스로 만든 객체에는 중요한 특징이 있다. 바로 객체마다 고유한 성격을 가진다는 것이다. 과자 틀로 만든 과자에 구멍을 뚫거나 조금 베어 먹더라도 다른 과자에는 아무 영향이 없는 것과 마찬가지로 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않는다. Class 구조 알아보기 class Person: def __init__(self, name): self.name = n.. 2022. 10. 27.
[Python] secrets, string module 이용한 패스워드 생성 프로그램 만들기 (with random) 설계 현대사회를 살아가다 보면 누구나 한 번쯤은 비밀번호 오류로 인해 홈페이지에서 임시로 발급해주는 임시 비밀번호를 받아본 경험이 있을것이다. 그런 것조차 프로그래밍적으로 발급해줬다는 사실조차 놀라운 따름이었다. 임시 비밀번호를 만드는 방법은 다양하게 있지만 이번엔 python random module을 이용해서 만들어보려고 한다.! string module을 사용하여 만들어 보겠다 ['Formatter','Template','_ChainMap','__all__','__builtins__','__cached__','__doc__','__file__','__loader__', '__name__','__package__','__spec__','_re','_sentinel_dict','_string','asc.. 2022. 10. 27.
[Python] 파이썬으로 택시 미터기 요금 계산 프로그램 만들어보기(주행 거리에 따른) 택시를 타면 볼 수 있는 미터기 [전제] # 사용자에게 목적지까지 거리를 묻는다 # 기본요금의 기본거리 1.6km # 기본요금 4800원 # 1.6km 이상일땐 131m 당 100원추가 (현실반영) ------------------------------------------------------- # 15km/h 미만으로 서행하는경우 # 30초당 100원의 추가요금 발생 이렇게 두 단계로 코드를 짜보고 추가 조건을 주어 업데이트 해보았다. 아직 많이 부족하다. 택시 미터기를 생각하여 코드를 짜보았다 사용자로 하여금 갈 거리를 입력하게 만들었다. (정말 현실적으로 유용하게 쓰이려면 출발지와 목적지를 입력하게 만들고 네이버지도나 카카오지도와 연결하여 해당 길에 대한 정보 및 교통정보까지 연동하여 택시요금을 .. 2022. 10. 26.
[Python] Lambda (람다함수), Module에 대하여 Lambda 람다함수 x = lambda a, b : a*b print(x(5,6)) y = lambda a, b, c : a+b+c print(y(4, 5, 6)) 인수 a, b에 a*b 연산을 넣어 결과 값을 반환하는 함수이다. 람다는 다른 함수 내에서 익명 함수로 사용할 때 더 잘 나타납니다. def myfunc(n): return lambda a : a * n mydoubler = myfunc(2) mytripler = myfunc(3) print(mydoubler(11)) print(mytripler(11)) 그 예시는 다음과 같다. 이 값의 결과 값은 22, 33이 된다. Module 모듈 모듈이란, 함수나 변수 또는 클래스를 모아 놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할.. 2022. 10. 26.
[Python] 서울 신림선 운행 소요시간 계산 프로그램 만들기 신림선(샛강 ~ 관악산역) 출발역 부터 도착역 까지 소요시간 계산 프로그램을 만들어 봤다. 역 간 운행시간은 2분으로 가정하여 만들어보았다. station = {'샛강' : 1, '대방' : 2, '서울지방병무청' : 3, '보라매역' : 4, '보라매공원' : 5, '보라매병원' : 6, '당곡' : 7, '신림' : 8, '서원' : 9, '서울대벤쳐타운' : 10, '관악산' : 11} station 이라는 딕셔너리를 만들었다. 각각의 역에 숫자를 부여하여 소요시간을 계산하려고 설계하였다 예를들어 샛강에서 보라매역까지 가게된다면 1번에서 4번역까지 총 3정거장을 가야만 한다. 따라서, 3정거장 * 2 라는 연산을 통해 총 6분이라는 소요시간이 걸리는것을 알 수 있다. start = input("출발.. 2022. 10. 25.
[Python] Function Create function 매개변수가 없는 함수 def my_function(): print("Hello from a function") 기본적인 함수의 틀이다 매개변수가 여러개 있는 함수 def function(fname, lname): print(fname+ ' ' +lname) function('dh', 'lee') function('blackhole', 'coding') funtion 안에 각각 요소를 넣어주고 프린트를 이용해서 함수 값을 추출해준다 Passing a List as an Argument Function List를 입력 def my_function(food): for x in food: print(x) fruits = ["apple", "banana", "cherry"] my_fu.. 2022. 10. 25.
[Python] For Loop 반복문 Loop ( for ~ in ) 탭 or 스페이스로 반복해야하는 부분을 들여쓰기 해야한다 a = ['cat', 'window', 'defenstrate'] for x in a: print(x, len(x)) Range (start, stop, step) 숫자의 범위를 지정한다. 시작은 포함, 끝은 불포함한다 for i in range(1,6): #1~100까지 표현 print(i, "i squared is", i**2) print('end') print('end') #끝에 end 끝에 따로 end를 붙여 주려면 들여쓰기 하지 않은 상태로 따로 구분하여 별도의 print ('end') 를 넣어준다 파이썬의 들여쓰기가 얼마나 중요한지 다시 한번 느끼게 되는 부분이다! For ~ in 반복문을 사용해서 인사해.. 2022. 10. 24.
[Python] If 조건문 (If 조건문을 기반으로 // 키오스크 로직 만들어보기) If 조건문은 다음과 같이 한눈에 볼 수 있다 If 조건문의 기본 구조 조건문이 참이면 어떤 행동을 취하고 거짓이면 아무런 행동을 취하지 않음 ## If 조건문 ## gpa = 3.4 if gpa > 2.0: #조건에 맞으면 출력 print('accepted!') 다음과 같이 시험 점수가 3.4 인데 만약 점수가 2.0 이상이라면 accepted! 를 출력한다! If elif else 조건문 num = int(input('숫자')) if num > 0: print('positive') elif num ==0: print('zeor') else: print('negative') 숫자의 형태에 따라 양수, 음수, 0 을 표현 해주는 코드를 나타내 보았다 숫자를 입력하고 입력한 숫자가 만약 0보다 크다면 PO.. 2022. 10. 24.