파이썬 코드 질문

파이썬 코드 질문

QA

파이썬 코드 질문

본문

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 모듈을 이용하여 파이 차트를 나타내는 부분은

 

올바르게 작성하셔서 수정할 부분이 없을 것 같네요~ ^-^

 

 

조금이나마 도움이 되셨기를 바랄게요!

 

그럼 즐거운 주말 되세요 :)

답변을 작성하시기 전에 로그인 해주세요.
전체 123,622 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT