-
파이썬 데이터사이언스 핸드북 2 장 - 구조화된 데이터데이터 분석/NumPy 2020. 5. 31. 14:35
NumPy 에서 복합적인 이종 데이터를 효율적으로 저장하기 위한 구조화된 배열과 레코드 배열에 관해 설명하겠다. 이후 Pandas DataFrame 을 사용할 때에도 도움이 된다. NumPy 배열은 데이터 타입이 1개이다. 하지만 이렇게 하면 이 세 배열이 서로 연관돼 있음을 알 수 없다. 이 데이터를 모두 단일 구조에 저장할 수 있다면 더 자연스러울 것이다. NumPy 는 복합 데이터 타입을 가지는 배열인 구조화된 배열을 통해 이런 경우를 처리할 수 있다. 구조화된 데이터, 구조화된 배열 복합 데이터 타입을 가지는 빈 컨테이너 배열을 만들었다. key-value 쌍으로 이루어진 딕셔너리 방식으로 지정했다. 'U10' 은 최대 길이 10을 갖는 유니코드 문자열이고, 'i4' 는 4바이트 (즉, 32비트)..
-
파이썬 데이터사이언스 핸드북 2 장 - 정렬과 파티셔닝데이터 분석/NumPy 2020. 5. 31. 14:35
NumPy 배열의 값을 정렬하는 알고리즘: 삽입 정렬 (insertion sorts), 선택 정렬 (selection sorts), 병합 정렬 (merge sorts), 퀵 정렬 (quick sorts), 버블 정렬 (bubble sorts) 등이 있지만... 실제로 응용기술만 알면 되는 우리는 이 원리를 다 알 피요는 없다. Numpy 의 정렬 메서드가 효율적인 배열을 알아서 수행해주기 때문이다 +___+b 파이썬 배열 알고리즘 맛보기 - Selection Sort 간단한 선택 정렬은 리스트의 최솟값을 반복적으로 찾아서 리스트가 정렬될 때까지 값을 교환한다. 즉 왼쪽부터 원소를 한 개 씩 검사한다. N 개의 값을 가진 리스트의 경우 N 번 반복해야 한다. Big-O 표기법 기준 O(N)* 아직 익숙하지..
-
파이썬 데이터사이언스 핸드북 2 장 - 팬시 인덱싱데이터 분석/NumPy 2020. 5. 31. 14:34
배열의 일부에 접근하고 수정하는 법 중 팬시 인덱싱에 대해 포스팅한다. - 간단 인덱스 arr[0] - 슬라이싱 arr[:5] - 부울 마스크 arr[arr>0] - 팬시 인덱싱 arr[[3,7,2]] 팬시 인덱싱 팬시 인덱싱은 단순 인덱싱과 비슷하지만, 단일 스칼라 대신 인덱스 배열을 전달한다. 이로써 복잡한 배열 값의 하위 집합에 매우 빠르게 접근해 그것을 수정할 수 있다. 한 번에 여러 배열 요소에 접근하기 위해 인덱스의 배열을 전달한다. (...) 팬시 인덱싱을 이용하면 결과의 형상이 인덱싱 대상 배열의 형상이 아니라, 인덱스 배열의 형상을 반영한다. 표준 인덱싱을 사용할 때와 마찬가지로 첫 번째 인덱스는 행을 말하며, 두 번째 인덱스는 열을 말한다. 팬시 인덱싱에서 인덱스 쌍을 만드는 것도 브로..
-
파이썬 데이터사이언스 핸드북 2 장 - 비교연산, 논리연산으로 부울배열을 만들고 마스킹 연산하자.데이터 분석/NumPy 2020. 5. 31. 13:16
비교연산자와 논리연산자를 모른다면 더보기 클릭 비교연산자, 논리연산자 각각에 해당하는 ufunc 가 있다. 더보기 비교연산자 +, -, *, / 산술연산자 외에도 비교연산자도 활용할 수 있다. 물론 N차원 배열에 대해서도 비교연산자를 사용할 수 있다. 물론 N차원 배열에 대해서도 비교연산자를 사용할 수 있다. 논리 연산자 부울 연산자 여러 조건을 조합하고 싶다면, 파이썬의 비트 단위 논리 연산자 &, |, ^, ~ 를 사용할 수 있다. 표준 산술 연산자와 마찬가지로 NumPy 는 이 연산자를 일반적으로 부울 배열의 요소 단위로 동작하는 유니버셜 함수로 오버로딩한다. &/| 를 정수에 사용할 때 표현식은 그 요소의 비트에 대해 동작하므로 그 숫자를 구성하는 개별 비트 단위로 and 와 or 을 적용하는 것..
-
파이썬 데이터사이언스 핸드북 2 장 - 비교, 마스크, 부울 로직데이터 분석/NumPy 2020. 5. 31. 09:39
NumPy 배열 내의 값을 검사하고 조작하는 부울 마스크를 사용하는 법을 다룬다. 마스킹은 특정 기준에 따라 배열의 값을 추출하거나 수정, 계산, 조작할 때 사용한다. 특정 값을 모두 세거나 특정 임게치를 넘어서는 이상치를 모두 제거하려는 경우가 이에 해당한다. NumPy 에서 부울 마스킹은 종종 이러한 유형의 작업을 수행하기에 가장 효율적인 방법이다. 비교, 마스크, 부울로직 궁금한 정보를 조금씩 좁혀나가서 유의미한 데이터분석을 할 수 있다. 예제: 비온 날 세기 plt.hist(inches, 40) --- inches 배열에 대해서 40개로 범주화하여 히스토그램을 그린다. 40개 범주화했을 때 365일 중 245일이 0~ 0.04596457 첫번째 범주에 속하는 것을 알 수 있다. (비가 안온듯!) ..
-
파이썬 데이터사이언스 핸드북 2 장 - 배열 연산: 브로드캐스팅데이터 분석/NumPy 2020. 5. 31. 09:01
NumPy 는 Vectorization 벡터화된 연산으로 2가지 방식을 제공한다. - (Python 내장함수보다 빠른) NumPy 의 유니버셜 함수 Ufuncs 사용 [Ufuncs 포스트] - (피연산자를 동일한 형태로 맞추는) NumPy 의 브로드캐스팅 Broadcasting 사용 브로드캐스팅 소개 같은 크기의 배열에서 이항 연산은 배열의 요소 단위로 수행된다. 다른 크기의 배열에서 이항 연산은 브로드캐스팅 하여 같은 크기의 배열로 맞춘 후, 배열의 요소 단위로 연산한다. 브로드캐스팅 규칙 1. 두 배열의 차원 수가 다르면, 더 작은 수의 차원을 가진 배열 형상의 앞쪽(왼쪽) 을 1로 채운다. 2. 두 배열의 형상이 어떤 차원에서도 일치하지 않는다면, 해당 차원의 형상이 1인 배열이 다른 형상과 일치하..
-
파이썬 데이터사이언스 핸드북 2장 - Numpy 집계데이터 분석/NumPy 2020. 5. 24. 12:25
NumPy 집계가 빠르다!!! NumPy 배열에서 쓸 수 있는 빠른 내장 집계 함수 Python 내장함수 sum 과 NumPy 내장함수 sum 은 매우 유사하다. 그러나 NumPy 내장함수 sum 이 컴파일된 코드에서 실행되기 때문에 더 빠르다. min, max, sum 을 비롯한 다른 여러 NumPy 집계함수의 경우, 배열 객체 자체의 메서드를 사용하는 더 짧은 구문이 존재한다. NumPy 다차원 집계 NumPy 의 결과물은 Scalar 또는 NdArray 이다. 즉 Dimension 차원이란 개념을 가진다. 집계 연산의 보편적인 유형은 행이나 열을 기준으로 집계하는 것이다. 엑셀 스프레드시트를 떠올려보면 쉽다. 예를 들어 직원정보를 관리한다고 했을 때, 한 명의 직원에 대해서, 사번, 이름, 부서, ..
-
파이썬 데이터사이언스 핸드북 2 장 - NumPy 지수와 로그 함수데이터 분석/NumPy 2020. 5. 23. 22:20
지수함수 Exponential Function 출처 https://mathinsight.org/exponential_function The exponential function - Math Insight Overview of the exponential function The exponential function is one of the most important functions in mathematics (though it would have to admit that the linear function ranks even higher in importance). To form an exponential function, we let the indepe mathinsight.org 로그함수 Logari..