분류 전체보기760 [Flutter(플러터)]처음부터 다시.. Spring도 해보고 Django도 해봤지만 만지지 않은지 시간이 꽤 지나서 램마냥 머리에서 휘발되고 말았다..... 이러한 상황에서 최근에 Flutter(플러터) 3.0이 업데이트 됬다는 얘기를 들었다.(디자인적으로 크게 향상되었다고함) Flutter도 예전에 Firebase랑 연동해서 구동시킨 프로젝트는 있는데 코드를 다시보니 머리가 아프고 속이 울렁거린다. 업데이트 주기를 보니 구글이 플터러를 아직 버리지 않은것같아서 기왕 하는김에 이번엔 블로그에 정리도 하면서 다시 차근차근해보려 한다. 구글 트렌드로 검색해보니 Flutter가 React Native를 제친것을 볼 수 있다. 우상향이 계속된다는 가정하에 Flutter의 미래가 밝다고 할 수 있다.(물론 React가 안좋다는 얘기는 아니다.) 이번엔.. 2022. 5. 30. [Tableau(태블로)]Sub-Total/소계 원하는 부분만 표시하기 실무에선 데이터를 크로스탭 형식으로 화면에 표시할때 Total 이나 Sub-Total을 표시하는 경우가 매우 많다. 고맙게도 Tableau에서는 분석 툴에서 소계와 총합계를 지원해준다. 그런데 소계(Sub-Total)을 표시할때 기본적으로 모든 차원에 해당하는 소계를 자동으로 전부 보여주는 문제가 있다. 다른 부분은 필요없고 내가 원하는 부분들의 소계만 표시하고자 할때 어떻게 하는지 알아보자 --아래처럼 소계가 다 나오는게 아니라 원하는 부분만 나오게 하고 싶은거다.-- 방법은 매우 간단하다. 행/열에 있는 항목들에서 우클릭을 하면 나오는 메뉴들중 최하단의 "소계"를 비활성화/활성화 하면 된다. 기본적으로 Tableau는 분석 - 소계를 사용할때 모든 소계를 다 표시하게 된다. 만일 데이터의 크기가 너무.. 2022. 5. 30. [Python] 학습이 완료된 모델 저장해서 다른곳에서 사용하기 머신러닝이든 딥러닝이든 간단한 데이터라면 모를까 빅데이터를 사용한 모델학습은 매번 할때마다 시간이 많이 필요하다(3일동안 돌린경우도 있다한다) 문제는 해당 모델을 다른 데이터에도 적용을 해주고 싶은데, 다른 코드에서도 해당 모델을 사용할때 학습을 한다면 시간이 부족할 것이다. 다행히도 학습이 완료된 모델을 저장하는 방법이 있다, 여러가지 방법이 있지만 보통 pickle를 많이 쓴다. pickle import pickle with open('경로/저장하고 싶은 파일명.pickle','wb') as fw: pickle.dump(모델명, fw) 이렇게 해서 저장된 .pickle(.dat)을 다른 파이썬 코드에서 여는 방법은 아래와 같다. pickle 다른곳에서 쓰는 코드 import pickle with op.. 2022. 5. 9. [태블로(Tableau)] Tabpy 연동하기 - Tabpy_2 과정 1) Tabpy 서버 실행하기 2) Tabpy 서버 실행 후 태블로에서 해당 서버와 연동해주기 3) 원하는 Python 코드를 Script_XXX() 내장함수로 실행하기 4) 결과들을 가지고 데이터 시각화 하기 사용할 데이터 셋 (Iris()) from sklearn.datasets import load_iris 사용할 분석기법 DBSCAN(밀도 기반 클러스터링) -> from sklearn.cluster import DBSCAN DBSCAN이란? eps=거리값, min_samples=n값 eps만큼의 반경안에 n개의 값으로 이루어진 군집을 의미한다. 쉽게 말하면 그래프상에 찍혀있는 여러개의 점들이 모여있는 정도에 따라 구분해놓은것 k-means 클러스터링의 경우에는 거리에따라 구분하느라 군집을 표.. 2022. 5. 6. [crontab]Linux 스케줄링 crontab이 안될경우(+.py를 Crontab으로 스케줄링 걸어주기) - .py crontab 설정하기 - 리눅스에서 .py 파일을 만들고 해당 파일을 매일 정해진 시간마다 돌리고 싶었다. 근데 안됨 다 되는것 같고 에러 메시지도 안뜨는데 되지를 않음 그래서 찾아본 결과 아래 프로세스를 진행하니 잘된다. 1) 경로가 잘되어 있는지 확인해준다. 무조건 절대경로를 써준다 명령창에 pwd를 치면 현재 접속되에 있는 절대경로가 나오는데 그걸 그냥 통째로 복붙하면된다. 물론 .py내부에도 해당 pwd 경로를 써줘야한다. ex) 1) cd 실행하고자하는 .py로 이동 2) pwd 3) pwd에 나온 경로 /파이썬 파일.py 2) crontab 재시작을 했는가? 원래 명령어는 crontab restart인데, 변경된 명령어는 systemctl restart crond이다. 만약 당신이.. 2022. 5. 6. [Tableau(태블로)]Tableau Server로 Dataframe 데이터 업로드하기 Tabpy도 그렇고 pantab도 그렇고 Tableau와 Python은 웬만하면 호환되는 경우가 많다. 이를 사용하여 .py파일을 만들어 스케줄링을 걸어주면 자동으로 데이터 원본을 업데이트하는 기능도 가능하다 이번엔 Python 코드를 사용하여 .CSV 파일 또는 Dataframe 형식의 대용량(2Gb)이상 데이터를 Tableau Server에 .hyper파일로 업로드해볼것이다. 1) CSV -> Hyper -> Server Upload import pandas as pdimport csvPATH_TO_CSV = "CSV파일의 경로.csv"CSV_DF = pd.read_csv(PATH_TO_CSV,na_filter=False) #na_filter는 NA 혹은 NAN이라 적혀있는 문자열을 유지해준다.. 2022. 5. 6. [Tableau(태블로)]초를 시:분:초로 나타내기(how to change seconds to hh:nn:ss in Tableau) Tableau에서 초(sec)을 시:분:초로 표현하기 간혹가다 시간(초)로 나타낸것을 시:분:초로 나타내야할때가 있다. 예를들어 177초 같은경우, [1시간 = 3600초 / 1분 = 60초] 이므로 177sec = 00:02:57이라고 할 수 있다.(2분 57초) 이렇게 초(sec)의 데이터를 시:분:초 형태로 나타내 보자 1) 계산된 필드 (hh:mm:ss) 연속형 초(sec) -> 시(hour) == RIGHT('00'+STR(FLOOR(AVG([초(sec)데이터)/3600)),2) 초(sec) -> 분(minute) == RIGHT('00'+STR(FLOOR((AVG([초(sec)데이터)%3600)/60)),2) 초(sec) -> 초(sec) == RIGHT('00'+STR(FLOOR((AVG([.. 2022. 4. 25. [Tableau]클릭 시 HighLight 표시 안되게 하기(Unabled click highlight) 태블로를 사용하다 보면 클라이언트의 요청에 따라 Interactive한 대시보드 표현을 위해 Action을 많이 활용하는 경우가 생긴다. 이때 버튼처럼 작동하는 시트를 만들어 대시보드상에 있는 해당 시트를 클릭하면, 특정 Action이 동작할수 있게 만들수 있다. 다만 버튼을 누른다고 클릭을 하면, 해당 시트의 객체(text나 image)가 highlight되어 아래와 같이 시각적으로 별로 좋아보이지 않는 경우가 있다. 간단한 Action을 사용하여 hightlight기능을 방지해보자. #1) 0,1 계산된 필드 만들기 각자 0과 1로 이루어진 계산된필드(불연속형)을 생성한다. ※ '0','1' 또는 'test','test1'등 원하는 방식으로 생성해도 된다. #2) #1)에서 만든 필드를 Detail(.. 2022. 4. 12. [Tableau]Keep Percentage When filtered(전체기준 퍼센트 유지하기) 간혹가다, 전체값 기준으로 선택값의 퍼센트를 구하는 경우가 있다, 하지만 기준이 되는 행/열을 필터링하면 아래와 같이 변경돼버린다. 보통 이렇게 생긴 전체 9,994 대비 각자의 Percentage는 위와같이 표기한다. 하지만 기준이 되는 값(Sub-Category)를 필터링하면 아래와 같이 변경돼버린다. 이처럼 필터를 적용해서 특정 값들을 제외하면, 각 퍼센트가 남은 값들을 기준으로 다시 계산해서 표기되는데 필터링을 해도 기존 퍼센트를 유지하는 방법에 대해 알아보자. *방법은 여러가지가 있으니 여러가지 테스트를 해보는것을 추천한다. 방법 1) Rank로 필터링하기(Top N) 1-1) 계산된 필드를 생성한다 Rank --> RANK(COUNT([Sub-Category])) 1-2) 생성된 Rank를 .. 2022. 4. 11. 이전 1 ··· 76 77 78 79 80 81 82 ··· 85 다음