주제: 리스트 값 데이터 합치기
작성: 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
- 행과 열이 아직도 헷갈리다면 : 2023.02.02 - [✔ Python/Python] - [Python] 행과 열
'Python' 카테고리의 다른 글
[Python] 자주 헷갈리는 sort와 sorted의 차이점 (0) | 2023.07.12 |
---|---|
[Python] 파일구조 시각화하는 방법 [코드/라이브러리 활용] (4) | 2023.06.24 |
[Python] 파이썬의 자료형 변환 이해하기 (0) | 2023.03.02 |
[오류] TypeError: 'int' object is not callable (0) | 2023.03.02 |
[Python] 설치된 Python 버전 확인하는 2가지 방법 (4) | 2023.03.01 |
주제: 리스트 값 데이터 합치기
작성: 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
- 행과 열이 아직도 헷갈리다면 : 2023.02.02 - [✔ Python/Python] - [Python] 행과 열
'Python' 카테고리의 다른 글
[Python] 자주 헷갈리는 sort와 sorted의 차이점 (0) | 2023.07.12 |
---|---|
[Python] 파일구조 시각화하는 방법 [코드/라이브러리 활용] (4) | 2023.06.24 |
[Python] 파이썬의 자료형 변환 이해하기 (0) | 2023.03.02 |
[오류] TypeError: 'int' object is not callable (0) | 2023.03.02 |
[Python] 설치된 Python 버전 확인하는 2가지 방법 (4) | 2023.03.01 |