-
파이썬 데이터사이언스 핸드북 2 장 - 구조화된 데이터데이터 분석/NumPy 2020. 5. 31. 14:35
NumPy 에서 복합적인 이종 데이터를 효율적으로 저장하기 위한 구조화된 배열과 레코드 배열에 관해 설명하겠다. 이후 Pandas DataFrame 을 사용할 때에도 도움이 된다.
NumPy 배열은 데이터 타입이 1개이다.
하지만 이렇게 하면 이 세 배열이 서로 연관돼 있음을 알 수 없다. 이 데이터를 모두 단일 구조에 저장할 수 있다면 더 자연스러울 것이다. NumPy 는 복합 데이터 타입을 가지는 배열인 구조화된 배열을 통해 이런 경우를 처리할 수 있다.
구조화된 데이터, 구조화된 배열
복합 데이터 타입을 가지는 빈 컨테이너 배열을 만들었다. key-value 쌍으로 이루어진 딕셔너리 방식으로 지정했다.
'U10' 은 최대 길이 10을 갖는 유니코드 문자열이고,
'i4' 는 4바이트 (즉, 32비트) 정수, 'f8' 는 8바이트 (즉, 64비트) 부동 소수점을 의미한다.빈 컨테이너 배열에 값을 할당한다.
구조화된 배열의 편리한 점 중 하나는 값을 인덱스나 이름으로 참조할 수 있다는 것이다. 부울마스킹을 통해 좀 더 복잡한 연산도 할 수 있다.
고급 복합 타입
각 요소가 값의 배열이나 행렬을 담고 있는 타입을 만들 수 있다. 여기서는 3x3 부동 소수점 행렬로 구성된 mat 컴포넌트를 가지는 데이터 타입을 만들 것이다.
X 는 1차원배열로, 배열 X 의 각 요소는 id 와 3x3 행렬로 구성된다.
NumPy dtype 이 C 구조체 (structure) 정의에 직접 매핑되어 적절하게 작성된 C 프로그램에서 배열 내용을 포함하는 버퍼에 접근할 수 있기 때문이다. 구조화된 데이터를 조작하는 C 나 포트란 라이브러리에 파이썬 인터페이스를 작성한다면 아마 구조화된 배열이 상당히 유용할 것이다.
레코드 배열
구조화된 배열에 대해서 레코드배열로 변환해서 attribute 로 접근할 수 있다.
선택적 편의사항이라고 한다. 아직은 왜 써야하는지 모르겠어서 더 파지는 않았다. (나중에 필요하다고 생각되면 돌아와야지)
다른 블로거 분의 레코드 배열 정리: https://kongdols-room.tistory.com/63
구조화된 데이터를 일상적으로 사용하기에는 Pandas 패키지가 훨씬 더 낫다고 한다.
'데이터 분석 > NumPy' 카테고리의 다른 글
파이썬 데이터사이언스 핸드북 2 장 - 정렬과 파티셔닝 (1) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 팬시 인덱싱 (0) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 비교연산, 논리연산으로 부울배열을 만들고 마스킹 연산하자. (0) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 비교, 마스크, 부울 로직 (0) 2020.05.31 파이썬 데이터사이언스 핸드북 2 장 - 배열 연산: 브로드캐스팅 (0) 2020.05.31