Home Project

Data Analyst's Home Project

[Legacy] Data 15

[업무기록] google appscript 활용한 구글 스프레드시트 자동화(이진 탐색 알고리즘)

최근 맡았던 업무 중에 쿼리문을 매주 한 번씩 주기적으로 돌린 다음, 구글 스프레드시트로 업데이트 하는 과정 전체를 자동화하는 일감이 있었다. 어제 최종 완료되었는데 사실 중간에 추가 요청이 들어와서 전체 코드를 갈아엎었다. (1) googleapiclient를 활용해 google bigquery와 연동하여 주피터 환경에서 데이터를 불러오기 (2) gspread를 활용해 구글 스프레드시트로 데이터 업데이트(매주 월요일에 최근 1주 데이터 업데이트) (3) 해당 워크시트에서 google appscript를 활용해 일정 기간 동안의 데이터 삭제하는 기능 구현(버튼 클릭하면 스크립트 실행) 이렇게 해서 전달했는데 추가적인 요청사항이 생겨서 전체 과정을 아예 수정했다. (1) googleapiclient를 활용..

[Legacy] Data 2021.08.14

깃허브 시작하기(프로젝스 생성)_github project create

깃허브 프로젝트 생성 관련 명령어 github repository 생성 후 로컬 연결할 때 (1) git config --global user.email '아이디@이메일.com' (2) git config --globar user.name '유저 이름' (3) git init (4) git remote add origin "repository 주소" (5) 코드 업로드 준비 : git add . (6) 코드를 repository에 올릴 때 쓸 메시지 : git commit -m '메시지' (7) master branch에 코드 업로드 : git push origin master (8) repository에서 로컬로 코드 복제할 때 : git clone "repository 주소" (9) add된 파일 다..

[Legacy] Data 2020.11.22

원하는 수만큼 0을 채워넣자! zfill() 함수

쓸 일이 있을까...싶은 함수지만 알아두면 좋은 함수다. 특히, 굉장히 많은 데이터 파일을 불러올 때, 그리고 해당 파일들 이름에 201901, 201902, 201903... 식으로 일련의 숫자들이 들어간다면 아마 이 함수가 필요할 것이다. 그렇다면, zfill()함수는 언제, 어떻게 쓸까? 예를 들어, 다음과 같은 파일들이 있다고 가정해보자 공공데이터의 일부인데 2018년 1월부터 2019년 8월까지 데이터가 있음을 확인할 수 있으며, 이걸 딱 봤을 때 직관적으로 "for문 들어간 함수를 만들어서 불러오면 되겠구나!"라는 생각이 든다. 문제는 다음 상황에서 발생한다. for i in range(2018, 2020): for j in range(1, 13): ij = '{}{}'.format(i, j)..

[토이프로젝트1] 코로나19 데이터 각 컬럼 시각화 및 ARIMA/Prophet 분석

확진자가 5000명을 넘어선 가운데, 현 시각 기준으로 총 88명의 환자가 완치 판정을 받았다. 정부 당국과 전문가들 사이에선 앞으로 완치 사례가 더 많이 나올 것이란 기대감이 커지고 있다. 대부분의 확진 환자들이 신천지 신도들에게서 발생했다는 점, 그리고 대구와 경북이 아닌 지역에선 그나마 전염 속도가 빠르지 않다는 것이 앞으로를 조금이나마 낙관적으로 바라볼 수 있게 한다. 아래의 데이터는 지난 번에 분석한 코로나19 캐글 데이터의 업데이트 버전이다. 3월 4일까지의 데이터가 기록돼있지만 결측치가 없는 확진 날짜(confirmed_date) 피처와는 달리, 회복일(released_date)과 사망일(deceased_date) 피처에는 결측치가 굉장히 많다. 따라서, 컬럼 간의 관계를 살펴보는 건 조금 ..

[토이프로젝트1] 코로나19 캐글 데이터 간단 탐색 및 전처리 (1차)

데이터 출처 : https://www.kaggle.com/kimjihoo/coronavirusdataset#patient.csv Coronavirus-Dataset Official information of Coronavirus disease 2019 (COVID-19) in South Korea www.kaggle.com 코로나19의 확진자가 급증하고 있다. 사람들은 현관문을 걸어잠그고 두문불출하고 있으며(나 역시 마찬가지다) 마스크를 구입하기 위한 외출만이 잦은 상태다. 한국은 높은 진단률로 많은 확진자들을 발견했고 그만큼 많은 데이터들을 생산해내고 있다. 현 시국이 매우 개탄스러운 상황임은 맞지만 데이터 분석을 공부하는 사람들의 입장에선 리얼 데이터를 다뤄볼 수 있는 기회인 셈이기도 하다. 코로나 ..

타이타닉으로 그리드서치(GridSearch)

In [0]: import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns 타이타닉 데이터셋은 너무너무 유명한 데이터셋입니다. 머신러닝을 공부하는 사람이라면 아마 누구나 타이타닉 데이터로 시작했을 것 같아요. 저도 마찬가지이구요. 타이타닉 데이터에 대한 내용은 이미 알고 있으므로 이번 코드에선 다양한 시각화 과정, 모델 성능 향샹은 제외했으며, 그리드 서치를 구현하는 데에 집중했습니다. In [0]: df = pd.read_csv('./train.csv') print(df.shape) display(df.head()) (891, 12) PassengerId Survived Pclass Name Sex..

케라스로 mnist 인식하는 모델 만들기

케라스를 활용한 CNN으로 MNIST 인식하기¶ In [1]: from IPython.core.display import display, HTML display(HTML("")) In [3]: import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from keras.datasets import mnist from keras.utils import np_utils from keras import layers from keras import models from keras.callbacks import ModelCheckpoint, EarlyStopping import warnings warnings.filterwarnings(..

깃허브 사용법(github 입문)

개발을 하다보면 깃허브는 결국 필수적으로 다룰 줄 알아야만 하는 필수 관문이 되어버립니다. 물론 저는 개발을 하지는 않지만, 데이터 분석이든 딥러닝이든 코드를 다루는 영역이라면 결국 '깃허브'라는 관문에 다다르게 되는 것 같습니다. 작년에 "나도 깃허브 좀 해볼까?"라는 가벼운 마음을 먹고 구글링을 하며 git bash도 깔고 따라하다가 연이러 뜨는 에러문구로 인해 "안해, 때려쳐"하고 내던진 적이 있습니다. 근데, 이젠 어쩔 수 없이 해야하네요. 팀프로젝트를 하게 되었는데 코드 공유를 깃허브로 하게 되어서 울며 겨자먹기로 다시 깃허브를 열었습니다. 오늘은 저같은 깃허브 입문자들을 위한 깃허브 사용법에 대해 설명해드리도록 하겠습니다. 순서대로만 따라하시면 됩니다. 1) 먼저 깃허브 계정을 만들고 로그인합..

[Legacy] Data 2019.05.31

Expected 2D array, got 1D array instead 에러 : flatten(), reshape(), ravel() 알아보기

에러 : Expected 2D array, got 1D array instead:array=[0.23 0.21 0.23 ... 0.7 0.86 0.75].Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample. 오늘 아무 생각없이 모델 피팅하다가 이런 에러문구가 떴다.머신러닝 모델에서 fit 메소드는 2차원 배열을 입력으로 기대한다. 그런데, 1D 배열을 인풋으로 피팅하였기 때문에 에러가 발생한 것이다.이럴 경우, 1차원을 2차원으로 변환해야한다. reshape메소드를 통해 배열의 형태를 바꿀 수 있다. 예를 ..