분류 전체보기
-
[Python] pandas 슬라이싱과 인덱싱언어/파이썬 & 장고 2022. 8. 22. 00:24
import pandas as pd data = pd.Series([0.25, 0.5, 0.75, 1.0], index=['a', 'b', 'c', 'd']) # 명시적인 인덱스로 슬라이싱 print(data['a':'c']) # a 0.25 # b 0.50 # c 0.75 # dtype: float64 # 암묵적 정수 인덱스로 슬라이싱 print(data[0:2]) # a 0.25 # b 0.50 # dtype: float64 pandas에서 슬라이싱이 많이 혼동을 일으킬 수 있습니다. 명시적인 정수 인덱스를 가지고 있다면 data[1]과 같은 인덱싱 연산은 명시적인 인덱스를 사용하겠지만, data[1:3] 같은 슬라이싱 연산은 파이썬 스타일의 암묵적 인덱스를 사용할 것입니다. import pandas..
-
[Python] pandas란 (series, dataframe, index 설명)언어/파이썬 & 장고 2022. 8. 21. 03:33
pandas는 numpy를 기반으로 만들어진 새로운 패키지로 DataFrame이라는 효율적인 자료구조를 제공합니다. DataFrame은 행과 열 레이블이 부착된 다차원 배열로 여러가지 타입의 데이터를 가질 수 있고 데이터 누락도 허용하고 있습니다. pandas는 편리한 스토리지 인터페이스와 데이터베이스 프레임워크, 스프레드시트 프로그램 사용자에게 익숙한 데이터 연산을 구현합니다. 데이터에 레이블을 붙이거나 누락딘 데이터로 작업하는 것과 같이 유연성이 필요한 작업과 요소 단위의 브로드캐스팅에 잘 매핑되지 않은 연산(그룹화, 피벗 등)을 하고자 하는 경우에는 numpy의 ndarray에서는 한계가 있습니다. pandas는 Series와 DataFrame 객체는 numpy 배열 구조를 기반으로 데이터 먼징(데..
-
[Python] numpy의 구조화된 배열언어/파이썬 & 장고 2022. 8. 15. 21:15
여러 사람에 대한 다양한 데이터(이름, 몸무게, 나이 등등)이 있고 이러한 데이터를 저장하는 방법은 다음처럼 각각의 배열로 저장할 수 있습니다. name = ['kim', 'lee', 'park'] age = [20, 30, 35] weight = [55.5, 70.0, 65.7] 3개의 리스트의 연관성이 없어서 단일 구조의 데이터로 저장한다면 더 자연스럽게 사용할 수 있습니다. 일반적으로는 dictionary 타입으로 생성해 사용하지만 좀 더 효율적인 사용법이나 연산을 위해 numpy로 생성해 보도록 합니다. name = ['kim', 'lee', 'park'] age = [20, 30, 35] weight = [55.5, 70.0, 65.7] import numpy as np data = np.zer..
-
[Python] python sort vs numpy sort언어/파이썬 & 장고 2022. 8. 15. 20:44
파이썬에서 리스트를 정렬하는 방법은 크게 내장 함수인 sort를 사용하는 것과 numpy 모듈의 sort를 사용해 진행할 수 있습니다. 방법은 다르지만 결과는 동일하게 정렬된 리스트를 받을 수 있는데 여기서 각 sort 함수의 이점을 설명해 봅니다. 일반적으로는 numpy의 sort 함수가 내장 sort 함수보다 효율적으로 동작합니다. numpy의 sort는 기본적으로 quick sort 알고리즘을 사용하지만 merge sort와 heap sort도 사용할 수 있습니다. 그렇다면 다음과 같은 조건으로 실제 테스트를 진행하여 속도 차이가 나는지 확인해보도록 합니다. import timeit import random import numpy as np TEST_SIZE = 1000000 array_ = [ra..
-
[Python] numpy 범용함수 (universal functions, ufunc)언어/파이썬 & 장고 2022. 8. 14. 22:19
numpy 배열의 연산은 빠르거나 느릴 수 있는데 연산을 빠르게 만드는 핵심은 벡터화(vectorized) 연산을 사용하는 것인데, 일반적으로 numby의 유니버설 함수 (universal functions, ufunc)를 통해 구현됩니다. 파이썬 루프는 느리다 파이썬은 타입이 유연하므로 수많은 작은 연산이 반복되는 상황에서 느립니다. 배열을 반복해서 각 요소를 조작하는 것을 예로 들면 느린 것을 볼 수 있습니다. import numpy as np # 난수 번호 고정 np.random.seed(0) def test(values): size = len(values) output = np.empty(size) for i, value in enumerate(values): output[i] = 1.0 / va..
-
[Python] list, array, numpy array 비교언어/파이썬 & 장고 2022. 8. 14. 21:42
파이썬에서 데이터를 담는 컨테이너 타입 중, list의 경우엔 선언을 크게 위 3가지로 나눌 수 있습니다. 각각의 형태와 장단점을 설명해 봅니다. list 기본적으로 사용할 수 있는 리스트는 동적 타이핑 덕분에 서로 다른 데이터 타입의 요소를 담을 수 있습니다. _list = [True, 3, "3", 3.3] [type(i) for i in _list] # [bool, int, str, float] 이러한 유연성에는 비용이 따르는데 리스트의 각 항목에 타입 정보와 참조 횟수, 기타 정보가 들어가야 합니다. 즉, 각 항목이 완전한 파이썬 객체인 것입니다. 모든 변수가 같은 타입인 경우 이 정보가 대부분 불필요하게 중복되므로 고정 타입 배열에 데이터를 저장하는 것이 더 효율적일 수 있습니다. array 데..
-
TF-IDF란?공부/데이터 2022. 8. 14. 18:28
TF-IDF (Term Frequency-Inverse Document Frequency)란 TF-IDF는 TF와 idf의 곱입니다. 2015년 한 조사에 따르면 전자도서관들이 텍스트 기반 추천시스템을 구축할 때 가장 많이쓰는 것이 이 tf-idf라고 하며, 그 비율은 83%에 이른다고 합니다. 검색엔진에서 관련성 순위를 매길때 자주 이용되며, 문서 요약 등에서도 자주 쓰인다고 합니다. 관련성 순위를 계산할 때 쓸수있는 가장 단순한 방법은 각 문서마다 이용자가 입력한 단어들의 tf-idf 값을 계산한 뒤 큰 순서대로 우선순위로 표시하는 것입니다. TF (Term Frenquency) 1개의 문서 안에서 특정 단어의 등장 빈도를 의미 문장을 단어로 나누고 전체 단어수가 얼마나 사용됐는지를 파악해 문서의 종..
-
[Git] 특정 브랜치에서 main(master) 브랜치 merge(push) 막기저장소/git 2022. 7. 3. 15:45
특정 브랜치에서 main 또는 master 브랜치에 merge 또는 push되는 것을 막는 방법을 설명합니다. 아래 설명에서는 develop → main이 되지 않도록 예시를 듭니다. github branch protection rule 추가 repository에서 Settings → Branches에 들어간 다음 Branch protection rules 에서 Add rule 을 클릭합니다. 그 다음, Branch name pattern에 아래의 룰을 적용할 패턴을 추가하고 (여기서는 main 브랜치명을 그대로 적습니다.) Require a pull request before merging 을 체크합니다. 체크하면 하위 리스트가 나오게 되는데 Require approvals 를 체크해제 하지 않고 몇명..
-
EDA(Exploratory Data Analysis)란공부/데이터 2022. 7. 2. 23:05
EDA(Exploratory Data Analysis, 탐색적 데이터 분석)는데이터 분석 과정에 대한 개념으로 데이터를 분석하고 결과를 내는 과정에 있어서 지속적으로 해당 데이터에 대한 탐색과 이해를 기본으로 가져야 한다는 것을 의미합니다. EDA를 해야 하는 이유 데이터의 분포 및 값을 검토함으로써 데이터가 표현하는 현상을 더 잘 이해하고 데이터에 대한 잠재적인 문제를 발견할 수 있습니다. 이를 통해, 본격적인 분석에 들어가기에 앞서 데이터의 수집을 결정할 수 있습니다. 또한 다양한 각도에서 살펴보는 과정을 통해 문제 정의 단계에서 미쳐 발생하지 못했을 다양한 패턴을 발견하고 이를 바탕으로 기존의 가설을 수정하거나 새로운 가설을 세울 수 있습니다. EDA 과정 분석의 목적과 여기에 필요한 데이터 및 r..
-
prophet 모델공부/데이터 2022. 7. 2. 21:49
Prophet은 시계열 데이터를 모델링하기 위한 파이썬 또는 R 모듈입니다. 모델링 할 수 있다 라는 내용을 쉽게 설명하면 시계열 데이터 내 순차적 데이터를 모방할 수 있는 블랙박스를 구성할 수 있다라는 의미로 생각할 수 있습니다. 블랙박스는 경우에 따라서 수백, 수천만개의 파라미터를 포함하고 있습니다. 시계열 데이터를 예측(모델링)하는 방법론에는 머신러닝 방법론 그리고 고전적인 기법 ARIMA가 있습니다. Prophet은 머신러닝 기법은 아니며, ARIMA라고 하는 알고리즘 방법론을 응용하고 있습니다. ARIMA를 이용하면 계절마다의 반복성이나 여름철에 증가하는 전기 사용료를 모델링할 수 있습니다. Prophet 은 한층 더 진보적인 방법으로 트렌드와 주기적 특성뿐 아니라 예외적이고 이벤트와 같은 휴가..