분석에 용이한 데이터 형식

Orange를 활용한 코딩 없는 AI 데이터 분석 - Lv.2 데이터 전처리와 시각화 강좌의 맛보기 강의입니다.

강의 대본 보기

이번 영상에서는 우리가 데이터를 분석할 때 어떠한 형태의 데이터가 분석에 알맞은가 하는 것을 이해해보도록 하겠습니다. 흔히 우리가 일반적으로 생각하는 데이터 자료라고 하는 것은 지금 보시는 그림과 같이 이러한 어떤 가로 행과 세로 열로 구성되어 있는 일종의 표 라고 말할 수 있습니다 물론 다양한 형태의 데이터가 있죠 비정형 데이터도 있고 등등등등 반정형 데이터도 있고 하지만 우리가 어떤 데이터를 분석하겠다고 할 때 머릿속에 딱 떠올리는 모습은 행이 있고 열이 있고 거기에 데이터들이 들어있는 이러한 형태입니다 두 가지 모두 다 우리가 생각하는 일반적인 어떤 자료에서 부족함이 없죠 그런데 우리는 이러한 형태의 자료를 크게 와이드 포맷과 롱 포맷이라고 하는 이 두 가지의 포맷으로 나누어서 이해할 필요가 있습니다 지금 보고 계시는 왼쪽이 바로 wide 고요. 오른쪽이 long 이라고 하는 이런 포맷입니다. wide 포맷은 다른 말로 crosstab 이라고도 합니다. 보시면 wide 포맷은 crosstab 이라고도 하고, long 포맷은 다른 말로 table 이라고 하기도 해요. 제가 데이터를 다루면서 생각하는 건데 이 분야에서 뭔가를 이해하고 배울 때 우리가 좀 어려움을 겪는 것 중에 하나가 용어가 너무 많다 같은 것을 가리키는 용어가 목적에 따라서 굉장히 많이 변하기는 하죠 그래서 어떤 분께서는 크로스탭 이라던가 테이블 이라고 하는 말에 이미 익숙하실 수도 있어요 그 경우에는 이것이 와이드고 이게 롱이다 라고 그냥 바로 매칭해서 같은 거다 같은 말이다 라고 이해하셔도 좋겠습니다 음 그러면 좀 이상하지 않으시나요? 딱 보면 보기에 똑같은데 왜 하나는 wide라고 부르고 하나는 long이라고 부를까 라는 거죠 이건 아주 간단합니다 어떤 차이가 있냐면 보기에는 똑같지만 어떤 차이가 있냐면은 열 단위로 보겠습니다. 하나하나의 칼럼이 있어요. 칼럼의 머릿글이 아래에 나오는 값을 지칭해주는 이름인가 아닌가 라고 하는 것으로 구별하시면 되겠습니다. 우리가 겉보기로 와이드와 롱을 이해할 수 있는 건 아니에요 겉으로 딱 보기에 다르게 생긴 게 아니고 똑같이 생겼는데 그런데 어떠한 열이 있을 때 이 열의 머릿글이 이 열에 나오는 값을 설명해 준다 그렇다면 우리가 그것을 롱 포맷이라고 부르는 거고요 그렇지 않고 이게 그걸 나타내는 건 아니야 전혀 다른 어떤 내용 이렇게 얘네들은 요렇게 같은 머릿글끼리가 머릿글끼리가 어떤 의미를 가지고 있어라고 하면 와이드 포맷이라고 부르는 거죠. 여기 있는 값들 하나하나는 거래량을 나타내는 거고요. 그래서 long 점점 길어지게 되죠. 그리고 얘네들은 아래쪽 숫자와 직접적 연관이 있는 이름인 게 아니고 1월, 2월, 3월, 4월이라고 하는 옆에 이름들과의 관련성이 강한 머릿글 이름인 거죠 이런 경우에 우리가 이것을 와이드 포맷이라고 부릅니다 이렇게 이해하시면 되겠습니다 그래서 데이터는 겉보기에 똑같아도 와이드 포맷인 경우가 있고 롱 포맷인 경우가 있다는 것이죠. 와이드 포맷의 장점은 뭐냐면 같은 주체의 다양한 변수를 한눈에 보기가 쉽다. 즉, 예를 들어서 라탐이라고 하는 그러한 마켓, 아시아 판매 마켓, 아프리카 마켓, 1월 판매량이 몇 개고 2월 판매량이 몇 개고 3월 판매량이 몇 개인가를 직관적으로 빨리 이해할 수 있다. 롱포맷은 사람의 이해로 따지면 와이드포맷보다 조금 더 이해하는 데에 공이 들어가요. 다변량 분석, 실제로 데이터를 분석하는 과정에서는 롱포맷이 조금 더 우리가 도구를 이용해서 데이터를 분석할 때는 조금 더 권장하는 좋은 포맷이다 라고 말씀드릴 수 있겠습니다 음 그러면 이게 실제로 어떤 차이가 있는가 라고 하는 것을 진짜 데이터를 보면서 한번 같이 알아보도록 하겠습니다 오렌지를 열고 파일 위젯으로 우리가 가지고 있는 실습자료에서 실습자료 01-1 발전소 주변지역 대기질 측정자료 괄호하고 와이드 포맷을 먼저 열어보도록 하겠습니다. 01-1이 있고 2가 있는데 와이드 포맷을 열어주세요. 아래쪽에 보시면 총 7개의 인스턴스가 있고 14개의 피처, 1개의 메타 어트리뷰트 기본적으로 numeric의 피처로 잡히는 것들을 그대로 두고 닫도록 하겠습니다. 이렇게 데이터를 불러오시고 이 데이터를 파일을 우리가 이름을 01-1 wide 정도로 해 주도록 하겠습니다. 01-1 wide로 적을게요. 이것은 wide 포맷입니다. 이 데이터의 내용을 실제로 한번 확인해 볼까요? 데이터 테이블을 이용해서 데이터의 내용을 확인하도록 하겠습니다. 데이터 테이블을 열어보면 지금 보시는 것처럼 이렇게 데이터를 볼 수가 있습니다. 보시면은 기준 항목이 있고 인스턴스가 많지는 않네요. 7개의 인스턴스가 있고요. 각각의 연도, 미세먼지, 초미세먼지 같은 대기질을 확인하는 기준 항목들이 있고 여러 지역이 있습니다. 당진 발전본부, 성문동, 성문면 등 여러 지역들에 각각의 대기질 측정 물질들이 어느 정도의 농도를 보이고 있는가? 라고 하는 것을 보여주는 게 있죠. 이 상태에서 우리가 데이터를 가지고 있습니다. 이 데이터가 바로 전형적인 와이드 포맷의 데이터입니다. 왜냐하면 여기 있는 수치들의 이름이 당진 발전 본부는 아닌 거죠. 이러한 상태일 때 우리가 이런 와이드 포맷을 가지고 아주 간단한 질문에 대답을 한번 시도해 보겠습니다. 평균 미세먼지 수치 우리가 자료를 볼 때 당연하게 하게 될 질문이죠. 미세먼지 수치가 그럼 평균적으로 얼마인가? 여러 지역에서 각각 수치가 다른데 그럼 평균 얼마예요? 라고 하는 질문을 하는 것은 너무나 흔한 주제인 것 같아요. 그럼 이것을 실제로 답을 해보겠다고 하면 이 미세먼지에 대해서 평균을 구할 수 있어야겠죠. 자 그러면 평균을 구하기 위해서 이 와이드 데이터에 피처 스태티스틱스를 연결해 보도록 하겠습니다. 혹시 피처 스태티스틱스가 보이지 않으시는 분은 F로 검색하면 바로 보이게 되겠죠? 피처 스태티스틱스 연결해서 보도록 하겠습니다. 각각의 피처에 대해서 우리가 원하는 것은 미세먼지 수치의 평균은 얼마인가라고 하는 거죠 미세먼지는 얼마고 초미세먼지는 뭐 얼마고 등등등등 우리가 여러 가지 대기오염물질에 대한 자료이기 때문에 대기질을 측정해서 오염물질의 농도를 측정한 자료이기 때문에 오염물질의 평균 농도가 굉장히 중요한데 그렇게 딱 피처 스태티스틱스에서 확인되지 않는구나 라고 하는 것을 여러분이 바로 보실 수가 있어요 만약에 이 numeric 이라고 되어 있는 것이 당진 발전본부가 아니고 성분명 측목명 당진 에코파워 변전소가 아니고 미세먼지 초미세먼지 이렇게 대기 물질들이었다면 그러면 우리가 미세먼지라고 하는 그러한 피처의 각 지역에서의 평균값은 얼마고 최빈값은 얼마고 중앙값은 얼마고 대략적으로 지역마다 미세먼지의 농도가 이렇게 분포되어 있구나 가장 낮은 지역은 얼마고 가장 높은 지역은 얼마를 기록하고 있구나 라고 하는 상황을 파악할 수 있을 거예요 하지만 지금 보시는 것처럼 전혀 가능하지 않죠 왜 이런 문제가 벌어졌는가 라고 하면 이게 바로 와이드 포맷이기 때문입니다 우리가 자료를 봤을 때 아주 쉽게 던질 수 있는 질문이 와이드 포맷에서는 잘 해결되지 않는 거죠 그러면 이를 비교하기 위해서 롱 포맷으로 한번 데이터를 보도록 하겠습니다 동일하게 파일을 가지고 롱 포맷 데이터를 불러올게요 이번에는 01-2에 있는 발전소 주변지역 대기질 측정자료 괄호하고 long format 이라고 하는 같은 데이터입니다. 같은 데이터를 가져오겠습니다. 열기 하시고 똑같이 피처를 그대로 두시고 피처 메타 있죠. 그대로 두시고 이 파일의 이름을 01-2 long 정도로 바꿔주도록 하겠습니다. 이것은 롱 포맷 데이터인 거죠 그럼 실제로 어떻게 데이터가 되어 있는가 볼까요 데이터 테이블로 연결해 보시면 데이터 테이블에서 아까와 동일한 내용을 담고 있는데 전혀 다른 형태를 가지고 있는 것을 보실 수가 있을 거예요 지금 보신 것처럼 기존 항목이 있고 이것은 지역이 여기에 들어가 있고 그리고 연도는 몇 년도 미세먼지, 초미세먼지, 오존, 이산화질소, 일산화탄소처럼 아래쪽에 나와 있는 이러한 값이 무엇을 나타내는가? 라고 하는 것을 머리글에서 설명해주고 있죠. 머리글이 아래에 나오는 수치들의 이름이다. 이런 형태로 우리가 롱 포맷이라고 부릅니다. 아까는 전혀 달랐죠? 아까는 미세먼지 쭉 있고 여기에는 발전소, 무슨 변전소 등등이 있어서 발전소가 밑에 있는 수치들의 일관된 값은 아니었던 거죠. 이러한 상태. 이것이 롱 포맷입니다. 그러면 이 데이터를 가지고 똑같은 질문에 답하려고 해본다면 마찬가지로 연결해서 Feature Statistics에서 연도는 2021년으로 모두 다 똑같기 때문에 평균 최빈값 등등이 다 똑같죠 그리고 미세먼지가 있는데 미세먼지가 여러 지역에서 평균 미세먼지가 얼마인 거예요? 128.14라고 하는 수치를 보인다 이게 여기 나오는 14개 지역의 미세먼지의 평균치다 라고 하는 것을 쉽게 확인할 수가 있죠 지금 보시면 우리가 하고자 하는 데이터 분석에서 가장 기초적인 단계, 분석은 굉장히 복잡한 과정이잖아요. 여러 수학적인 알고리즘들을 사용하는 과정인데 그것의 앞 단계, 가장 앞에 있는 이 데이터의 기술 통계량, 요약 통계량으로 요약하는 과정이라고 하는 이러한 단순한 작업도 와이드 포맷에서는 굉장히 어려움이 있구나라고 하는 것을 실제 데이터를 보고 쉽게 파악할 수 있습니다. 어떤 데이터셋이 있을 때 이 데이터셋을 가지고 데이터를 분석하겠다고 하면 롱 포맷 형태로 데이터를 정리해줄 필요가 있습니다. 여러분께서 와이드 포맷과 롱 포맷의 기본적인 내용은 아시잖아요. 어떤 데이터가 있을 때 이 데이터의 머리글이라고 하는 부분이 아래쪽에 따라 나오는 이 열에 기존에 존재하는 데이터를 볼 때 우리가 깨닫게 되는 거고 어떤 데이터를 내가 직접 수집해서 정리하는 과정에서는 이 롱 포맷을 만들기 위해서 지켜야 되는 규칙을 4가지 정도 조건이 있는데 이 4가지 조건을 알아두시면 좀 더 좋기 때문에 간단하게 정리를 해보도록 하겠습니다. 첫 번째 롱 포맷이 갖춰야 되는 롱 포맷이 되려면 크게 4가지의 기준을 만족해야 되는데 첫 번째는 뭐냐면 머리글이 한 줄 있어야 한다 라는 겁니다. 우리가 가지고 있는 어떤 비즈니스 데이터 같은 것들을 보면 머리글이 두 줄 세 줄 되어 있는 경우가 되게 많아요 그래서 재분류가 있고 그 재분류 밑에 무슨 품목은 어떻고 무슨 품목은 어떻고 무슨 품목은 어떻다 이렇게 정리되어 있는 경우가 있거든요 이럴 경우에는 이 조건에 위배되는 겁니다 그래서 머리글은 한 줄이 있어야 된다 라고 하는 조건이 있습니다 또 하나는 데이터가 롱이니까 데이터가 세로 방향으로 증가하는 거죠. 새로운 어떤 데이터가 수집이 되면 그 데이터는 옆으로 붙는 구조가 아니고 아래쪽으로 붙는 구조여야 한다는 겁니다. 방금 우리가 본 것처럼 발전소에서 대기질을 측정을 했는데 새로운 곳에 관측소를 세워서 또 새로운 데이터를 얻게 됐어요. 그러면 그 데이터는 어디에 붙게 되죠? 와이드 포맷에서는 새로운 지역이 나타나면 오른쪽에 이렇게 붙게 되는 거죠. 그런데 이렇게 붙으면 안 되고 아래쪽으로 붙게 되어야 한다. 그래서 데이터는 세로 방향으로 증가되어야 한다. 열 방향 증가라고 쓰겠습니다. 세 번째 조건은 같은 열에 같은 데이터만 들어가게 된다. 아까 와이드 포맷을 생각해 보시면 예를 들어서 변전소 부분의 데이터입니다 라고 하면 이 열에는 미세먼지, 초미세먼지, 이산화질소 등등등등 같은 열에 여러 데이터가 들어가는 상태로 나타나게 되는데 롱 포맷이라면 그렇지 않죠. 예를 들어서 미세먼지라고 하면 이 열에 있는 모든 데이터는 다 미세먼지인 거잖아요. 그런 것처럼 같은 열에는 같은 데이터가 나타나야만 우리가 이것을 롱 포맷이라고 말할 수 있습니다. 네 번째 조건으로는 같은 데이터라면 같은 데이터가 같은 열에만 나타나야 한다. 반대라고 생각할 수 있는데요. 하나의 데이터는 한 열에만 보인다. 그래서 어떤 상황을 생각하시면 되냐면 아까 wide랑 비교해 보시면 쉽게 이해될 수 있어요. 예를 들어서 여기다가 미세먼지 A지역, B지역, C지역, D지역 미세먼지라는 데이터가 여러 열에 걸쳐서 나타나게 되잖아요. 이것은 옳지 않다. 이렇게 나타나지 않고 미세먼지라고 하면 미세먼지는 한 열에만 나타나야 된다라고 하는 게 바로 롱포맷의 조건인 거죠. 우리가 어떤 데이터를 만들었을 때 내가 이걸 롱포맷으로 잘 만들었나? 라고 하는 판단의 기준이 여러분께서 필요하실 거예요. 그럴 때 여러분께서 체크하셔야 되는 것은 이렇게 4가지의 조건, 머릿글이 한 행이 있고 열 방향으로 데이터가 증가를 하게 되고 같은 열에 같은 데이터가 있고 하나의 데이터라면 그 데이터는 그 열에만 있는 상태를 유지하시는 것이 가장 중요하겠습니다. 여기서 많이 하는 실수가 뭐냐면 이걸 가장 많이 합니다. 같은 열에 같은 데이터라고 하는데 같은 열에 예를 들어서 매출액이다 라고 하면 매출액에 대한 데이터를 만들어요. 거기까지는 틀리지 않아요. 매출액이라고 하지 말고 우리의 사례를 가지고 얘기할까요? 우리 사례라면 미세먼지다 라고 하면 미세먼지라고 하면 A지역 B지역 C지역 미세먼지 얼마 얼마 얼마 얼마 여기까지 다 맞습니다. 다 맞는데 어떤 실수를 잘하냐면 합계, 토탈 그래서 이 위에 것을 모두 다 더하면 얼마다 라고 하는 토탈 값을 이렇게 데이터에 입력하시는 경우가 종종 있으세요. 이런 식으로 집계 값이 중간에 끼어들게 되면 집계 값이라고 하는 것은 엄밀히 말하면 미세먼지의 수치가 아니라 미세먼지의 합계 즉, 데이터 형식은 미세먼지의 합계입니다. 중간에 집계 값 같은 것이 들어가면 3번 조건을 위배하는 경우가 굉장히 많습니다. 여러분이 이 부분을 조금 유념해서 보시면 특별한 문제가 없이 롱포맷의 데이터를 쉽게 구별하시고 만들어 내실 수 있을 거다 라고 생각이 듭니다. 우리가 이렇게 조건을 확인했다면 이제 이런 생각을 해볼 수가 있죠. 처음부터 이렇게 롱포맷의 데이터를 가지고 있었다면 좋았을 것 같아요. 이게 이제 문제가 없다는 건 알았어요. 그런데 내가 가지고 있는 원래 원본 자료가 와이드라면 어떻게 할 것이냐 라는 거죠. 이걸 잡아서 조금 밑으로 이렇게 내려 볼까요. 기존 데이터가 이런 데이터인데 이 데이터를 그럼 어떻게 해? 이것을 가지고는 그럼 분석을 못하는 거야? 라는 의문이 드실 수 있을 것 같아요. 그런데 이 데이터 같은 경우는 보면 아주 간단하게 롱포맷으로 바꿀 수 있죠. 그냥 행과 열이 바뀌기만 하면 되는 거잖아요. 보시면 기준 항목이 있고 연도, 미세먼지 여기가 오히려 열로 가게 되고 그리고 각각의 측정 위치가 행 정보로 가게 되면 즉 행과 열이 바뀌기만 하면 전치만 되면 되는 구조인 거죠. 그래서 아주 쉽게 우리가 원본 데이터가 이렇게 생겼다면 이런 경우에 아주 쉽게 롱포맷으로 변환을 할 수 있습니다. 이때 사용되는 위젯이 바로 트랜스포즈라고 하는 거고요. 여기 있습니다. 보시면 트랜스포즈라고 하는 위젯이 보이실 겁니다. 트랜스포즈를 한번 해보도록 할까요. 트랜스포즈를 꺼내서 여기에다가 놓도록 하겠습니다. 조금 복잡하니까 이렇게 바꿀게요. 와이드 포맷의 데이터를 트랜스포즈 하도록 하겠습니다. 행과 열을 바꿔서 롱포맷으로 바꿔보겠다는 거죠. 트랜스포즈를 더블클릭해보시면 제너릭이 있고, 프롬 배리어블이라고 하는 게 있습니다. 이건 어떤 거냐면요. 일단 보시면 제너릭이라고 하는 것은 어떤 접두사, 일단 결과를 먼저 보겠습니다. 이것을 트랜스포즈한 결과를 먼저 연결해서 보도록 할게요. 이렇게 보시면 이 결과를 이렇게 보겠습니다. 일단 우리가 원하는 것은 되었어요. 원하는 것은 짠 하고 쉽게 만들어졌습니다. 일단 트랜스포즈 위젯을 연결하기만 해도 여기 디폴트로 되어 있는 것을 그냥 그대로 선택해서 연결하기만 해도 지금 보시는 것처럼 Feature Name이라고 되어 있고 여기에 지역이 나왔고 연도, 미세먼지, 초미세먼지 쭉 우리가 원하는 형태의 롱포맷이 쉽게 만들어진 것을 보실 수가 있습니다. 그러면 이 상태에서 트랜스포즈 옵션이 가지고 있는 의미는 무엇인가라고 하는 것을 보도록 하겠습니다. 지금 보시면 여기서 우리가 기본으로 설정했던 것은 바로 기준 항목이라고 하는 거죠. 기준 항목이라는 건 원본 데이터 이것도 같이 놓을게요. 이렇게 놓겠습니다. 처음에 이 와이드 포맷일 때의 모습을 보면 이렇게 놓도록 하겠습니다. 지금 보시는 것처럼 왼쪽에는 와이드 포맷의 데이터, 원래 있었던 와이드 포맷의 데이터를 열었구요. 그리고 오른쪽에는 우리가 트랜스포즈를 거쳐서 얻게 된 롱포맷 데이터를 열었습니다. 우리는 이 와이드 포맷 데이터를 트랜스포즈를 롱포맷으로 변환을 한 거죠. 트랜스포즈에서 있었던 옵션에 대해서 아주 간단하게 살펴보자면 트랜스포즈에서 크게 어떤 항목을 가지고 변환을 할 거냐라고 하는 게 있습니다. 어떤 항목을 가지고 할 것이냐, 일단 지금 같은 경우에는 맨 앞에 있었던 기준 항목이라고 하는 메타를 가지고 변환을 했죠. 기준 항목으로 했을 때는 이 데이터가 여기에 이렇게 머리글로 들어가는 것을 보실 수가 있어요. 그런데 내가 그렇게 하지 않고 예를 들어서 나는 바로 밑에 있는 당진 발전본부 이걸 가지고 하겠다 라고 하면 어떤 결과가 벌어질까요? 바꿔 보시면 지금 보시는 것처럼 당진 발전본부라고 하는 이 열에 있었던 값들 지금 보시는 것처럼 뭐 2021 뭐 이렇게 쭉 올라가는 것을 보실 수가 있죠. 요렇게 바뀌는 걸 볼 수가 있어요. 열의 이름이 이렇게 들어가게 되죠. 이처럼 어떤 열을 가지고 판단해서 바꿀 것이냐라고 하는 것을 만들어주는 게 이 아래쪽에 있는 옵션인 거고요. 이때 보시면은 때로는 이 인스턴스들 중에서 중복되는 것들이 있을 수도 있잖아요. 그럴 경우에 중복 인스턴스는 제외하고 만약에 중복되는 건 왕왕 산가스가 여기도 있고 저기도 있고 거기도 있다. 열이 들어갈 때는 피처로 바뀌었을 때는 피처들은 중복되면 안 되기 때문에 중복되는 게 있으면 제거하겠다고 하는 부분들 만들어낼 수 있습니다. 위쪽에 있는 것들은 우리가 뭔가 변환을 할 때 특정 열의 이름을 쓰는 것이 아니라 예를 들어서 바 1, 2, 3, 4 이렇게 만들어 줄 수가 있잖아요. 나는 이것을 변수 1, 2, 3, 4로 지정하겠다. 이러실 수가 있어요. 그래서 변수 1, 아니 예를 들어서 변수. 예를 들어 이런 이름을 주겠다 라고 하시면 여러분께서 한글로 만들고 이런 식으로 여러분이 보시면 오른쪽에 있는 이름이 바 1234 이렇게 네이밍돼서 가는 게 보이시죠. 이렇게 우리가 원하는 말로 지정해서 이름을 줄 수도 있다 라고 하는 옵션입니다. 아주 간단하게 지금 보시는 것처럼 어떤 데이터가 있을 때 우리가 이 데이터를 요약해서 좀 정상적으로 요약하고 조금 더 편리하게 분석에 사용하려면 지금 보시는 것처럼 롱 포맷을 유지할 필요가 있고 그 롱 포맷을 만들어 낼 때 우리가 원래 가지고 있는 원본 데이터가 와이드 포맷일 경우에는 지금 보셨듯이 행과 열을 전치하는 방법을 사용해서 쉽게 와이드를 롱 포맷으로 변환할 수 있습니다. 이때 사용되는 위젯이 바로 트랜스포즈다 라고 여러분이 기억해 주시면 편리하게 데이터를 변환하실 수 있겠습니다.

이 강좌의 맛보기 강의

Orange를 활용한 코딩 없는 AI 데이터 분석 - Lv.2 데이터 전처리와 시각화
Orange를 활용한 코딩 없는 AI 데이터 분석 - Lv.2 데이터 전처리와 시각화강좌 자세히 보기