- 인구 데이터 파일 읽어오기
- 전체데이터를 한줄씩 읽음
- 우리 동네의 데이터인지 확인
- 우리 동네의 0살 ~ 100살 이상까지의 인구수를 순서대로 저장
- 저장된 인구수 시각화
import csv
f = open('people.csv')
data = csv.reader(f)
for row in data:
print(row)
A in B 연산 이용 : A가 B에 있으면 True
print('종로구' in '서울특별시 종로구 사직동(1111053000)')
print('사직동' in '서울특별시 종로구 사직동(1111053000)')
print('()' in '서울특별시 종로구 사직동(1111053000)')
import csv
f = open('people.csv')
data = csv.reader(f)
for row in data:
if '신도림' in row[0]: #row[0]에 지역명 저장되어 있음
print(row)
import csv
f = open('people.csv')
data = csv.reader(f)
for row in data:
if '신도림' in row[0]:
for i in row[3:]:
print(i)
import csv
f = open('people.csv')
data = csv.reader(f)
result = []
for row in data:
if '신도림' in row[0]:
for i in row[3:]:
result.append(i)
print(result)
import matplotlib.pyplot as plt
plt.style.use('ggplot') #격자무늬 스타일 지정
plt.plot(result)
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('people.csv')
data = csv.reader(f)
x = input('인구 구조가 알고 싶은 지역의 이름(읍면동 단위)을 입력해 주세요 :')
result = []
for row in data:
if x in row[0]:
for i in row[3:]:
result.append(int(i))
print(result)
plt.style.use('ggplot')
plt.plot(result)
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('people.csv')
data = csv.reader(f)
x = input('인구 구조가 알고 싶은 지역의 이름(읍면동 단위)을 입력해 주세요 :')
result = []
for row in data:
if x in row[0]:
for i in row[3:]:
result.append(int(i))
plt.style.use('ggplot')
plt.rc('font', family='AppleGothic')
plt.title(x + '지역의 인구 구조')
plt.plot(result)
plt.show()
bar(막대를 표시할 위치, 막대의 높이) 함수 이용 : 막대길이는 각 데이터의 크기 의미. 두 매개변수의 개수가 동일해야 함.
import matplotlib.pyplot as plt
plt.bar([0, 1, 2, 4, 6, 10], [1, 2, 3, 5, 6, 7])
plt.show()
import matplotlib.pyplot as plt
plt.bar([0,3,2,1,6,10], [1,2,3,5,6,7])
plt.show()
import matplotlib.pyplot as plt
plt.bar(range(6), [1,2,3,5,6,7])
plt.show()
동네 인구구조 막대 그래프로 표현
import csv
f = open('people.csv')
data = csv.reader(f)
result = []
for row in data:
if '신도림' in row[0]:
for i in row[3:]:
result.append(int(i))
import matplotlib.pyplot as plt
plt.bar(range(101), result)
plt.show()
barh() : 수평으로 그려지는 막대 그래프
import csv
f = open('people.csv')
data = csv.reader(f)
result = []
for row in data:
if '신도림' in row[0]:
for i in row[3:]:
result.append(int(i))
import matplotlib.pyplot as plt
plt.barh(range(101), result)
plt.show()
남성데이터 : 인덱스 3부터 시작함(0살~)
여성데이터 : 인덱스 -1부터 시작함(100살~) 다시 역순으로 저장해서 정렬
import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
for row in data:
if '신림' in row[0]:
for i in range(0,101):
m.append(int(row[i+3]))
f.append(int(row[-(i+1)]))
f.reverse()
print(m)
for row in data:
if '신림' in row[0]:
for i in range(0,101):
m.append(int(row[i+3]))
f.append(int(row[-(i+1)]))
f.reverse()
for row in data:
if '신림' in row[0]:
for i in row[3:104]:
m.append(int(i))
for i in row[106:]:
f.append(int(i))
import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
for row in data:
if '신도림' in row[0]:
for i in range(0,101):
m.append(int(row[i+3]))
f.append(int(row[-(i+1)]))
f.reverse()
print(len(m))
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
plt.title('신도림 지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label='남성')
plt.barh(range(101), f, label='여성')
plt.legend()
plt.show()
import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
for row in data:
if '신도림' in row[0]:
for i in range(0,101):
m.append(-int(row[i+3]))
f.append(int(row[-(i+1)]))
f.reverse()
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title('신도림 지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label='남성')
plt.barh(range(101), f, label='여성')
plt.legend()
plt.show()
import csv
f = open('gender.csv')
data = csv.reader(f)
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
m = []
f = []
for row in data:
if x in row[0]:
for i in range(0,101):
m.append(-int(row[i+3]))
f.append(int(row[-(i+1)]))
f.reverse()
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title(x + '지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label='남성')
plt.barh(range(101), f, label='여성')
plt.legend()
plt.show()
import csv
f = open('gender.csv')
data = csv.reader(f)
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
m = []
f = []
for row in data:
if x in row[0]:
for i in row[3:104]:
m.append(-int(i))
for i in row[106:]:
f.append(int(i))
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(10,5),dpi=300)
plt.rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title(x + '지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label='남성')
plt.barh(range(101), f, label='여성')
plt.legend()
plt.show()
처음 만난 데이터만 m, f에 추가하는 코드
import csv
f = open('gender.csv')
data = csv.reader(f)
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
m = []
f = []
for row in data:
if x in row[0]:
for i in row[3:104]:
m.append(-int(i))
for i in row[106:]:
f.append(int(i))
break
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.figure(figsize=(10,5),dpi=300)
plt.rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False
plt.title(x + '지역의 남녀 성별 인구 분포')
plt.barh(range(101), m, label='남성')
plt.barh(range(101), f, label='여성')
plt.legend()
plt.show()
- 원 그래프 : 전체 데이터 중 특정 데이터의 비율
import matplotlib.pyplot as plt
plt.pie([10, 20])
plt.show()
import matplotlib.pyplot as plt
size = [2441, 2312, 1031, 1233]
plt.axis("equal")
plt.pie(size)
plt.show()
axis() : 더 동그란 원을 그릴 수 있음
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
size = [2441, 2312, 1031, 1233]
label = ['A형', 'B형', 'O형', 'AB형']
plt.axis("equal")
plt.pie(size, labels= label)
plt.show()
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
size = [2441, 2312, 1031, 1233]
label = ['A형', 'B형', 'O형', 'AB형']
plt.axis("equal")
plt.pie(size, labels= label, autopct = '%.1f%%')
plt.legend()
plt.show()
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
size = [2441, 2312, 1031, 1233]
label = ['A형', 'B형', 'O형', 'AB형']
color = ['darkmagenta', 'yellow', 'hotpink', 'green']
plt.axis("equal")
plt.pie(size, labels= label, autopct = '%.1f%%', colors=color, explode=(0,0,0,0.1))
plt.legend()
plt.show()
import csv
f = open('gender.csv')
data = csv.reader(f)
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
size = []
for row in data:
m, f = 0,0
if x in row[0]:
for i in range(101):
m += int(row[i+3])
f += int(row[(i+106)])
break
size.append(m)
size.append(f)
print(size)
import matplotlib.pyplot as plt
plt.rc('font', family='AppleGothic')
color = ['crimson', 'darkcyan']
plt.axis('equal')
plt.pie(size, labels=['man', 'woman'], autopct='%.1f%%', colors = color, startangle=90)
plt.title(x + '지역의 남녀 성별 인구 분포')
plt.show()
- 가로축과 세로축 기준으로 두 요소가 서로 어떤 관계를 맺고 있는지 한 눈에 파악 가능
- x축과 y축에 해당하는 데이터의 상관관계를 표현할 때 사용하며 점이 흩어져있는 그래프
- 두 개의 축을 기준으로 데이터가 얼마나 퍼져있는지(분포) 알 수 있어 '산포도'라고도 불림
import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
for row in data:
if x in row[0]:
for i in range(3, 104):
m.append(int(row[i]))
f.append(int(row[(i+103)]))
break
import matplotlib.pyplot as plt
plt.plot(m, label='Male')
plt.plot(f, label='Female')
plt.legend()
plt.show()
import csv
f = open('gender.csv')
data = csv.reader(f)
result = []
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
for row in data:
if x in row[0]:
for i in range(3, 104):
result.append(int(row[i]) - int(row[(i+103)]))
break
import matplotlib.pyplot as plt
plt.bar(range(101), result)
plt.show()
scatter() 함수로 표현가능
- 가로축 : 지역의 남성 인구수
- 세로축 : 지역의 여성 인구수
- 산점도를 통해서 남여 인구수 사이의 관계 표현 가능
- 그래프 오른편 컬러바(color bar) : 각 점의 색깔로 나이대 표현 가능
- 초록색 선 : 남여 동일한 비율
import matplotlib.pyplot as plt
plt.scatter([1,2,3,4], [10,30,20,40])
plt.show()
데이터를 의미하는 점들의 분포를 상관관계를 파악할 수 있음.
- 점 크기를 다르게 하여 버블을 겹쳐서 표현 가능
- 버블 위치 : 남녀 성비
- 버블 크기 : 연령대별 인구수 표현
import matplotlib.pyplot as plt
plt.scatter([1,2,3,4], [10,30,20,40], s = [100, 200, 250, 300])
plt.show()
import matplotlib.pyplot as plt
plt.scatter([1,2,3,4], [10,30,20,40], s = [100, 200, 250, 300], c=['red','blue','green','gold'])
plt.show()
import matplotlib.pyplot as plt
plt.scatter([1,2,3,4], [10,30,20,40], s = [100, 200, 250, 300], c=range(4))
plt.colorbar()
plt.show()
import matplotlib.pyplot as plt
plt.scatter([1,2,3,4], [10,30,20,40], s = [100, 200, 250, 300], c=range(4), cmap='jet')
plt.colorbar()
plt.show()
랜덤한 100개의 점 나타내기
import matplotlib.pyplot as plt
import random
x = []
y = []
size = []
for i in range(100):
x.append(random.randint(50, 100))
y.append(random.randint(50, 100))
size.append(random.randint(10, 100))
plt.scatter(x, y, s=size, c=size, cmap='jet', alpha=0.7)
plt.colorbar()
plt.show()
import csv
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
for row in data:
if x in row[0]:
for i in range(3, 104):
m.append(int(row[i]))
f.append(int(row[(i+103)]))
break
import matplotlib.pyplot as plt
plt.scatter(m, f)
plt.show()
import csv
import math
f = open('gender.csv')
data = csv.reader(f)
m = []
f = []
size = []
x = input('찾고 싶은 지역의 이름을 알려주세요 : ')
for row in data:
if x 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
import matplotlib.pyplot as plt
plt.style.use('ggplot')
plt.rc('font', family='AppleGothic')
plt.figure(figsize=(10,5), dpi=300)
plt.title(x + '지역의 성별 인구 그래프')
plt.scatter(m, f, c=range(101), alpha=0.5, cmap='jet')
plt.colorbar()
plt.plot(range(max(m)), range(max(m)),'g')
plt.xlabel('남성 인구수')
plt.ylabel('여성 인구수')
plt.show()