새해 목표, 다들 세우셨나요? 운동과 더불어 가장 많이들 세우는 목표가 독서하기일텐데요, 올해는 책을 많이 읽어보자고 항상 다짐하게 되는 것 같습니다. 저는 읽고싶은 책 리스트를 작성하고, 올해는 어떤 흥미로운 책을 만나게될까 설레이는 새해를 맞이하고 있습니다. 여러분들은 책을 좋아하시나요? 저는 책도 좋아하지만 도서관을 더 좋아하는것같아요. 도서관 책장에 책이 꽉 차있는 모습을 보면 마음도 가득 찬 느낌이 들거든요. 책을 보관하기 좋은 공간이 없어서 되도록 종이책보다는 전자책을 이용하고, 작년에는 오디오북도 듣기 시작했습니다. 그렇게 종이책을 보고, 전자책을 읽고, 또 오디오북을 들으면서 다양하게 책을 만나고있습니다. 혹시 집에 사둔 책이 많아서 샀던 책을 또 구매한 경험이 있지는 않나요? 아니면, 분..
Normal printing to the terminal means printing to "standard output" 결과가 저장될 파일명을 따로 지정해주지 않았을 경우, 결과를 터미널 창에 뿌려주도록 하는 함수는 다음과 같다. def write_file(items, fn=None): """Write file items - list of string fn - name of output file, string (fn=None: standard output) """ if fn: out = open(fn,'w') for item in items: if fn: out.write("{}".format(item) else: print("{}".format(item)) if fn: out.close() retur..
R script를 실행할때 매번 Rstudio를 이용할 필요는 없다. 스크립트를 한줄한줄 확인하면서 실행할 필요가없다면 바로 Rscript로 실행하면 간편하다. 그렇다면 이런경우에는 어떻게 현재 디렉토리를 지정해줄 수 있을까? funr package의 get_script_path() function을 사용하면 된다. funr: Simple Utility Providing Terminal Access to all R Functions A small utility which wraps Rscript and provides access to all R functions from the shell. cran.r-project.org CURRENT_WORKING_DIR
R에서는 setwd()로 워킹디렉토리를 설정하고 설정된 워킹 디렉토리가 무엇인지 getwd()로 확인하는 작업을 해주어야한다. 그래야, 파일을 불러오거나 저장할때 그 위치를 알기고, 지정하기 쉽다. 이런점에서 python에서는 현재파일이 있는 위치가 자동으로 워킹 디렉토리로 설정이 되는 셈이였고, 그래서 절대경로와 상대경로 방법이 있었다. 하지만 R에서는 현재 파일이 있는 위치를 setwd()를 통해 지정해줘야, 절대와 상대경로 개념을 사용할 수 있게 된다. 그렇다면 현재 파일이 있는 위치는 어떻게 알아낼 수 있을까. 이런 방법이 있는지 몰랐을때 나는 하나씩 위치를 찾고 타이핑해서 지정 해줬었다. 이제는 안녕. C드라이브 Work 디렉토리 아래에 빈 test.R 파일을 하나 저장해두었다. 이 R 파일을 ..
python을 이용하면 format 내장함수를 사용하지 않고도, 조금은 번거롭지만 10진수를 2진수로 변경 할 수 있습니다. 사고의 흐름 정수 n이 주어졌습니다 n을 2로 나누어 줍니다. 나머지를 리스트에 저장합니다. 2로 나눈 몫이 0이 아니라면 나온 몫을 정수 n으로 선언하고(1) 그 n을 2로 다시 나누어줍니다(2) 2로 나눈 몫이 0이라면, 여기서 2로 나누는 반복은 끝납니다 지금까지 모아둔 나머지 리스트를 문자열로 바꾸어 출력합니다. def my_binary(n): li = [] while True: q = int(n / 2) r = int(n % 2) li.insert(0, r) if q != 0: n = q else: break final = ''.join(map(str, li)) print..
파이썬에서 format()함수를 이용하면 10진수를 2진수, 8진수, 16진수로 간단하게 변환 할 수 있습니다. 2진수는 Binary format의 'b' 8진수는 Octal format의 'o' 16진수는 Hexadecimal format의 'x' 를 사용하면 됩니다. n = 8 b = format(n,'b') #Binary format o = format(n,'o') #Octal format x = format(n,'x') #Hexadecimal format print(b) print(o) print(x) 1000 10 8
Word Neighbors는 영단어 조합을 공부하기 좋은 사이트입니다. 영단어를 공부할 때 단어만 따로 외울경우 이를 어떻게 활용해야할지 막막하게 됩니다. 이럴때 Word Neighbors에서 영단어를 검색하면, 사전에서 예문으로 많이 활용된 영단어 조합을 찾아볼 수 있습니다. 영단어 조합을 통해서 어떤 맥락에서 다른단어들과 함께 사용할 수 있을지 힌트를 얻을 수 있는데요 영어가 모국어가 아니기 때문에 발생하는 실수를 줄일 수 있겠지요. 찾고싶은 단어를 중앙에 적고, 앞뒤로 몇개의 단어조합을 보고싶은지 설정하면 됩니다. 이때 어떤 사전의 예문을 볼지도 함께 설정할 수 있습니다. benefit이 noun으로 사용된 단어조합을 보고싶은데 이때 _________ benefit 의 조합을 보고싶어. 하고 입력을..
팩토리얼을 파이썬으로 구할 수 있는 방법은 여러가n지가 있는데요 그중에서도 재귀함수를 활용하면 간단하게 구할 수 있습니다. 팩토리얼은 정수 N이 주어졌을때 N에서 1씩 작아지는 수를 곱해줘야하는데요 factorial(N) = N! = N(N-1)(N-2)* · · · *3*2*1 반대로 생각하면 1부터 그 수가 N이 될 때까지 1씩 커지면서 곱해도 됩니다. factorial(N) = N! = 1*2*3* · · · *(N-2)(N-1)N 물론 1이나 1보다 작은경우에는 바로 1을 반환해야합니다. 물론 실전에서는 math모듈의 factorial()을 사용하는것이 안전하고 빠릅니다. > import math > math.factorial(3) 6 팩토리얼 재귀함수를 사용하면 쉽게 팩토리얼 함수를 만들수 있는..
보통 짝수와 홀수번호를 찾으려고 하면 If 조건문을 이용하게 됩니다. 2로 나누어 나머지가 1이면 홀수, 나머지가 0이면 짝수인 방법으로 말이죠. s = input() if s%2==1: print('홀수입니다') else : print('짝수입니다') 이런 방법이 가장 직관적이고, 간단할 수 도 있지만 더욱 간단한 방법으로 짝수번째, 홀수번째 인자를 가져올수 있는 방법이 있습니다. > s = [0,1,2,3,4,5,6,7,8,9] > print(s[::2]) [0, 2, 4, 6, 8] [::2]를 사용하는것인데요. 여기서 [::2]는 [0::2]와 같습니다. [A::B] 뜻은 A번째 부터 시작해서 B 단위로 스킵한다고 볼 수 있습니다. > s = [0,1,2,3,4,5,6,7,8,9] > print(..
한개의 인수를 받아서 다음 단계로 넘어가는것은 쉽습니다. 그리고 매번 두개의 인수를 받아서 분석을 하는것도 쉽지요. 하지만 그 인수의 개수가 몇개가 될지 모르는 상황이라면? 한개일때, 두개일때, 세개일때 , , , 5조 5억개일 경우까지 모두 경우를 나누어 프로그램을 짜는것은 있을 수 없습니다.. 이럴때, 인수를 받아야 하지만 그 갯수가 정해져 있지 않는 경우 해결할수 있는 방법이 있습니다. 인자를 받을때 앞에 * 표시를 추가해주면 됩니다. def multiple_args(*args): for arg in args: print arg > multiple_args('a','b') a b > multiple_args('a','b','c','d') a b c d 만일 *args를 적용하지못하고 하나의 인수를 ..
파이썬으로도 Object-Oriented programming(객체지향 프로그래밍)을 할 수 있는데요 Class를 사용하기 위한 기본적인 개념을 정리했습니다. self self는 class의 instance를 가리킵니다. self의 id와, instance의 id 값이 같게 지정된것을 확인하면 이해할 수 있습니다. 1 2 3 4 5 6 class WhatIsSelf: def __init__(self): print 'self:', id(self) w = WhatIsSelf() print 'instance:', id(w) cs self: 4417518624 instance: 4417518624 __init__ method init은 initialize method(초기화 메서드)를 말합니다. class를 생..
코로나19 상황에서 안정화에 진입한 국가는 어떤 국가가 있는지 알아보는 그래프를 그려보려고 합니다. 각 국가의 새로운 확진자의 수와 누적 확진자의 로그값을 이용하여 새로운 확진자가 감소하는, 즉 점차 안정화가 진행되는 국가는 어떤 국가가 있는지 알 수 있는 다음과 같은 그래프가 이번 포스팅의 목표입니다. # 이번 포스팅에서 완성하고자 하는 그래프 # 데이터 준비 > mydata_tb %>% dim [1] 19448 13 > mydata_tb$Country %>% + unique %>% + length [1] 187 > mydata_tb$Date %>% + max [1] "2020-05-04" 지난 포스팅과 같이 데이터를 다운받습니다. 2020-05-04 기준으로 187개 국가의 데이터가 받아졌습니다. >..
round()를 이용하면 반올림을 간단하게 해결 할 수 있습니다. 그 이외에도 R에는 올림과 내림을 간단히 할 수 있는 기본 함수가 있습니다. 우선 rnorm()을 이용해서 연습데이터를 생성해줍니다. 소숫점 아래 6자리까지 나오는 5개의 숫자를 생성했습니다. > numbers [1] -6.56710714 -0.09336418 -8.42598276 5.85306437 -2.28577976 ceiling()을 이용하면 올림을, > ceiling(numbers) [1] -6 0 -8 6 -2 floor()을 이용하면 내림을 할 수 있습니다. > floor(numbers) [1] -7 -1 -9 5 -3
소숫점 아래의 숫자를 반올림할때는 round()를 이용하면 간단하게 해결 할 수 있습니다. (올림과 내림을 하는 방법은 여기를 클릭) 우선 rnorm()을 이용해서 연습데이터를 생성해줍니다. 소숫점 아래 6자리까지 나오는 5개의 숫자를 생성했습니다. > numbers numbers [1] -1.848473 -7.264633 -9.627938 5.445361 1.999674 여기에서 round()를 기본으로 사용하면 소수부분이 모두 반올림되는것을 확인 할 수 있는데요, 거기에서 원하는 자릿수를 함께 입력해주면 반올림 위치가 변경되는것을 확인 할 수 있습니다. > round(numbers) [1] -2 -7 -10 5 2 > round(numbers,1) [1] -1.8 -7.3 -9.6 5.4 2.0 > ..
지난 포스팅에 준비해둔 데이터를 이용해서 우리나라의 코로나 진행 상황을 한눈에 볼 수 있는 그래프를 그려보려고합니다. 날짜의 흐름에 따라 Active, Cured(Recovered), Death 수를 쌓아서, 점차 나아지는 상황을 시각화 해보겠습니다. 분석에 사용할 데이터 > mydata_tb_Korea % subset(mydata_tb$Country=='Korea, South') > mydata_tb_Korea %>% tail Date Country Confirmed Recovered Deaths Date.no Active Confirmed.new.day Recovered.new.day Deaths.new.day Confirmed.new.week Recovered.new.week Deaths.new.w..
지난 포스팅에서는 COVID-19가 무엇인지에대해서 적어보았는데요, 이번 포스팅에서는 데이터를 다운받고 준비하는 과정에 대해 이야기하려고합니다. 분석이나 시각화에 앞서 데이터를 손봐야하기 때문이죠 코로나19와 관련된 데이터는 다양한 기관에서 현재 제공을 해주고있습니다. 그중에서 저는 datahub의 covid-19 데이터를 받아서 사용을 했습니다. 데이터는 csv 파일의 다운로드 링크를 이용하면 R에서 바로 데이터를 받아 볼 수 있습니다. > mydata_raw mydata_raw %>% dim [1] 23496 8 > mydata_raw %>% head Date Country.Region Province.State Lat Long Confirmed Recovered Deaths 1 2020-01-22 ..
특정한 패턴에 맞는 단어를 추출하는 연습을 해보았습니다. 우선 연습데이터를 생성해줍니다. > fruits_names fruits_names [1] "name=apple_01" "name=orange_01" "name=orange_2" 간단하게 name=뒤에 과일 이름과 숫자가 연결된 형태를 만들었습니다. str_match를 이용해서 우선 원하는 패턴을 찾습니다. [:alpha:]는 알파벳을 인식하고, [:digit:]는 숫자를 인식합니다. 이때 [:alpha:] 뒤의 *는 해당 알파벳이 0개 이상을 인식하겠다는 의미입니다. 또한 [:digit:] 뒤의 +는 해당 숫자가 1개 이상 있을것이라는 의미입니다. > str_match(fruits_names, 'name=[:alpha:]*_[:digit:]+') ..
한글문서를 다루다보면 문장이 다음줄로 넘어가지 않고 끝났으면 좋겠지만 자간이 넓거나 칸이 좁아 그렇지 못한 경우가 있습니다. 그럴때 자간을 맞춰서 원하는 보고서를 작성할 수 있어야하는데요. 자간을 간단하게 넓히고 줄이는 단축키를 사용해봅시다. 자간 줄이기 Narrow Shift + Alt + n 자간 넓히기 Wide Shift + Alt + w 위와같이 한줄에 숫자가 다 들어오지 못하고 다음줄로 보기 안좋게 내려가있습니다 우선 수정이 필요한 구간을 지정해주고, Shift + Alt + n 을 몇번 눌러주면 한줄에 깔끔하게 들어오는 결과를 볼 수 있습니다.
- Total
- Today
- Yesterday
- geom_line
- plot
- 코로나바이러스
- for loop
- data
- coronavirus
- 숫자
- Command
- 파이썬
- comma
- Python
- Order
- visualizing
- 데이터
- Coding
- Visualization
- 엑셀
- Heatmap
- 팟빵
- BIOINFORMATICS
- hist
- 2진수
- r
- Excel
- format
- Cast
- RStudio
- SEQ
- geom_bar
- covid
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |