์ ์ฃผ๋ ์ฑ๋ณ ์ธ๊ตฌ ํ์ด ์ฐจํธ๋ก ์๊ฐํ
์ด ์ฝ๋๋ '์ ์ฃผํน๋ณ์์น๋'์ ๋จ์ฑ๊ณผ ์ฌ์ฑ์ 0์ธ๋ถํฐ 100์ธ๊น์ง์ ์ธ๊ตฌ ๋ถํฌ๋ฅผ ํ์ด ์ฐจํธ๋ก ์๊ฐํํ๋ ๊ณผ์ ์ ์ํํ๋ค.
๋จผ์ CSV ํ์ผ์ ์ฝ์ด์จ ํ, '์ ์ฃผํน๋ณ์์น๋'์ธ ํ์ ์ฐพ๋๋ค. ๊ทธ๋ฐ ๋ค์, ํด๋น ํ์์ ๋จ์ฑ ๋ฐ์ดํฐ์ ์ฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ male ๋ฆฌ์คํธ์ female ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค. ๋จ์ฑ ๋ฐ์ดํฐ๋ ์์๋ก ๋ณํํ์ฌ ์ ์ฅํ๊ณ , ์ฌ์ฑ ๋ฐ์ดํฐ๋ ์์๋ก ์ ์ฅํ๋ค. ์ฌ๊ธฐ์ break๋ฌธ์ '์ ์ฃผํน๋ณ์์น๋' ํ์ ์ฐพ์ ํ์๋ ๋ ์ด์ ๋ค์ ํ์ ์ฝ์ง ์๊ณ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๊ทธ ํ, plt.pie([10,20])๋ ๋จ์ฑ๊ณผ ์ฌ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ์ํด ๋จ์ฑ๊ณผ ์ฌ์ฑ์ ์ด ํฉ๊ณ๋ฅผ ๊ฐ๊ฐ 10๊ณผ 20์ผ๋ก ์์๋ก ์ค์ ํ์ฌ ํ์ด ์ฐจํธ๋ฅผ ๊ทธ๋ฆฐ๋ค. ์ด๋ ์ค์ ๋จ์ฑ๊ณผ ์ฌ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ์ง ์๊ณ , ์์์ ๊ฐ์ ์ฌ์ฉํ ๊ฒ์ด๋ค. ๊ทธ๋์ '10'๊ณผ '20'์ด ํ์ด ์ฐจํธ์ ํํ๋๋ค.
์ค์ ๋ก๋ plt.pie() ํจ์์ ์ธ์๋ก ๋จ์ฑ๊ณผ ์ฌ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ฌ ๊ฐ๊ฐ์ ๋น์จ์ ํ์ํด์ผํ๋ค.
import csv
import matplotlib.pyplot as plt
f = open('gender.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter=',')
header = next(data)
male =[]
female = []
for row in data:
if '์ ์ฃผํน๋ณ์์น๋' in row[0]:
for i in row[3:104]:
male.append(-int(i))
for i in row[106:]:
female.append(int(i))
break
print(male)
print(female)
plt.pie([10,20])
plt.show()
์ ์ฃผ๋ํน๋ณ์์น๋์ ๋จ์ฑ๊ณผ ์ฌ์ฑ์ธ๊ตฌ ์ดํฉ ๊ณ์ฐ ์์
from logging import critical
import csv
import matplotlib.pyplot as plt
f = open('gender.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter=',')
header = next(data)
male =0
female = 0
total = []
for row in data:
if '์ ์ฃผํน๋ณ์์น๋' in row[0]:
for i in range(101):
male += int(row[i+3])
female += int(row[i+106])
break
total.append(male)
total.append(female)
print(total) # [335813, 331524]
plt.title('jeju')
plt.show()
for row in data: ๋ฐ์ดํฐ๋ฅผ ํ ์ค์ฉ ๋ฐ๋ณตํ๋ฉด์ ์ฒ๋ฆฌํ๋ค.
- if '์ ์ฃผํน๋ณ์์น๋' in row[0]:: ๋ฐ์ดํฐ์ ์ฒซ ๋ฒ์งธ ์ด์ด '์ ์ฃผํน๋ณ์์น๋'์ธ์ง ํ์ธ
- for i in range(101):: 0์ธ๋ถํฐ 100์ธ๊น์ง์ ๊ฐ ์ฐ๋ น ๊ทธ๋ฃน์ ๋ํด ๋ฐ๋ณตํ๋ค.
- male += int(row[i+3]): ๋จ์ฑ ์ธ๊ตฌ๋ฅผ ๋์ ํ๊ณ , ๋ฐ์ดํฐ์ 4๋ฒ์งธ ์ด๋ถํฐ ๋จ์ฑ ์ธ๊ตฌ๊ฐ ์์๋๋ค.
- female += int(row[i+106]): ์ฌ์ฑ ์ธ๊ตฌ๋ฅผ ๋์ ํ๊ณ , ๋ฐ์ดํฐ์ 107๋ฒ์งธ ์ด๋ถํฐ ์ฌ์ฑ ์ธ๊ตฌ๊ฐ ์์๋๋ค.
- for i in range(101):: 0์ธ๋ถํฐ 100์ธ๊น์ง์ ๊ฐ ์ฐ๋ น ๊ทธ๋ฃน์ ๋ํด ๋ฐ๋ณตํ๋ค.
ํ์ด ์ฐจํธ๋ฅผ ํ์ฉํ ์ฑ๋ณ ์ธ๊ตฌ ๋ถํฌ
color = ['crimson', 'darkcyan']
plt.title('poplulation distributon by gender')
plt.pie(total, labels=['male', 'female'], colors=color, autopct='%.1f%%', startangle=90)
plt.legend()
plt.show()
- plt.pie(total, labels=['male', 'female'], colors=color, autopct='%.1f%%', startangle=90): ์ํ ๊ทธ๋ํ๋ฅผ ์์ฑ.
- total์๋ ๋จ์ฑ๊ณผ ์ฌ์ฑ์ ์ด ์ธ๊ตฌ๊ฐ ๋ฆฌ์คํธ๋ก ์ ์ฅ๋๋ค, labels๋ ๊ฐ ํ์ด ์กฐ๊ฐ์ ๋ํ ๋ผ๋ฒจ์ ์ค์ ํ๊ณ , colors๋ ๊ฐ ํ์ด์ ์์์ ์ง์ ํ๋ค. autopct๋ ํ์ด ์์ ํ์๋ ํผ์ผํธ ๊ฐ์ ํ์ํํ๋ค .1f%%์ ์์์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ๊น์ง ํ์ํ๊ณ ํผ์ผํธ ๊ธฐํธ๋ฅผ ์ถ๊ฐํ๋ค๋ ์๋ฏธ๋ก. startangle=90์ ์์ ๊ฐ๋๋ฅผ 90๋๋ก ์ค์ ํ์ฌ ๊ทธ๋ํ๋ฅผ ํ์ ์ํจ๋ค.
๊ฐ ํ์กํ ์ ํ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ํ์ด ์ฐจํธ๋ก ์๊ฐํ
๊ฐ ํ์กํ ์ ํ(A, B, AB, O)์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ํ์ด ์ฐจํธ๋ก ์๊ฐํํ๋ ์์
import matplotlib.pyplot as plt
label= ['A','B','AB','O']
color = ['darkmagenta', 'deeppink', 'red', 'green']
plt.pie([10,20,30,40], labels=label, colors =color)
plt.legend()
plt.show()
- plt.pie([10,20,30,40], labels=label, colors=color): plt.pie() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด ์ฐจํธ๋ฅผ ์์ฑํ๋ค. ๊ฐ ํ์กํ ์ ํ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ [10, 20, 30, 40]๋ก ์ค์ ๋์ด ์๊ณ , ์ด๋ ๊ฐ ํ์กํ ์ ํ์ ๋ํ ๋น์จ์ ๋ํ๋ธ๋ค. ์๋ฅผ ๋ค์ด, 'A'ํ์ด 10%, 'B'ํ์ด 20%, 'AB'ํ์ด 30%, 'O'ํ์ด 40%๋ฅผ ์ฐจ์งํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- plt.legend(): ๋ฒ๋ก๋ฅผ ํ์ํ๋ ํจ์๋ก ์ด ํจ์๋ฅผ ํธ์ถํ๋ฉด ํ์ด ์ฐจํธ์ ์ฌ์ฉ๋ ๊ฐ ๋ผ๋ฒจ์ ๋ํ ๋ฒ๋ก๊ฐ ํ์๋๋ค.