Python

    [Python] 공공데이터 오픈 API를 활용한 기상청 ASOS 데이터 파싱하기

    * 해당 글은 본인 스스로 정리하는 글이며 자세한 과정에 대해서는 다루고 있지 않음. 공공데이터 공공데이터 포털에서는 국가 보유 데이터를 『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방 중이며 공공데이터(Dataset)와 Open API로 제공하고 있다. 공공데이터 (Dataset) 일일이 내려받기를 통해 다운로드 가능하다. 파일 안에 자료가 정해져 있기 때문에 일단 내려받은 후 필요한 데이터만 가공하여 사용 가능하다. 활용 신청 과정이 불필요하므로 내려받기가 간편하다. 아무래도 일일이 다운받다가 착각으로 인한 실수(?)를 할 가능성이 존재한다. 공공데이터 Open API Open API란? 누구나 사용할 수 있도록 공개된 API(Open Application Program..

    [Python] plotnine 모듈의 ggplot 출력 시 한글 깨짐 현상 해결

    분석 환경 Google Colab pro의 구성환경 Python Version : 3.7.10 상황 plotnine 모듈의 ggplot 을 출력할 때 한글이 깨져서 나오는 경우임. 한글이 제대로 출력되게끔 하고 싶은 상황. 예시 위에 보이는 그래프와 같이 한글이 네모 박스 형태로 깨져서 출력됨을 확인할 수 있다. 마치 matplotlib 모듈의 pyplot 으로 그래프를 그렸을 때 한글이 깨지는 형태와 매우 비슷했다. 시행착오 형태가 matplotlib 모듈에서 한글이 깨지는 형태와 비슷하다고 생각하여 matplotlib 한글 폰트 깨짐 현상 해결을 위한 코드를 실행 후 다시 출력해보았다. 하지만 한글이 네모 박스로 출력되는 상황은 여전했다. Plotnine 모듈의 ggplot 에서 한글 폰트가 깨져서 ..

    [Python] 유용한 문자열 함수들

    ※ 해당 글은 dojang.io/mod/page/view.php?id=2299을 참고하여 작성하였습니다. 저의 기준 사용 빈도가 높은 함수들 replace >>> 'sample setence'.replace(' ','_') 'sample_setence' split >>> 'sample one two three four five'.split() ['sample', 'one', 'two', 'three', 'four', 'five'] >>> 'one, two, three, four, five'.split(', ') ['one', 'two', 'three', 'four', 'five'] join >>> ' '.join(['one','two','three','four','five']) 'one two three..

    [Python] 2차원 리스트를 1차원 리스트로 만들기

    코드 2차원 리스트 >>> list_ = [] >>> for i in range(4) : >>> list_.append([j for j in range(i)]) >>> list_ [[], [0], [0, 1], [0, 1, 2]] 1차원 리스트로 만드는 방법들 방법 1 - sum 함수 >>> answer = sum(list_, []) [0, 0, 1, 0, 1, 2] 방법 2 - itertools.chain >>> import itertools >>> list(itertools.chain.from_iterable(list_)) [0, 0, 1, 0, 1, 2] 방법 3 - itertools와 unpacking >>> import itertools >>> list(itertools.chain(*list_)..

    [Python] 병렬처리, Multiprocessing

    병렬처리의 필요성 요즘같이 대용량 데이터를 처리하는 과정에서 병렬처리 활용은 선택이 아닌 필수가 되어버렸다. 극단적으로 말하자면 코드를 어떻게 짜느냐에 따라 똑같은 작업이라도 1시간이 걸릴 수 있고, 단 1초 만에 완료될 수 도 있다. 코드를 돌려놓고 하염없이 기다리기보다 병렬처리를 배워서 적용하는 시간이 오히려 더 빠르다. 그리고 추후에도 잘 응용하여 사용함으로써 데이터 분석가의 역량을 키워 나갈 수 있다. 하드웨어가 심각하게 싸지지 않는 한 앞으로 더더욱 연산속도와 메모리 관리는 중요한 이슈가 될 것이라고 생각한다. Multiprocessing multiprocessing 모듈은 threading 모듈과 유사한 API를 사용하여 *프로세스 스포닝(spawning)을 지원하는 패키지이다. multipr..

    [Python] 한글 내용이 같지만 다르다고 인식하는 경우

    분석 환경 Google Colab pro의 구성환경 Python Version : 3.7.10 상황 눈으로 볼 땐 두 한글 변수의 값이 같지만 비교 연산자 실행 시 다르다고 인식하는 상황. 더 나아가 두 변수를 같게끔 인식 시키고 싶은 상황. >>> # 두 변수 확인 >>> print('str1 : ' + temp_str1) >>> print('str2 : ' + temp_str2) >>> # 두 변수가 같은지 확인 >>> temp_str1 == temp_str2 str1 : 전국보행자전용도로표준데이터 str2 : 전국보행자전용도로표준데이터 False 분명 눈으로는 두 변수가 정확히 일치하는 것처럼 보이지만 두 변수가 같지 않다고 인식한다. 왜 그런지에 대해 알아보고자..

    [Python] K-Fold 로 데이터 분할하기

    데이콘이나 캐글 같은 경진대회에서 어떤 예측값을 제출하느냐에 따라 순위가 몇 단계나 출렁이곤 한다. 그렇기 때문에 어떤 데이터에 대해서도 견고한 예측값을 제공하는 모델을 선택하는 것이 중요한 이슈라고 할 수 있다. 모델을 어떻게 학습하냐에 따라 예측값도 천차만별이다. 좋은 결과를 위해서는 과적합, 과소 적합된 모델보다 균형 있게 학습된 모델을 선택하는 것이 가장 중요할 것이다. 쉬운 이해를 돕기 위해 인간으로 비유하자면 현재의 고정된 관념을 너무 학습하여 미래의 현상에도 고정 관념에 사로잡힌 사람 - 과적합 현재도 잘 이해하지 못하고 있으며 미래의 현상도 잘 이해하지 못하는 사람 - 과소적합 현재도 잘 이해하며 미래의 현상도 잘 예측하는 사람 - 일반화 K-fold 교차검증을 통해 비교적 일반화(gene..

    [Python] Colab 에서 matplotlib 한글 폰트 정상 출력시키는 코드

    matplotlib를 통한 한글 정상 출력 방법 (in colab) Colab 상에서 matplotlib를 통한 시각화를 할 때 한글 폰트를 정상 출력하기 위한 방법을 두 가지로 설명드리겠습니다. 방법 1.과 방법 2.는 같은 방식이지만 차이점은 코드로 런타임 재시작을 수행하냐, 노트북의 도구 메뉴를 이용하여 런타임 재시작을 하냐의 차이입니다. 편하신 대로 사용하시면 되겠습니다. 저도 기존에는 방법 1.을 통해 한글 폰트를 설치하고 적용하였지만 방법 2.를 알고나서부터는 방법 2.로 한글 폰트를 적용해주고 있습니다. 방법 1. 설명 먼저 아래의 코드를 실행한 후, Notebook의 런타임 메뉴에서 런타임 다시 시작 클릭으로 런타임 재시작을 진행합니다. (런타임 다시 시작이라는 경고 문구가 떠도 예를 클릭..

    [Python] 모듈의 버전을 확인하는 습관

    필요성 데이터 분석 시, 잘 실행되던 코드가 오류로 실행이 되지 않는 경우가 종종 있다. 예측 결괏값이 가장 좋았던 코드로 점수를 복원하고자 할 때 문제가 생길 수 있다. 그렇기 때문에 그 당시의 분석 환경을 기록해두어야 할 필요가 있다고 생각한다. 최신 모듈일수록 버전이 중요 계속해서 발전해나가고 있는 최신 모듈의 경우는 비교적 급변하기 때문이다. (종종 버전 충돌로 실행이 안되면 검색해야 하는 번거로움이 발생) 습관 들이기 1) 모듈 버전 확인하기 구글링으로 애써 찾은 코드가 실행이 안된다면 버전 문제일 가능성이 크다. 내 코드의 모듈 버전은 버전 문제를 일으키지 않도록 잘 기억해두자. # 예시 import tensorflow as tf import tensorflow_addons as tfa imp..

    [Python] datetime 모듈

    R 에는 lubridate package가 있듯이, Python 에는 datetime module모듈이 있다. datetime module 날짜와 시간 데이터를 다루는데에 유용한 파이썬 스탠다드 라이브러리이다. timedelta : 기간을 표현하기 위해 사용 timezone : 시간대를 표현하기 위해 사용 date : 날짜를 표현하기 위해 사용 time : 시간을 표현하기 위해 사용 datetime : 날짜와 시간을 동시에 표현하기 위해 사용 hh:mm:ss으로 형태 변경 사용자 함수 # 시간 표시 함수 def format_time(elapsed): # 반올림 elapsed_rounded = int(round((elapsed))) # hh:mm:ss으로 형태 변경 return str(datetime.ti..