✔ Python

[Python] 리스트값 데이터 합치기 _np.column_stack()

  • -
주제: 리스트 값 데이터 합치기
작성: 2023-03-11


만약 3과목(언어, 수학, 영어)시험결과를 과목별로 4명의 학생(A,B,C,D) 순서대로 값을 가지고 있는 리스트가 있다고 해봅시다. 하지만, 과목의 평균이 아닌, 학생별 평균이 궁금해서 데이터셋을 변경하려고 한다면 어떻게 할 수 있을까요? 값이 많지않으니 단순하게 직접 값을 이동해서 평균을 구해볼 수 있을 수 있습니다. 하지만, 학생수가 4명이 아니라 100명이라면, 또는 과목이 3개 아닌 더 많은 과목이라면 여러분은 이를 쉽게 계산할 수 있을까요?

의도

위에서 언급한 내용들을 도식화해보도록 하겠습니다. 현재, 필자가 가지고 있는 데이터는 좌측(왼쪽) 그림과 같습니다. 과목별로 4명의 학생(A,B,C,D) 순서대로 값을 가지고 있습니다. 하지만, 이를 우측(오른쪽) 그림과 같이 학생별로 데이터 포맷을 바꾸고 싶은 상황입니다.

(좌) 현재 가지고 있는 데이터 / (우) 필자가 표현하고 싶은 데이터 형식

 

구현 - w/o 라이브러리

우선, 라이브러리를 사용하지않고 리스트 표현식으로 구현해보도록 하겠습니다.

kors = [100, 80, 40, 55]
engs = [60, 80, 60, 100]
maths = [70, 80, 68, 60]

score = [[ks, es, ms] for ks, es, ms in zip(kors, engs, maths)]
print(score)

구현 - w/ 라이브러리

그렇다면, numpy 라이브러리 사용하여 구현해보도록 하겠습니다.

import numpy as np

kors = [100, 80, 40, 55]
engs = [60, 80, 60, 100]
maths = [70, 80, 68, 60]

score = np.column_stack((kors,engs, maths))
print(score)

 

라이브러리 사용여부에 따른 연산속도 확인 - %%time

최적의 코드는 비교적 코드가 간단하며, 이해하기 쉬운 코드입니다. 더불어, 연산속도가 중요합니다.

그렇다면, 두 셀의 연산속도를 확인해보도록 하겠습니다. 

%%time

확실히 라이브러리를 활용하지않고 "리스트 표현식"으로으로 한 경우, 연산속도가 빠르다는걸 확인할 수 있습니다.

예시

위와 동일하게 물고기의 길이와 무게 데이터가 각각있다고 가정할때,
각각의 물고기의 길이와 무게 값을 리스트로 반출하는 데이터셋을 만들어보도록 하겠습니다.

fish_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0, 9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]

fish_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0, 6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]

방법 1 - 리스트 표현식

fish_data = [[l, w] for l, w in zip(fish_length, fish_weight)]
print(fish_data)

방법 2 - np.column_stack

fish_data = np.column_stack((fish_length, fish_weight))
print(fish_data)


Reference

  1. 행과 열이 아직도 헷갈리다면 : 2023.02.02 - [✔ Python/Python] - [Python] 행과 열
 

[Python] 행과 열

주제: 행과 열 구별하기 작성: 2023-02-02 안녕하세요, WSCODE 루카스입니다. 4x3 행렬이 왼쪽인지 오른쪽인지 아직도 헷갈리신다면, 해당 글을 읽고 나면 더 이상은 헷갈릴 일이 없으실 겁니다. 1. 행

wscode.tistory.com


 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.