์ด์ ์๋ ์ฐ๋ น๋ณ๋ก 0์ธ๋ถํฐ 100์ธ๊น์ง์ ์ธ๊ตฌ ํํฉ์ ์๊ฐํํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ, ์ด๋ฒ์๋ ์ง์ญ๋ณ๋ก ๋จ๋ ์ธ๊ตฌ์ ๋น์จ๊ณผ ์ธ๋๋น ์ธ๊ตฌ๋ฅผ ๋น๊ตํ์ฌ ์๊ฐํํ๋ ค๊ณ ํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ ์ง์ญ์ ์ฑ๋ณ ์ธ๊ตฌ ๋ถํฌ์ ์ธ๋๋น ํ๊ท ์ธ๊ตฌ๋ฅผ ํ์ธํ ์ ์๋ค.
๋ชฉ์ฐจ
์ ๋ ฅ๋ ์ง์ญ์ ์ฐ๋ น๋ณ ์ธ๊ตฌ ๋ถํฌ ์๊ฐํ
import csv
import matplotlib.pyplot as plt
f = open('age.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter=',')
header = next(data)
result =[]
dongname = input('์ฐพ๊ณ ์ถ์ ์ง์ญ์ ์ด๋ฆ์ ์๋ ค์ฃผ์ธ์. ')
for row in data:
if dongname in row[0]:
for i in row[3:]:
i = int(i.replace(',',''))
result.append(int(i))
print(result)
plt.style.use('ggplot')
plt.bar(range(101), result)
plt.show()
f.close()
์ด๋ฒ์๋ ํน์ ์ง์ญ์ด ์๋ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ ๊ฐ์ ๋ฐ์์ ์ถ๋ ฅ ํ๋ค. ์ฌ์ฉ์์๊ฒ "์ฐพ๊ณ ์ถ์ ์ง์ญ์ ์ด๋ฆ์ ์๋ ค์ฃผ์ธ์."๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋๊ณ , ์ฌ์ฉ์๊ฐ ํค๋ณด๋๋ก ์ ๋ ฅํ ๋ด์ฉ์ ๋ณ์ dongname์ ์ ์ฅ๋๋ค. ์ดํ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ง์ญ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ํด๋น ์ง์ญ์ ์ฐ๋ น๋ณ ์ธ๊ตฌ๋ฅผ ์๊ฐํํ๊ธฐ ์ํด ์ ๋ ฅ์ ๋ฐ๋๋ค.
๊ทธ ํ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ฉด์ ์ ๋ ฅ๋ ์ง์ญ์ ํด๋นํ๋ ํ์ ์ฐพ๊ณ , ํด๋น ํ์์๋ ๋จ์ฑ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๊ณ ์ฌ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ง์ง๋ง์ ์์นํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ญ์์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์ฝ์ด์จ๋ค. ์ด๋ฅผ ์ํด ๋ฐ๋ณต๋ฌธ์ ํตํด 0๋ถํฐ 100๊น์ง์ ์ธ๋ฑ์ค๋ฅผ ๊ฑฐ๊พธ๋ก ์ฝ์ด์์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์๋ก ๋ณํํ์ฌ ๋จ์ฑ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค.
csv ํ์ผ ํ๋ ฌ์ ๋(๋ค)์์ -1 ํ๋ค. ์ฌ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ค(๊ฐ์ฅ์ค๋ฅธ์ชฝ)์ ์๊ธฐ๋๋ฌธ์ -1๋ถํฐ์ด๋ค.
์ด ๋ฐ์ดํฐ๋ฅผ ํ์ ์บ์คํ ํ๋๋กํ๋ค. ์์๋๋ก ์ฝ์ด์ male์ ๋ฃ๋๋ค.
csv ํ์ผ ๋ถ์ํ์ฌ ์ถ๋ ฅํ๊ธฐ
ํ์๋ถ ํํ์ด์ง > ์ฃผ๋ฏผ๋ฑ๋ก์ธ๊ตฌ ํต๊ณ > ๋ฐ์ดํ ์ ์ฅ `gender.csv`
step1. ๋จ๋ ๋ฐ์ดํฐ ์ถ๋ ฅ
step2. ์ฌ์ฑ ๋ฐ์ดํฐ๋ 100์ธ๋ถํฐ -0์ธ๋ก reverse() ์ญ์ํด์ผํจ
female.reverse()
Bar์ ํํ๋ก ์๊ฐํํ๊ธฐ
์ฝ๋๋ ๋จ์ฑ๊ณผ ์ฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ๋ฐ ํํ๋ก ์๊ฐํํ๋ ๊ณผ์ ์ ์ํํ๋ค. ๋จผ์ range(101)์ ํตํด x์ถ ๋ฒ์๋ฅผ ์ค์ ํ๊ณ , female.reverse()๋ฅผ ํตํด ์ฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ญ์์ผ๋ก ์ ๋ ฌํ๋ค. ๊ทธ ํ์ plt.bar() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ ํํ๋ก ์๊ฐํํ๊ณ , plt.show()๋ฅผ ํตํด ๊ทธ๋ํ๋ฅผ ์ถ๋ ฅํ๋ค.
female.reverse()
plt.bar(range(101), male)
plt.bar(range(101), female)
plt.show()
f.close()
barh() ํจ์๋ฅผ ์ฌ์ฉํ ์ํ ๋ง๋ ๊ทธ๋ํ
๋จ์ฑ ๋ฐ์ดํฐ๋ ์์๋ก ๋ณํํ์ฌ ํ๋์ ๋ง๋ ๊ทธ๋ํ์ ํ์ํ๊ณ , ์ฌ์ฑ ๋ฐ์ดํฐ๋ ์์๋ก ํ์ํ์ฌ ๋ค๋ฅธ ๋ง๋ ๊ทธ๋ํ์ ๊ฒน์น์ง ์๋๋ก ํ์๋ค. ์ฌ์ฑ ๋ฐ์ดํฐ๋ ์ญ์์ผ๋ก ์ ๋ ฌ๋ ํ์ ํ์๋์ด์ผ ํ๋ฏ๋ก female.reverse()๋ฅผ ์ฌ์ฉํ์ฌ ์ญ์์ผ๋ก ์ ๋ ฌํ์๋ค.
๋ง์ง๋ง์ผ๋ก, plt.barh() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ๋ง๋ ๊ทธ๋ํ๋ก ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ , ๊ฐ๊ฐ์ ๋ง๋์ ๋ผ๋ฒจ์ ์ง์ ํ์ฌ ์ฑ๋ณ์ ํ์ํ์๋ค. ๊ทธ๋ฆฌ๊ณ plt.legend() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๋ก๋ฅผ ์ถ๊ฐํ๋ค. ์๋ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด ๋น์จ์ ํ๋์ ์์ ์๋ค.
import csv
import matplotlib.pyplot as plt
f = open('gender.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter=',')
header = next(data)
male = [] #๋จ์ ๋ฐ์ดํฐ
female = [] #์ฌ์ ๋ฐ์ดํฐ
dongname = input('์ฐพ๊ณ ์ถ์ ์ง์ญ์ ์ด๋ฆ์ ์๋ ค์ฃผ์ธ์. ')
for row in data:
if dongname in row[0]:
for i in range(0,101):
male.append(-int(row[i+3]))
#print(int(row[i+3]))
female.append(int(row[-(i+1)]))
#print(int(row[-(i+1)]))
female.reverse()
plt.title('population distribution by gender')
plt.barh(range(101), male, label='man')
plt.barh(range(101), female, label='woman')
plt.legend()
plt.show()
f.close()