파이썬 코드 질문
본문
import csv f = open('gender.csv') data = csv.reader(f) size = [] name = input('찾고 싶은 지역의 이름을 알려주세요:') for row in data: if name in row[0]: m = 0 f = 0 for i in range(101): m += int(row[i + 3].replace(',', '')) f += int(row[i + 106].replace(',', '')) break size.append(m) size.append(f) import matplotlib.pyplot as plt label = ['남성', '여성'] color = ['crimson', 'darkcyan'] plt.rc('font', family='Malgun Gothic') plt.axis('equal') plt.pie(size, labels=label, colors=color, autopct='%.1f%%', startangle=90) plt.title(name + ' 지역의 남녀 성별 비율') plt.show()
문제가 0세이상 20세미만 남녀비율을 파이차트로 나타내는건데 0세부터 100세까지는 구하는 법을 알겠는데 응용이 안되서 질문드립니다
답변 1
안녕하세요? ^^
질문하신 내용은 CSV 파일의 구조를 봐야 명확히 답변드릴 수 있겠네요 :)
올려주신 소스만 놓고 말씀드리면요~
우선 csv.reader() 함수에 대해 설명드리면,
이 함수는 iterator 타입의 객체를 반환하고,
for문으로 돌리면 CSV 파일의 각 열의 컬럼들을 요소로 하는 리스트를 반환합니다 ^^
name = input('찾고 싶은 지역의 이름을 알려주세요:')
for row in data:
if name in row[0]:
m = 0
f = 0
for i in range(101):
m += int(row[i + 3].replace(',', ''))
f += int(row[i + 106].replace(',', ''))
break
올려주신 소스 중에 위 부분을 놓고보면,
CSV 파일의 각 열의 첫 번째 요소는 '지역명'이고,
4~104번째 요소는 0세부터 100세까지의 '남성'의 수,
107~207번재 요소는 0세부터 100세까지의 '여성'의 수를 포함하고 있다고 추측되네요 :)
따라서 원하시는 바와 같이 0세 이상 20세 미만의 남녀 비율을 구하려면
for문을 range(20)으로 수정하여 4~23번째 요소와 107~126번째 요소의 합을 구하면 되겠네요!
for row in data:
if name in row[0]:
m = 0
f = 0
for i in range(20):
m += int(row[i + 3].replace(',', ''))
f += int(row[i + 106].replace(',', ''))
break
그 다음에 matplotlib 모듈을 이용하여 파이 차트를 나타내는 부분은
올바르게 작성하셔서 수정할 부분이 없을 것 같네요~ ^-^
조금이나마 도움이 되셨기를 바랄게요!
그럼 즐거운 주말 되세요 :)
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.