💻프로그래밍/🕵️‍♀️모두의데이터분석

[파이썬] 08. 막대그래프/수평막대그래프/항아리모양그래프

hyerimmy 2021. 1. 26. 19:12

📅 스터디 날짜 | 2021.01.22

📖 모두의 데이터 분석 | Unit 08 p109-123


#1 막대그래프

  • 막대그래프에서 막대의 길이는 각 데이터의 크기를 의미한다.
  • bar() : 막대그래프를 표현하는 명령어, 두 가지 매개변수가 필요하다.
  • bar(막대를 표시할 위치, 막대의 높이) 두 종류의 값들은 개수가 일치해야 함.
  • range() 함수를 사용해서 막대 그래프 위치 표현할 수 있다.
    plt.bar(range(6), [1,2,3,4,6,7])

  • barh() : 수평막대그래프로 표현하는 명령어
import matplotlib.pyplot as plt

plt.bar([0,1,2,4,6,10], [1,2,3,5,6,7])
plt.show()

#range 함수를 활용해 막대그래프 표현
plt.bar(range(6), [1,2,3,5,6,7])
plt.show()

출력결과

 

import csv
f = open('age.csv')
data = csv.reader(f)

result = []
for row in data :
    if '신도림' in row[0] :			#신도림의 데이터 중
        for i in row[3:] :			#0세부터 100세이상 인구수를
            result.append(int(i))		#result 리스트에 입력
            
import matplotlib.pyplot as plt

#막대그래프
plt.bar(range(101), result)
plt.show()

#수평막대그래프
plt.barh(range(101), result)
plt.show()

출력결과

 

#2 항아리 모양 그래프

gender.csv

  • 남성 데이터를 리스트 m에, 여성 데이터를 리스트 f에 각각 저장한다.

  • 여성데이터 저장하는 방법 1
    • 여성 데이터의 경우 뒤에서 첫 번째 데이터(index -1)부터 순차적으로 저장한 후, 역순으로 뒤집는다.
    • reverse() : 리스트의 값을 역순으로 재배열하는 함수
  • 여성데이터 저장하는 방법2
    • index 106번 값부터 차례대로 저장한다.
  •  
  • 남성데이터를 왼쪽에 출력하기 위해, m리스트의 값들을 모두 음수로 바꾼다.
  • 마이너스기호(-) 깨짐 해결 plt.rcParams['axes.unicode_minus']=False

 

# 남성 데이터와 여성 데이터를 각각수평 막대 그래프로 나태내기

import csv
f = open ('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] : # index 3~104 값
            m.append(-int(i)) # 왼쪽에 출력하기 위해 음수로 변환해 m리스트에 저장
        for i in row[106:] : # index 106~ 값
            f.append(int(i)) # f리스트에 저장
            
import matplotlib.pyplot as plt
#plt.rc('font',family='Malgun Gothic')			#글꼴설정
plt.title(name + '지역의 남녀 성별 인구 분포')		#제목설정
plt.rcParams['axes.unicode_minus']=False		# - 기호 깨짐 해결
plt.barh(range(101),m, label = '남성')
plt.barh(range(101),f, label = '여성')
plt.legend()
plt.show()

출력결과

 


😌