///////
Search
Duplicate

raw 데이터

Tags
Archive
ETA
Main Task
Sub Task
담당자
메모
상태
Not started
생성 일시
2025/08/28 10:18
생성자
우선 순위
진행률 %
raw데이터 조사 및 정제
1.광역시별 15-29세 실업자수
행정구역_시도__연령별_실업자_20250828112631.csv
2.7 KB
2.
광역시별 15-29세 고용률
행정구역_시도__연령별_경제활동인구_20250828112622.csv
20.8 KB
분기 고용률
시도
고용률(%)
분기
부산광역시
46.7
2024.3/4
대구광역시
36.6
2024.3/4
인천광역시
49.2
2024.3/4
광주광역시
38.8
2024.3/4
대전광역시
44.2
2024.3/4
시도별 × 분기 고용률
시도
2024.3/4
2024/4
2025.1/4
2025.2/4
광주광역시
38.8
36.3
37.2
37.1
대구광역시
36.6
35.6
38.0
40.7
대전광역시
44.2
42.8
44.6
46.0
부산광역시
46.7
46.0
43.8
44.0
울산광역시
40.8
41.0
41.5
43.7
인천광역시
49.2
48.0
46.0
45.1
import pandas as pd import re # 1) 서울 제외 광역시 조건 (부산/대구/인천/광주/대전/울산) metros_no_seoul = ["부산광역시","대구광역시","인천광역시","광주광역시","대전광역시","울산광역시"] # 2) df3에서 조건 필터 (df3가 이미 15-29세만 담고 있지 않을 수도 있으니 안전하게 한 번 더 체크) mask_city = df3["시도별"].isin(metros_no_seoul) mask_age = df3["연령계층별"].eq("15 - 29세") if "연령계층별" in df3.columns else True sub = df3.loc[mask_city & mask_age].copy() # 3) '고용률(%)' 컬럼만 자동 선택 # - 패턴 예: 2024.3/4(총인구), 2024.3/4.1(경제활동인구), 2024.3/4.2(비경제활동인구), # 2024.3/4.3(경제활동참가율), 2024.3/4.4(고용률) # - 따라서 고용률은 ".4"로 끝나는 컬럼들 emp_rate_cols = [c for c in sub.columns if re.match(r"^\d{4}\.\d/4\.4$", c)] # 4) long 형태 (시각화/가공에 편리) emp_long = ( sub[["시도별"] + emp_rate_cols] .melt(id_vars="시도별", var_name="분기_raw", value_name="고용률(%)") ) # 숫자 변환 + 분기 라벨 정리(뒤의 ".4" 제거) emp_long["고용률(%)"] = pd.to_numeric(emp_long["고용률(%)"], errors="coerce") emp_long["분기"] = emp_long["분기_raw"].str.replace(".4", "", regex=False) emp_long = emp_long.drop(columns=["분기_raw"]) # 5) pivot 형태 (광역시 × 분기 표) emp_pivot = emp_long.pivot(index="시도별", columns="분기", values="고용률(%)") # 확인 print(emp_long.head()) # long 미리보기 (시도별, 분기, 고용률) print(emp_pivot) # pivot 표 (시도별 × 분기 고용률)
Python
복사
KOSIS 실업률 지도 시각화 직접 진행
※참고 CSV 파일 :
전체 실업률.csv
3.1 KB
행정구역_시도__연령별_경제활동인구_20250828112622.csv
20.8 KB
코드 정리
※번외 15 ~ 29세 전체 실업률과 광주 실업률 점선 그래프 (한글 깨짐 방지 코드 까먹음)
import pandas as pd import matplotlib.pyplot as plt import matplotlib import platform # Colab 환경에서 한글 폰트 설정 if platform.system() == 'Linux': !apt-get -qq install -y fonts-nanum import matplotlib.font_manager as fm matplotlib.rcParams['font.family'] = 'NanumGothic' plt.rcParams['axes.unicode_minus'] = False #폰트 설정 (한글 깨짐 방지용 – Colab 한정). 차트 출력 전 미리 실행해야 함!! !sudo apt-get install -y fonts-nanum !sudo fc-cache -fv !rm ~/.cache/matplotlib -rf #실행 후 세션 다시시작 # 1) CSV 경로 지정 (Colab에 업로드했거나 앞 단계에서 생성한 파일) path = "시도별_분기별_15-29세_경제활동인구_실업자_실업률.csv" df = pd.read_csv(path) # 숫자형 보장 for col in ["경제활동인구(천명)", "실업자(천명)", "실업률(%)"]: df[col] = pd.to_numeric(df[col], errors="coerce") # 2) 분기 정렬 키 def qkey(s): y, rest = s.split('.', 1) q = rest.split('/')[0] return (int(y), int(q)) # 3) 전국 실업률(가중 평균) = (Σ실업자 / Σ경제활동인구) * 100 nat = ( df.groupby("분기") .agg({"경제활동인구(천명)":"sum", "실업자(천명)":"sum"}) .reset_index() ) nat["전국 실업률(%)"] = (nat["실업자(천명)"] / nat["경제활동인구(천명)"] * 100) # 4) 광주광역시 실업률 시계열 gwangju = df[df["시도별"] == "광주광역시"][["분기", "실업률(%)"]].copy() gwangju = gwangju.rename(columns={"실업률(%)":"광주 실업률(%)"}) # 5) 정렬 및 병합(공통 분기) nat = nat.sort_values("분기", key=lambda s: s.map(qkey)).reset_index(drop=True) gwangju = gwangju.sort_values("분기", key=lambda s: s.map(qkey)).reset_index(drop=True) plot_df = pd.merge(nat[["분기","전국 실업률(%)"]], gwangju, on="분기", how="inner") # 6) 점선 그래프 (matplotlib, 단일 플롯, 색상 지정 없음) plt.figure(figsize=(10, 5)) plt.plot(plot_df["분기"], plot_df["전국 실업률(%)"], linestyle="--", marker="o", label="전국") plt.plot(plot_df["분기"], plot_df["광주 실업률(%)"], linestyle="--", marker="s", label="광주광역시") plt.title("15–29세 실업률: 전국 vs 광주광역시") plt.xlabel("분기") plt.ylabel("실업률(%)") plt.xticks(rotation=45) plt.grid(True, linestyle=":") plt.legend() plt.tight_layout() plt.show()
Python
복사