๋ชฉ์ฐจ
์ฐ๋ฆฌ ๋๋ค ์ธ๊ตฌ ํต๊ณ ๋ฐ์ดํฐ ๋ถ์
์ธ๊ตฌ ํต๊ณ ๋ฐ์ดํฐ ๋ค์ด๋ก๋
- ๊ฒ์ "์ฃผ๋ฏผ๋ฑ๋ก ์ธ๊ตฌํต๊ณ ๋ฐ์ดํฐ" https://jumin.mois.go.kr/
- ํ์ ์์ ๋ถ์์ ์ฃผ๋ฏผ๋ฑ๋ก ์ธ๊ตฌํต๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ด ์ธ๊ตฌ์๋ฅผ ํ๋์ ๋ณผ์ ์๋๋ก ๋ด๊ฐ ๋ณด๊ณ ์ถ์ ๋ด์ฉ์ ์ฐ๋๋ณ ์๋ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ์ ์๋ค. ํน์ ๋ฐ์ดํฐ๋ csv ๋๋ excelํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ผ๋ฉด ๋๋ค. 2024๋ ๊ธฐ์ค์ผ๋ก ์ ๊ตญ ๋๋ณ ์ธ๊ตฌํํฉ์ด ๋์จ๋ค.
์ธ๊ตฌํต๊ณ ๋ฐ์ดํฐ ๋ถ์์ ์ํ ์ค๋น๊ณผ์
- ๊ตฌ๊ธ ์ฝ๋ฉ์ฌ์ฉ
- ๊ตฌ๊ธ ์ฝ๋ฉ์์ ์ ๋ ธํธ๋ฅผ ๋ง๋ ๋ค.
- ํ์ผ ์ด๋ฆ์ "์ธ๊ตฌํต๊ณ.ipynb"๋ก ์ค์
- ๋ฐ์ดํฐ ๋ค์ด๋ก๋ ๋ฐ ์ค์
- ์ต์์ ๋ฃจํธ์์ content ํด๋๋ฅผ ์ฐพ๋๋ค.
- ๋ค์ด๋ก๋ ๋ฐ์ "age.csv"ํ์ผ์ ํด๋น ๊ฒฝ๋ก ๋ฃ๋๋ค.
- ๊ฐ์ค ์ค์ ๊ณผ ๊ฒ์ฆ
- ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ํตํด ์ฌ๋ฌ๊ฐ์ง ๊ฐ์ค์ ์ค์ ํ๋ค.
- ์๋ฅผ ๋ค์ด, ์ฒ์ถ์ฐ ์์ ๊ฐ ๊ฐ์ฅ ๋ง์ ๋๋ค๋ ์ด๋์ธ์ง๋ฅผ ํ์ธํ๋ ๊ฒ ๋ฑ์ ๊ฐ์ค์ ์ค์ ํ ์ ์๋ค.
- ๊ฐ์ค ๊ฒ์ฆ์ ์ํ ๋ถ์
- ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ์ค์ ํ ๊ฐ์ค์ ๊ฒ์ฆํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ์ ์ถ์ฐ ์์ ๊ฐ ๊ฐ์ฅ ๋ง์ ๋๋ค๋ ํน์ ์ฐ๋ น๋์ ์ธ๊ตฌ ๋ถํฌ๋ฅผ ํ์ธํ๋ค.
- ์๊ฐํ๋ฅผ ํตํ ๋ถ์ ๊ฒฐ๊ณผ ํ์ธ
- ๋ฐ์ดํฐ์ ์์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ์ฌ ํ๋์ ์ฝ๊ฒ ๋ณผ ์ ์๋๋ก ํ๋ค.
- ์๋ฅผ ๋ค์ด, ํน์ ์ฐ๋ น๋์ ์ธ๊ตฌ ๋ถํฌ๋ฅผ ๋ง๋ ๊ทธ๋ํ๋ ์ ๊ทธ๋ํ ๋ฑ์ผ๋ก ์๊ฐํํ์ฌ ํ์ธํ๋ค.
์์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
ํ์ผ ๋ฐ์ดํฐ์์ ์ถ๋ ฅํ๊ธฐ
age.csv ํ์ผ์์ ๋ด๊ฐ ์ด๊ณ ์๋ ๋๋ค ๊ฒ์ํ๊ธฐ (ctrl + F)
- ํ์ผ ์ด๊ธฐ ๋ฐ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
- `csv` ๋ชจ๋์ ์ฌ์ฉํ์ฌ 'age.csv'ํ์ผ์ ์ฝ์ด์จ๋ค.
- ํ์ผ์ ์ฝ๊ธฐ๋ชจ๋(`r`)๋ก ์ด๊ณ , ์ธ์ฝ๋ฉ์ 'cp949' ๋ก ์ค์ ํ๋ค.
- `csv.reader()` ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ๋ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋๋ฐ, ๊ตฌ๋ถ์๋ ์ผํ(',')๋ก ์ง์ ํ๋ค.
- next(data)๋ฅผ ํตํด ์ฒซ ๋ฒ์งธ ํ(ํค๋)์ ๊ฑด๋๋ฐ๊ณ ๋ค์ ๋ฐ์ดํฐ๋ก ์ด๋ํ๋ค.
- ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
- ํ์ผ์ ๊ฐ ํ์ ๋ฐ๋ณตํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- `for row in data:`๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ์ ํ๋์ฉ ์ฝ์ด ์จ๋ค.
- ์ด๋, ํค๋๋ ์ด๋ฏธ next(data)๋ก ๊ฑด๋๋ฐ์๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ฒ์งธ ํ์ ๋ฐ์ดํฐ๋ก์จ ์ฒ๋ฆฌ๋๋ค.
- ์ฆ, ์ฒซํ์ธ ํ์ ๊ตฌ์ญ์ ์๋ตํ๊ณ ์๋ ๋ฐ์ดํฐ ๋ถํฐ ์ถ๋ ฅํ๊ธฐ ์ํจ
row[0]๋ฒ์งธ ๋ฐ์ดํฐ
- ํ์ผ ๋ซ๊ธฐ
- ํ์ผ์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๊ผญ ๋ซ์์ค๋ค.
- `f.close()`๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋ซ๋๋ค.
row[0] ์์ ์ฐ๋ฆฌ๋๋ค ์ฐพ๊ธฐ
ํ์ผ์์ ์ฝ์ด์จ ๋ฐ์ดํฐ๋ ๊ฐ ํ๋ง๋ค ์ง์ญ ์ด๋ฆ, ์ด ์ธ๊ตฌ์, ์ฐ๋ น๋ณ ์ธ๊ตฌ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ด ์ธ๊ตฌ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , 0์ธ๋ถํฐ 100์ธ๊น์ง์ ์ฐ๋ น๋ณ ์ธ๊ตฌ์๋ง ํ์ํ๋ค.
๋ฐ๋ผ์, ๊ฐ ํ์ ๋ฐ์ดํฐ ์ค์์ ์ธ ๋ฒ์งธ ์ด๋ถํฐ ๋ง์ง๋ง ์ด๊น์ง์ ์ ๋ณด๋ง ํ์ํ๋ค. ์ด๋, ์ธ ๋ฒ์งธ ์ด์ 0์ธ์ ์ธ๊ตฌ์๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ค ๋ฒ์งธ ์ด๋ถํฐ๋ ๊ฐ ์ฐ๋ น๋์ ์ธ๊ตฌ์๊ฐ ์ฐจ๋ก๋ก ๋์ด๋์ด ์๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๊ฐ ํ์ ์ธ๋ฑ์ค 3๋ถํฐ ๋๊น์ง์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ 0์ธ๋ถํฐ 100์ธ๊น์ง์ ์ฐ๋ น๋ณ ์ธ๊ตฌ์๋ฅผ ํ์ธํ ์ ์๋ค.
์ ๊ธธ์ 5๋ ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ , ํด๋น ๋๋ค์ ์ฐ๋ น๋ณ ์ธ๊ตฌ์ ์ถ๋ ฅ
- ์ฐ๋ฆฌ ๋๋ค ๋ฐ์ดํฐ ์ฐพ๊ธฐ
- ๊ฐ ํ์ ์ํํ๋ฉด์ '์ ๊ธธ์ 5๋'์ ํฌํจํ๋ ํ์ ์ฐพ๋๋ค.
- ํด๋น ํ์ ์ฐพ์ผ๋ฉด, ํด๋น ํ์ ์ธ๋ฑ์ค 3๋ถํฐ ๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
- ์ฐ๋ น๋ณ ์ธ๊ตฌ์ ์ถ๋ ฅ
- ์ฐพ์ ํ์ ์ธ๋ฑ์ค 3๋ถํฐ ๋๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณตํ๋ฉด์ ๊ฐ ์ฐ๋ น๋๋ณ ์ธ๊ตฌ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ด๋ฅผ ํตํด 0์ธ๋ถํฐ 100์ธ๊น์ง์ ์ฐ๋ น๋ณ ์ธ๊ตฌ์๊ฐ ์ถ๋ ฅ๋๋ค.
- ์ถ๋ ฅ ๋ฐ์ดํฐ
- 0์ธ๋ถํฐ 30๋ช
32๋ช
๋ถํฐ ์์ํ๋ค. ์์นํ๋ง๋ด๋ ์ ๊ธธ์ 5๋์ ์ ๋ค์ด ๋ง์ด ์๋ค.
- 0์ธ๋ถํฐ 30๋ช
32๋ช
๋ถํฐ ์์ํ๋ค. ์์นํ๋ง๋ด๋ ์ ๊ธธ์ 5๋์ ์ ๋ค์ด ๋ง์ด ์๋ค.
- ์์
๋ฐ์ดํฐ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋น๊ต
๋ฆฌ์คํธ ๊ตฌ์ฑ๊ณผ ํ์ ์บ์คํ
- ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ ์ถ๊ฐํ๊ธฐ: ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ธฐ ์ํด ๋น ๋ฆฌ์คํธ์ธ result๋ฅผ ๋ง๋ ๋ค. ๊ฐ ํ์ 0์ธ๋ถํฐ 100์ธ๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ ์ฐ๋ น๋์ ์ธ๊ตฌ์๋ฅผ result ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
- ํ์
์บ์คํ
: ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐํ ๋๋ ๋ฌธ์์ด ํํ๋ก ์ ์ฅ๋์ด ์๋ค. ๋ฐ๋ผ์ ์ซ์๋ก ๋ณํํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด int() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ๋ค.
์ ๋ด์ฉ์ ์ฝ๊ฒ ์ค๋ช ํ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋น ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ , ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด์์ ์ ์๋ก ๋ณํํ์ฌ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
C#๊ณผ C์ธ์ด ํ์ ์บ์คํ ์ ๋ํ ๋น๊ต
C#๊ณผ ํ์ด์ฌ์ int๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ํ์ ์บ์คํ ์ ํ ์ ์๋ค. ์ด๋ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ด ๊ตฌํ๋์ด ์์ด์ ๊ฐ๋ฅํ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ณ์๋ฅผ int๋ก ๊ฐ์ธ๊ฑฐ๋ ํน์ int๋ก ๋ณํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. ์ด๋ฅผํ ๋ฉด, ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊ฟ ๋๋ int("123")์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. ์ด์ฒ๋ผ ๊ฐ๋จํ ํํ์ ๋ฐ์ดํฐ ํ์ ๋ณํ์ ์ด ๋ ์ธ์ด์์ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
- C#
- int.Parse() : ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ๋ ๋ฉ์๋์ด๋ค. ์๋ฅผ ๋ค์ด, int.Parse("123")์ ๋ฌธ์์ด "123"์ ์ ์ 123์ผ๋ก ๋ณํํ๋ค.
- ๋ช ์์ ํ์ ์บ์คํ : C#์์๋ int, float, double ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๊ฐ์ ๋ช ์์ ์ธ ํ์ ์บ์คํ ์ ์ ๊ณตํ๋ค. ์๋ฅผ ๋ค์ด, int num = (int)3.14์ ๊ฐ์ด ์ฌ์ฉ
- C์ธ์ด
- atoi(): ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ๋ ํจ์๋ก ์๋ฅผ ๋ค์ด, atoi("123")์ ๋ฌธ์์ด "123"์ ์ ์ 123์ผ๋ก ๋ณํ
- itoa(): ์ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ํจ์๋ก ์๋ฅผ ๋ค์ด, itoa(123, buffer, 10)์ ์ ์ 123์ ๋ฌธ์์ด "123"์ผ๋ก ๋ณํํ์ฌ buffer์ ์ ์ฅํ๋ค.
- ๋ช ์์ ํ์ ์บ์คํ : C ์ธ์ด์์๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ๊ฐ์ ๋ช ์์ ์ธ ํ์ ์บ์คํ ์ ์ง์ํ๋ค. ์๋ฅผ ๋ค์ด, int num = (int)3.14์ ๊ฐ์ด ์ฌ์ฉํ๋ค. ๋ค๋ง, ์ค์์์ ์ ์๋ก์ ๋ณํ ์ ์์์ ์ดํ๋ฅผ ๋ฒ๋ฆฐ๋ค.
plot ๊ทธ๋ํ๋ก ์๊ฐํ ํ๊ธฐ
๊ทธ๋ํ๋ฅผ ํ์ธํ ๊ฒฐ๊ณผ, 20๋๋ถํฐ 60๋๊น์ง์ ์ธ๊ตฌ๊ฐ ๋ง๊ณ , ๊ทธ ์ค์์๋ ํนํ 40๋๋ถํฐ 60๋๊น์ง์ ์ธ๊ตฌ๊ฐ ์๋์ ์ผ๋ก ๋ง์ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ๋ฐ๋ฉด์ ์์ ์์ ์ธ๊ตฌ๋ ์๋์ ์ผ๋ก ์ ์ ํธ์ด๋ค. ์ด๋ฅผ ํตํด ํด๋น ์ง์ญ์ ์ฃผ๊ฑฐ ์ธ๊ตฌ๊ฐ ์ฃผ๋ก ์ ์ ์ธต์์ ์ค์ฅ๋ ์ธต๊น์ง๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์์ ์์ ์ธ๊ตฌ๋ ๋น๊ต์ ์ ์ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค.
replace๋ก ๋ฐ์ดํฐ์ ํน์ ๊ตฌ๋ถ์ ์ญ์
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋, 1,000๋ช ์ด์์ ์ธ๊ตฌ ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ซ์์ ์ฝค๋ง(,)๊ฐ ํฌํจ๋๋ค. ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์ซ์์์ ์ฝค๋ง๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ซ์๋ก ํ์ ์บ์คํ ํ ๋ ์ฝค๋ง๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ฝค๋ง๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋ค.
import csv
import matplotlib.pyplot as plt
f = open('age.csv', 'r', encoding = 'cp949')
data = csv.reader(f, delimiter=',')
header = next(data)
result = []
for row in data:
if '์ก๋3๋' in row[0]:
for i in row[3:]:
i = int(i.replace(',',''))
result.append(int(i))
plt.plot(result)
plt.show()
f.close()
์ก๋3๋ ์ธ๊ตฌ ํน์ฑ ์๊ฐํ๋ถ์
์ก๋3๋์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ ๊ฒฐ๊ณผ, ํด๋น ์ง์ญ์๋ ์ฃผ๋ก ์ ์ ์ธต๊ณผ ์ค์ฅ๋ ์ธต์ด ๋ง์ด ๊ฑฐ์ฃผํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. ํนํ 40-50๋์ ์ธ๊ตฌ๊ฐ ๋ง์ ๊ฒ์ผ๋ก ํ์ธ๋์์ผ๋ฉฐ, ๊ทธ ๋ค์์ผ๋ก๋ ์ฒญ์๋ ๊ณผ 40๋์ ์ธ๊ตฌ๊ฐ ๋ง์ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. ์ด๋ฅผ ํตํด ์ก๋3๋์ ์ฃผ๋ก ๊ฐ์กฑ ๋จ์์ ๊ฑฐ์ฃผ์ง๋ก ํ์ ๋๋ค.
ggplot ์คํ์ผ ์ ์ฉ
plt.style.use('ggplot') #์ฝ๋ ์ถ๊ฐ
์ ์ฝ๋์์ plt.style.use('ggplot')์ ๊ทธ๋ํ์ ์คํ์ผ์ 'ggplot'์ผ๋ก ์ง์ ํ๋ ๋ถ๋ถ์ด๋ค.
Matplotlib์์๋ ์ฌ๋ฌ ๊ฐ์ง ๊ทธ๋ํ ์คํ์ผ์ ์ ๊ณตํ๋๋ฐ, 'ggplot'์ R์ ggplot ํจํค์ง์์ ์๊ฐ์ ๋ฐ์ ๋ง๋ค์ด์ง ์คํ์ผ๋ก, ๊ทธ๋ํ๊ฐ ๊น๋ํ๊ณ ์ ๋ช ํ๊ฒ ํํ๋๋ ํน์ง์ด ์๋ค.
์ด ์คํ์ผ์ ์ง์ ํจ์ผ๋ก์จ ๊ทธ๋ํ์ ๋์์ธ์ด ์ผ๊ด๋๊ณ ๋ณด๊ธฐ ์ข๊ฒ ๋ํ๋๋ค.