관리 메뉴

물 만날 물고기

[KNIME] Workflow - 각 행(인덱스)별 합계 컬럼 추가하기 본문

KNIME

[KNIME] Workflow - 각 행(인덱스)별 합계 컬럼 추가하기

Lung Fish 2023. 1. 23. 20:16

🔍 예상 검색어

더보기

# KNIME 각 행별 합계 구하기

# KNIME 각 인덱스별 합계 구하는 법

# KNIME 각 컬럼들 더해서 인덱스 합계 구하기

# KNIME 행 합계 구하기

# KNIME 인덱스 합계 구하기

# KNIME 시각화

# KNIME Unpivot

# KNIME Box-Plot (박스플랏)

# Column Aggregator

# Math Formula

# Column Expressions

# Unpivoting

# Conditional Box Plot


 해당 포스팅은 데이터 분석 솔루션 KNIME 을 이용하여 주어진 데이터의 각 행(인덱스)별로 합계를 계산 하여 컬럼을 추가하는 방법에 대하여 정리하였습니다. 

 

문제

 다음은 학생 10명의 수능 모의고사 성적을 임의로 생성한 샘플 데이터입니다. 다음과 같이 각 학생별로 모든 과목의 점수를 더하여 [총점]을 계산한 컬럼을 만들어보시오.

 

학생 10명의 수능 모의고사 총점 계산

 

 

▼ Workflow (사용 노드 : <Column Aggregator> , <Math Formula>, <Column Expressions> ) 

사용된 워크플로우는 다음과 같으며, 동일한 결과라도 각각 다른 방법으로 진행할 수 있으므로 참고하시기 바랍니다.

KNIME 인덱스별 컬럼 합계 추가하는 방법 (Workflow)

 

1. <Python Source> 노드를 이용하여 데이터 생성하기

 이번 샘플 데이터는 <Python Source> 노드를 이용하여 생성하였습니다. 이름을 만들기 위해서 Faker 모듈을 이용하였고, 점수는 random 모듈을 이용하여 생성하였습니다. 관련 코드는 아래 코드블럭을 참고하시기 바랍니다.

 

학생 10명의 수능 모의고사 데이터셋

 

<Python Source> 노드를 이용한 샘플 데이터 생성

import pandas as pd
from pandas import DataFrame

import random
from faker import Faker
# Create empty table
faker = Faker("ko_KR")

name = [faker.name() for i in range(10)]
kor = [random.randint(30, 100) for i in range(10)]
math = [random.randint(10, 100) for i in range(10)]
his = [random.randint(10, 50) for i in range(10)]
eng = [random.randint(40, 100) for i in range(10)]
che = [random.randint(10, 50) for i in range(10)]
che2 = [random.randint(10, 50) for i in range(10)]
lang = [random.randint(10, 50) for i in range(10)]

output_table = pd.DataFrame(
{"이름": name, 
"언어": kor, 
"수학": math, 
"외국어": eng, 
"한국사": his,
"화학1": che, 
"화학2": che2,
"제2외국어": lang} )

 

 

2. <Column Aggregator>를 이용한 컬럼 연산하기

2.1 <Column Aggregator>노드를 이용하여 총점 계산에 사용될 컬럼들을 선택하여 주고, option 에서는 컬럼에 적용할 연산방법을 선택하여 줍니다. 저는 총점을 계산할 예정이므로 Sum method를 선택하였고, 컬럼 이름은 총점으로 변경해주었습니다.

 

Column Aggregator 노드를 이용한 총점 계산

 

2.2 노드를 실행한 결과 [총점] 컬럼이 추가된 것을 확인할 수 있습니다.

 

Column Aggregator 노드 실행결과

 

 

3. <Math Formula>를 이용한 컬럼 연산하기

3.1 <Math Formula> 노드를 이용하여 [총점]이 계산될 수 있도록 Expression을 작성하고, Append Column 을 이용하여 추가할 컬럼명을 입력하고 실행합니다.

 

<Math Formula> 노드를 이용한 총점 계산

3.2 노드를 실행한 결과 [총점] 컬럼이 추가된 것을 확인할 수 있습니다.

 

<Math Formula> 노드 실행결과

 

4. <Column Expressions>를 이용한 컬럼 연산하기

4.1 <Column Expressions> 노드를 실행하여, 학생별 총점이 계산될 수 있도록 Expression 수식을 작성합니다. TypeOutput Column 을 설정하여 [총점] 컬럼을 추가할 수 있습니다.

 

<Column Expressions> 노드를 이용한 총점 계산

 

5. 추가 시각화 ( <Unpivoting> 노드 + <Conditional Box Plot> 노드)

5.1 <Unpivoting> 노드를 이용하여 각 컬럼에 있는 과목별 점수들을 Unpivoting합니다. 노드를 실행하게 되면 7개 컬럼으로 되어 있었던 과목 및 점수가 2개의 컬럼으로 정리된 것을 확인할 수 있습니다.

 

 

 

5.2 <Conditional Box Plot> 노드를 이용하여 시각화를 진행합니다. Category Columns 옵션에는 범주화된 값이 있는 컬럼을 선택하고, Selected Column에는 ColumnValues를 선택하고 실행합니다. 

 

Unpivoting 노드 사용방법

 

5.3 설정을 완료하여 노드를 실행하면 아래와 같이 시각화된 Box-plot 차트를 확인할 수 있습니다.

 

KNIME Box-Plot

 

  이상으로 각 행(인덱스)별 컬럼의 합계를 구하는 방법에 대해서 확인하였습니다. 세가지 방법 중 본인 워크플로우에 적절한 방법을 사용하시면 좋을 것 같습니다

 

 그 중 <Column Aggregator> 노드는 컬럼들의 합계를 구하는 것 외에도 다양한 Method 선택을 통해서 컬럼간의 연산을 진행할 수 있습니다. 다음에 기회가 된다면 각 인덱스별 컬럼간 평균, 분산 등을 구해보는 과제들에 대해서도 정리해보겠습니다.

 

 

# 참고 자료

Column Aggregator – KNIME Community Hub

 

Column Aggregator

Groups the selected columns per row and aggregates their cells using the selected aggregation method. To change the name of the new created aggregation column …

hub.knime.com

How to Sum Multiple Columns - KNIME Analytics Platform - KNIME Community Forum

 

How to Sum Multiple Columns

Hi guys, I’m trying to switch our analyzing platform from SPSS to KNIME so I’m still pretty new to KNIME. I’m trying to find something similar to a @fileds between function on KNIME. I want to sum up multiple columns, not just the sum of a single col

forum.knime.com