일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 판다스
- 물 만날 물고기
- 프로그래머스
- sklearn
- sorted()
- 데이터분석솔루션
- leetcode
- KNIME
- 데이터프레임
- pandas
- colab
- python
- pyinstaller
- 태블로
- Revising the Select Query II
- HackerRank
- power-bi
- 코딩테스트
- KNIME 데이터 분석
- 텐서플로우
- Tableau
- 코랩
- 리스트
- DB
- 물만날물고기
- 해커랭크
- 파이썬
- SQL
- MYSQL
- 나임
- Today
- Total
물 만날 물고기
[KNIME] Workflow - 데이터셋에 특정 문자열로 컬럼을 추가하고 싶을 때 본문
🔍 예상 검색어
# KNIME 데이터셋에 특정 문자열 컬럼 추가하기
# KNIME 솔루션 특정값으로 컬럼만들기
# String Manipulation Node
# Rule Engine Node
# Column Expressions Node
# Python Script Node
본 포스팅은 데이터 분석 솔루션 KNIME을 이용하여 기존 데이터셋에 특정 문자열로 컬럼을 추가하고 싶을 때 사용할 수 있는 노드 및 방법에 대하여 정리하였습니다. python 판다스를 이용했을 때, 코드 한줄이면 되는 쉬운 과정이지만, KNIME에서는 다양한 방법으로 진행할 수 있었으므로 참고하시기 바랍니다.
아래 UCI 레드와인 데이터셋 샘플이 있습니다. 그런데 사실 와인 품질 데이터셋은 레드와인과 화이트와인 두 가지 데이터셋이 있는데 현재 데이터셋에는 화이트와인 데이터셋인지 레드와인 데이터셋인지 구분을 할 수가 없습니다. 그래서 [quality] 컬럼 옆에 각 인덱스 모두에 'red'라는 문자가 들어가있는 [type] 컬럼을 만드는 것을 진행해볼 예정입니다.
해당 작업은 아래처럼 파이썬 데이터프레임을 이용했을 때, 코드 한줄로 끝나는 작업이지만, KNIME을 사용해서 데이터를 분석하다보면 어려운 작업보다는 지금처럼 간단한 작업을 처리하는 경우, 그 때 어떤 노드를 쓰면 좋을지 생각나지 않을 때가 종종 있습니다.
import pandas as pd
whitewine = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv", sep=";", header = 0)
whitewine["type"] = "red"
1. 그럼 데이터셋을 불러오는 과정부터 시작해보록 하겠습니다. <CSV Reader> 노드를 불러와 Configure를 실행합니다.
2. 현재 와인 데이터셋은 UCI 저장소에서 URL 링크를 통해 가져온 데이터셋이며 레드와인 데이터셋을 Read from을 'Custom/KNIME URL'로 변경하고, URL에 데이터셋 링크를 입력합니다. 다음 Column delimiter를 ' ; ' 으로 변경해준 뒤 Apply를 진행하면 레드와인 데이터셋을 불러올 수 있습니다.
▶ URL : https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv
3. KNIME 노드를 통해 진행할 방법은 4가지 정도를 뽑을 수 있었습니다. 각 노드별로 간단하게 설명드리도록 하겠습니다.
3.1 <String Manipulation> 노드를 활용한 방법입니다. 해당 노드는 엑셀의 left, right함수나 특정 문자를 찾아서 수정하거나 바꿀 때 처럼 노드의 문자열을 조작할 때 사용하는 노드입니다. 해당 노드에서 join() 함수를 이용하는 방법으로 red값이 입력된 컬럼을 추가할 수 있습니다. join함수는 문자열을 결합할 때 사용하는 함수인데, 단일값만 입력해도 해당 문자를 리턴해 줄 수 있습니다.
앞서 설명처럼 Expression에 join('red')를 입력한 뒤, Append Column 에 컬럼명을 'type'으로 입력하고 apply를 실행하면 아래와 같이 [Type] 컬럼에 'white'값이 채워진 열이 새로 생긴 것을 확인할 수 있습니다.
그럼 다음 노드들 부터는 출력결과는 동일하여 생략하고, 방법들만 설명드리도록 하겠습니다.
3.2 다음은 <Rule Engine> 노드를 사용하는 방법입니다. 해당 노드는 보통 Rule 기반의 조건으로 컬럼을 Replace 또는 Append 할 수 있는 기능을 가지고 있는데, 아래와 같이 'TRUE => red'를 입력해주면 모든 조건이 참값이라는 연산아래에 'red'를 결과값으로 도출해줍니다.
3.3 <Column Expressions> 노드를 활용해서도 같은 결과를 만들 수 있습니다. 해당 노드는 KNIME에서 자유도가 가장 높은 노드라고 볼 수 있을 것 같습니다. 지금처럼 데이터 Type과 Output Column을 입력해주고, 아래 코드창에 함수 없이 출력을 하고자 하는 값만 입력하면 됩니다. KNIME에서 IF, ELSE 조건이 필요한 경우 많이 사용하는 노드인데 문자열 조작시에도 유용하게 활용할 수 있습니다.
3.4 앞서 파이썬에서는 코드한줄이면 되는 간단한 작업이라고 언급하였는데 <Python Script> 노드를 사용하는 것도 방법이 될 수 있습니다. 스크립트 창을 실행하고 pandas 모듈을 불러오고 코드를 입력해주면 됩니다. 다만 <Python Script> 노드를 사용할 때는 KNIME의 Preference에서 python 환경을 미리 설정해두어야 되는 점 참고하시기 바랍니다.
4. 마지막으로 각 노드별로 워크플로우 실행한 결과를 보면 아래 처럼 'red' 가 입력된 [type] 컬럼을 만들 수 있었고, KNIME을 통해서 같은 결과도 다양한 방법으로 만드는 방법을 확인할 수 있었습니다.
물론 위 방법들 말고 다른 방법들도 있지만 다소 억지스러운 방법의 노드도 있고 (예를 들면 Numeric Binner 같은 노드로 실수값 컬럼을 아무거나 찾아서 -무한대 ~ +무한대 값에 라벨링을 하는 방법?, R 스크립트 노드를 이용하는 방법, Table을 만들어서 concat하는 방법 등) 있는데 지금 위에서 보여드린 방법이 가장 적절하지 않은가 싶었습니다.
이상이며 KNIME에서는 같은 작업도 다양한 방법을 사용하여 진행할 수 있고, 그것에 대한 정답이 정해진 것이 없으니 모든 분들이 자신감있게 데이터 분석을 진행하시면 좋겠습니다.
해당 내용으로 2편 추가 포스팅이 있습니다. 참고하시기 바랍니다.
[KNIME] Workflow - 데이터셋에 특정 문자열로 컬럼을 추가하고 싶을 때 - 2편 (Constant Value Column 노드)
'KNIME' 카테고리의 다른 글
[KNIME] Workflow - Missing Value(결측치) 확인 및 처리하기 (0) | 2023.01.28 |
---|---|
[KNIME] Workflow - 각 행(인덱스)별 합계 컬럼 추가하기 (0) | 2023.01.23 |
[KNIME] Setting - Memory 할당 변경하기 (RAM 메모리 증가, 감소) (0) | 2023.01.18 |
[KNIME] Workflow - 의사결정나무(Decision Tree)를 이용한 UCI 유방암(Breast Cancer) 데이터 분석 (0) | 2023.01.15 |
[KNIME] Node - "Round Double" 소수점 자리를 변경할 때 (0) | 2023.01.11 |