프로그래밍 언어/Python

데이터 시각화하기 - 데이터 전처리하기

· 코딩마이데이

데이터 분석과 시각화를 위해 수집한 원본 데이터를 원하는 형태로 제공하는 과정을 데이터 전처리라고 합니다. 데이터 전처리는 정확한 분석을 위해 반드시 필요한 과정입니다. 수집한 데이터에서 필요한 정보를 선별하고, 범위를 벗어나는 이상치 또는 측정하지 못한 결측치 등을 다른 다른 값으로 대체하거나 삭제함으로써 데이터의 품질을 향상시킬 수 있게 때문입니다.

파이썬은 데이터 분석에 표준 언어로 쓰이는 만큼 다양한 데이터 분석 및 패키지를 제공합니다. 여기서는 폴더의 크기를 가로축에, 폴더의 이름을 세로 축에 두어 가로로 긴 막대 그래프를 그리겠습니다.

 

데이터 전처리하기

이번 절에는 폴더 크기를 시각화하기 위해 matplotib 패키지를 사용합니다. 비주얼 스튜디오 코드에서 터미널을 열고, 다음 명령어를 입력하여 설치하세요.

$ pip instaill -U matplotlib

 

앞서 홈 디렉터리의 폴더 크기를 측정하고 폴더의 경로와 크기를 키와 쌍으로 딕셔너리에 저장한 뒤 JSON 형식의 파일로 저장했습니다. 이를 가로로 긴 막대 그래프로 시각화하기 위해 폴더의 크기와 이름을 분리하겠습니다.

원본 데이터의 키에서 폴더 크기를 추출하여 각각 리스트로 저장한 뒤, 두 리스트를 새로운 딕셔너리의 값으로 저장합니다.

 

비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step_3_1.py'로 변경하세요. 다음과 같이 코드를 입력한 뒤, 대화형 창에서 실행하면 'output' 폴더에 'step_3_1.json' 파일이 생성됩니다. 이 파일을 비주얼 스튜디오 코드에서 열면 폴더 이름과 폴더 크기가 분리되어 저장된 것을 확인할 수 있습니다.

import json
from pathlib import Path
from step_2_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_2_4 import load_filesize_per_dir

OUT_3_1 = OUT_DIR / f"{Path(__file__).stem}.json"

def dump_plot_data(): # 8
    size_per_path = load_filesize_per_dir()
    size_per_stem = {Path(path).stem: size for path, # 10
                     size in size_per_path.items() # 11
                     if size > 0} # 12
    plot_data = dict( # 13
        stem = list(size_per_stem.keys()), # 14
        size=list(size_per_stem.values()) # 15
    ) # 16
    with open(OUT_3_1, "w", encoding="utf-8") as fp: # 17
        json.dump(plot_data, fp, ensure_ascii=False, indent=2) # 18

def load_plot_data() -> dict: # 20
    if OUT_3_1.is_file(): # 21
        with open(OUT_3_1, encoding='utf-8') as fp: # 22
            return json.load(fp) # 23
    return {} # 24

if __name__ == "__main__":
    dump_plot_data()

 

[실행결과]

{
  "stem": [
    "!!!#1(3965675)",
    ".cache",
    ".cf",
    ".codetogether",
    ".config",
    ".cursor",
    ".docker",
    ".eclipse",
    ".gradle",
    ".ipython",
    ".m2",
    ".p2",
    ".skiko",
    ".vscode",
    ".webclipse",
    "Contacts",
    "Documents",
    "Downloads",
    "Favorites",
    "IntelGraphicsProfiles",
    "Links",
    "Mendix",
    "Music",
    "OneDrive",
    "Oracle",
    "Saved Games",
    "Searches",
    "Videos",
    "workspace"
  ],
  "size": [
    1048576,
    47,
    3599,
    170,
    113,
    2,
    685808,
    175,
    2,
    371,
    202,
    20747,
    17315328,
    35426,
    372080,
    412,
    43982336,
    3146,
    80,
    8436,
    902,
    149,
    5078341,
    387,
    3867,
    282,
    852,
    1213959679,
    1865
  ]
}

 

08 데이터를 전처리하는 함수 dump_plot_data()를 정의합니다.

10 ~ 12 딕셔너리에 키로 저장된 경로를 폴더 이름으로 변경하고, 변수 size_per_stem에 저장합니다. 이때 폴더 크기가 0보다 큰 데이터만 추출합니다.

13 ~ 16 두 개의 키 stem과 size를 갖는 새로운 딕셔너리 plot_data를 생성합니다.

17 ~ 18 딕셔너리 plot_data에 저장된 데이터를 JSON 형식으로 OUT_3_1 경로에 저장합니다.

20 ~ 24 OUT_3_1 경로에 저장된 데이터를 불러와서 함수 load_plot_data()를 정의합니다.

 

'프로그래밍 언어 > Python' 카테고리의 다른 글

보기 좋은 차트 만들기  (1) 2025.10.18
데이터 시각화 첫걸음 떼기  (0) 2025.10.15
폴더 크기 측정하기  (0) 2025.10.09
측정할 폴더 목록 저장하기  (0) 2025.10.06
폴더 크기 측정 함수 만들기  (0) 2025.10.03