Home Project

Data Analyst's Home Project

분류 전체보기 22

[OffTheRecord] 우리 사회는 안녕한가

[범죄]한국 범죄 현황 분석1. 공공데이터 활용하여 1차 단순 분석 2. 지표들을 통해 문제 정의 및 가설 설정필요 시 Crawling 범죄의 경중에 따른 판결이 형평성이 있는지 확인 법은 잘 작동하고 있는가. P.S. 수집한 모든 데이터는 DB 적재 지속적으로 모니터링 필요한 지표들에 한해선 마트화 본 페이지는 상시 수정 last updated at 2024.02.24

Dart 기초 (3) Dynamic Type

void main() { // 변수를 선언하고 거기에 어떤 값을 할당하지 않으면 dynamic // dynamic = 어떤 type의 변수인지 알 수 없는 상태 var animal; animal = 'cat'; animal = 45; animal = true; print(animal); // dynamic으로 직접 명시해줄 수 있음 dynamic animalAge; animalAge = 19; if(animalAge is String){ var ageLength = animalAge.length; print(ageLength); } if(animalAge is int){ int age = animalAge; print(age); } // 다만, dynamic은 정말 필요할 때만 사용 } dynamic 타..

Dart 기초 (2) Variables (변수)

void main() { // var (String) var animal = 'dog'; print(animal); // 변수 명시적 선언 String String anotherAnimal = 'cat'; print(anotherAnimal); // var로 변수 선언한 animal을 다른 값으로 대체 animal = 'elephant'; print(animal); // String으로 변수 선언한 anotherAnimal 다른 값으로 대체 anotherAnimal = 'snake'; print(anotherAnimal); } var 관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 사용

[백준] 브루트포스 - 덩치(7568)

백준 7568번: 덩치 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net wh = [] result = [] N = int(input()) for _ in range(N): w, h = map(int, input().split()) wh.append((w, h)) for i in range(N): rank = 0 for j in range(N): if (wh[i][0] < wh[j][0]) and (wh[i][1] < wh[j][1]): rank += 1 result.append(rank + 1) ..

[알고리즘] 브루트포스 알고리즘 brute force

브루트포스(Brute Force) 브루트포스 알고리즘은 문자열에서 특정 문자를 탐색하는 검색 알고리즘이며 선형 탐색이라고 보면 된다. 단순 무식하게 가능한 모든 경우의 수를 다 체크하는 가장 기본적인 알고리즘이다. 브루트포스로 알고리즘을 설계할 땐, 모든 경우의 수를 다 고려해야 한다. 대표적으로 for문, while문 등의 반복문을 통해 가능한 모든 경우의 수를 다 고려할 수 있다. 시간복잡도 역시 매우 크다는 게 단점이지만 암호학에선 가장 확실한 방법으로 많이 사용된다.

플러터(Flutter) 설치

참고 링크 https://brunch.co.kr/@mystoryg/114 플러터(Flutter) 개발 환경 구축 목적에 맞는 개발 환경 구축하기 플러터는 크로스 플랫폼 앱 개발을 위한 프레임워크인 만큼 다양한 목적으로 사용될 수 있다. 따라서 개발 환경도 목적에 따라 선택적으로 구축 가능하다. 플러 brunch.co.kr https://wenna.tistory.com/16 [Flutter] 플러터 시작하기 - 다운로드 및 설정 이번 글에서는 플러터를 설치하고 사용 가능하도록 설정하는 과정을 다루어보고자 한다(。・∀・) ノ゙ 필자 개인적으로 플러터 설정 때 애로사항이 많은 기억이 있어 필요하신 분이 있으시다 wenna.tistory.com

[업무기록] 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)..