-
[2월 1주차-2/6(4)]📊 파이썬을 활용한 인구 데이터 시각화(파이차트&산점도)Why Not SW CAMP 5기/수업 기록 2025. 2. 6. 17:02
데이터 분석을 하다 보면, 데이터를 보다 직관적으로 이해하기 위해 시각화를 활용하는 경우가 많습니다. 이번 포스팅에서는 파이썬의 matplotlib 라이브러리를 활용해 인구 데이터를 시각화하는 다양한 방법을 정리해보겠습니다.
1️⃣ 인구 구조 시각화 📈
인구 구조 데이터를 분석하고 시각화하는 과정은 다음과 같습니다.
✅ 1-1. 인구 데이터 불러오기
먼저, CSV 파일을 읽고 데이터를 가져오는 코드입니다.
import csv import matplotlib.pyplot as plt f = open('./data/age.csv') # 인구 데이터 파일 열기 data = csv.reader(f) result = [] name = input('인구 구조가 알고 싶은 지역 이름을 입력해주세요: ') for row in data: if name in row[0]: # 입력한 지역명이 포함된 데이터 찾기 for i in row[3:]: # 0~100세 인구수 추출 result.append(int(i)) plt.style.use('ggplot') plt.title(name + ' 지역의 인구 구조') plt.plot(result) # 선 그래프 출력 plt.show() plt.bar(range(101), result) # 막대 그래프 출력 plt.show() plt.barh(range(101), result) # 가로 막대 그래프 출력 plt.show()
🔎 📌 분석 포인트
✅ 특정 지역의 연령별 인구 구조를 선 그래프, 막대 그래프, 가로 막대 그래프로 시각화
✅ input()을 활용해 원하는 지역명을 입력하면 해당 데이터만 출력
✅ plt.plot(), plt.bar(), plt.barh() 등을 활용해 여러 방식으로 표현
2️⃣ 남녀 성별 인구 분포 분석 👫
지역별 남녀 성비를 그래프로 표현해볼까요?
✅ 2-1. 남녀 성비 비교 (막대 그래프)
import csv import matplotlib.pyplot as plt f = open('./data/gender.csv') data = csv.reader(f) m = [] # 남성 인구 f = [] # 여성 인구 name = input('남녀 분포가 알고 싶은 지역 이름을 입력해주세요: ') for row in data: if name in row[0]: for i in row[3:104]: # 남성 데이터 (0~100세) m.append(-int(i)) # 왼쪽으로 출력하기 위해 음수로 변환 for i in row[106:]: # 여성 데이터 (0~100세) f.append(int(i)) plt.style.use('ggplot') plt.figure(figsize=(10,5), dpi=300) plt.rc('font', family='Malgun Gothic') plt.rcParams['axes.unicode_minus'] = False plt.title(name + ' 지역의 인구 구조') plt.barh(range(101), m, label='Male') # 남성 데이터 plt.barh(range(101), f, label='Female') # 여성 데이터 plt.legend() plt.show()
✅ 2-2. 남녀 성비 비교 (선 그래프)
import csv import matplotlib.pyplot as plt f = open('./data/gender.csv') data = csv.reader(f) m = [] f = [] name = input('궁금한 지역을 입력해주세요: ') for row in data: if name in row[0]: for i in range(3, 104): m.append(int(row[i])) # 남성 데이터 f.append(int(row[i + 103])) # 여성 데이터 break plt.plot(m, label='Male') # 남성 선 그래프 plt.plot(f, label='Female') # 여성 선 그래프 plt.legend() plt.show()
🔎 📌 분석 포인트
✅ 남성 인구는 음수로 변환하여 가로 막대 그래프에서 왼쪽으로 출력
✅ plt.plot()을 사용하여 선 그래프로 표현 가능
✅ 지역별 남녀 성비 차이를 직관적으로 확인 가능
3️⃣ 파이 차트 🥧
파이 차트를 활용하면 전체 대비 특정 데이터의 비율을 쉽게 확인할 수 있습니다.
✅ 3-1. 기본 파이 차트
import matplotlib.pyplot as plt plt.rc('font', family='Malgun Gothic') # 한글 폰트 설정 size = [2441, 2312, 1031, 1233] # 데이터 값 label = ['A형', 'B형', 'AB형', 'O형'] # 라벨 설정 color = ['darkmagenta', 'pink', 'deeppink', 'hotpink'] plt.pie(size, labels=label, colors=color, autopct='%.1f%%', explode=(0, 0, 0.1, 0)) # AB형만 강조 plt.axis('equal') # 원형 유지 plt.legend() plt.show()
✅ 3-2. 지역별 남녀 성비 파이 차트
import csv import matplotlib.pyplot as plt f = open('./data/gender.csv') data = csv.reader(f) name = input('찾고 싶은 지역 이름을 입력해주세요: ') size = [] for row in data: if name in row[0]: m = sum(map(int, row[3:104])) # 남성 인구 총합 f = sum(map(int, row[106:])) # 여성 인구 총합 size = [m, f] break plt.rc('font', family='Malgun Gothic') label = ['Male', 'Female'] color = ['crimson', 'darkcyan'] plt.pie(size, labels=label, colors=color, autopct='%.1f%%', startangle=90) # 90도 회전 plt.title(name + ' 지역의 남녀 성비') plt.legend() plt.show()
🔎 📌 분석 포인트
✅ 전체 데이터 중 특정 데이터의 비율을 표현
✅ explode 옵션을 활용해 특정 데이터 강조 가능
✅ autopct='%.1f%%'을 사용하여 백분율 표시
4️⃣ 산점도 (Scatter Plot) 📍
산점도는 두 개의 데이터를 비교할 때 유용합니다.
✅ 4-1. 기본 산점도
import matplotlib.pyplot as plt plt.style.use('ggplot') x = [1, 2, 3, 4] y = [10, 20, 30, 40] size = [100, 25, 200, 180] plt.scatter(x, y, s=size, c=range(4), cmap='jet') plt.colorbar() plt.show()
✅ 4-2. 남녀 인구 산점도
import csv import matplotlib.pyplot as plt import math f = open('./data/gender.csv') data = csv.reader(f) m = [] f = [] size = [] name = input('궁금한 지역을 입력해주세요: ') for row in data: if name in row[0]: for i in range(3, 104): m.append(int(row[i])) f.append(int(row[i + 103])) size.append(math.sqrt(int(row[i]) + int(row[i + 103]))) # 크기 조절 break plt.rc('font', family='Malgun Gothic') plt.scatter(m, f, s=size, c=range(101), cmap='jet', alpha=0.5) plt.colorbar() plt.plot(range(max(m)), range(max(m)), 'g') # 추세선 추가 plt.xlabel('Male') plt.ylabel('Female') plt.show()
🔎 📌 분석 포인트
✅ scatter()를 사용해 두 데이터의 관계를 시각화
✅ math.sqrt()를 활용해 점 크기 조절
✅ plt.plot()을 사용해 추세선 추가 가능
🏆 결론
✅ 다양한 시각화 방법을 통해 인구 데이터를 쉽게 분석 가능
✅ 파이썬 matplotlib을 활용하면 직관적인 그래프 제작 가능
✅ 파이 차트, 산점도, 막대 그래프, 선 그래프를 적절히 조합하여 데이터 인사이트 도출'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[2월 1주차-2/7(1)]🔥 NumPy 기초 정리: 다차원 배열과 연산 완벽 가이드 (0) 2025.02.07 [2월 1주차-2/6(5)]🚇 지하철 시간대별 승하차 인원 분석 (1) 2025.02.06 [2월 1주차-2/6(3)]📊 히스토그램 & 박스플롯 시각화 정리 (0) 2025.02.06 [2월 1주차-2/6(2)]🎂 내 생일의 기온 변화를 시각화하기 (0) 2025.02.06 [2월 1주차-2/6(1)]📊 Python 데이터 시각화 & CSV 데이터 처리 정리 (0) 2025.02.06