Study_note(zb_data)/EDA

์Šคํ„ฐ๋”” ๋…ธํŠธ (Analysis Seoul CCTV with population)

KloudHyun 2023. 8. 6. 00:07

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

  • import pandas as pd 
    • pandas๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ import
  • pandas.read_csv(ํ™•์žฅ์ž) ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์—‘์…€ ํ™•์žฅ์ž๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 ๐ŸšฉCCTV_Seoul ๋ฐ์ดํ„ฐ ํ™•์ธํ•˜๊ธฐ

  • columns ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • rename ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ธฐ๊ด€๋ช… ์ปฌ๋Ÿผ์„ ๊ตฌ๋ณ„๋กœ ์ด๋ฆ„ ๋ณ€๊ฒฝ

 ๐Ÿšฉ Seoul_Population ๋ฐ์ดํ„ฐ ํ™•์ธํ•˜๊ธฐ

  • header (index๋ฅผ ๋ช‡๋ฒˆ์งธ๋ถ€ํ„ฐ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒƒ์ธ์ง€?)
  • usecols (์ปฌ๋Ÿผ์„ ๋ช‡๋ฒˆ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€?)
  • ์‹ค์ œ csv ํŒŒ์ผ์„ ์—ด์–ด๋ณด๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”

  • rename ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด column๋“ค์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝ

 ๐ŸšฉCCTV_Seoul ๋ฐ์ดํ„ฐ ํ™•์ธํ•˜๊ธฐ 2

  • sort ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ, ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค
    • "์†Œ๊ณ„" ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ & ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
  • data_name.sort_values(by = "column_name", ascending=True or False, inplace=True)

  • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•ด๋ณด๊ธฐ
    • data_name["column_name"] = data
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ์ถ”๊ฐ€, ์žˆ์œผ๋ฉด ์ˆ˜์ •
  • CCTV์˜ ์ตœ๊ทผ ์ฆ๊ฐ€์œจ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€
    • 2016 + 2015 + 2014๋…„ ์ปฌ๋Ÿผ / 2013๋…„๋„ ์ด์ „ ์ปฌ๋Ÿผ
    • ๊ทธ ์ดํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ๊ทผ ์ฆ๊ฐ€์œจ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ sort (๋‚ด๋ฆผ์ฐจ์ˆœ)

 ๐Ÿšฉ Seoul_Population ๋ฐ์ดํ„ฐ ํ™•์ธํ•˜๊ธฐ 2

  • ๋งจ ์œ„ ํ•ฉ๊ณ„ index๋ฅผ ์ œ๊ฑฐ
    • ์—ฌ๊ธฐ์„œ๋Š” drop ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ (axis ๊ธฐ๋ณธ๊ฐ’์€ 0, ๊ฐ€๋กœ๊ฐ’ ์ œ๊ฑฐ)

  • unique method๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

  • ์™ธ๊ตญ์ธ ๋น„์œจ, ๊ณ ๋ น์ž ๋น„์œจ ์ปฌ๋Ÿผ ์ถ”๊ฐ€

 ๐Ÿšฉ CCTV_Seoul, pop_Seoul ๋ฐ์ดํ„ฐ ํ•ฉ์น˜๊ธฐ

  • merge ํ•จ์ˆ˜๋ฅผ ์ด์šฉ, "๊ตฌ๋ณ„"์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ์น˜๊ธฐ
  • pandas.merge(CCTV_Seoul, Pop_seoul, on="๊ตฌ๋ณ„")
    • on="column"์„ ํ™œ์šฉํ•˜์—ฌ column์„ ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์นœ๋‹ค

 ๐Ÿšฉ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ ์‚ญ์ œ

  • ๋…„๋„๋ณ„ CCTV ๋ฐ์ดํ„ฐ ์ˆ˜๋Š” ํ•„์š”์—†์œผ๋ฏ€๋กœ ์‚ญ์ œ

  • set_index() ํ•จ์ˆ˜ ํ™œ์šฉ
    • ์„ ํƒํ•œ ์ปฌ๋Ÿผ์„ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์— ์ธ๋ฑ์Šค๋กœ ์ง€์ • 
    • data_name.set_index("column_name")
    • inplace=True๋ฅผ ์ค˜์•ผ ๋ณ€๊ฒฝ๋œ ๊ฐ’์ด ์ ์šฉ์ด ๋œ๋‹ค

 ๐Ÿšฉ ์ƒ๊ด€๊ณ„์ˆ˜ ํ™•์ธ

  • corr() / correlation์˜ ์•ฝ์ž
  • data_name.corr()
  • ์„œ๋กœ์˜ ์ƒ๊ด€๊ณ„์ˆ˜๊ฐ€ 0.2 ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ต

 ๐Ÿšฉ ์ธ๊ตฌ์ˆ˜์™€ CCTV ๊ฐœ์ˆ˜์˜ ์ƒ๊ด€๊ด€๊ณ„

  • "CCTV ๋น„์œจ"์„ ๊ธฐ์ค€์œผ๋กœ value๋“ค์„ sort.

 ๐Ÿšฉ ์ปฌ๋Ÿผ ์‹œ๊ฐํ™” ํ•˜๊ธฐ

  • ๊ฐ€์žฅ CCTV๊ฐ€ ๋งŽ์€ ๊ตฌ

์ „์ฒด์ ์œผ๋กœ ๊ฐ€์žฅ CCTV๊ฐ€ ๋งŽ์€ ๊ตฌ = ๊ฐ•๋‚จ๊ตฌ

  • ์ธ๊ตฌ์ˆ˜ ๋Œ€๋น„ CCTV ๋น„์œจ

์ธ๊ตฌ ์ˆ˜ ๋Œ€๋น„ CCTV ์„ค์น˜ ๋น„์œจ์ด ๊ฐ€์žฅ ๋งŽ์€ ๊ตฌ = ์ข…๋กœ๊ตฌ

 ๐Ÿšฉ ๋ฐ์ดํ„ฐ ๊ฒฝํ–ฅ ํ‘œ์‹œํ•˜๊ธฐ

  • ์ธ๊ตฌ์ˆ˜์™€ ์†Œ๊ณ„ ์ปฌ๋Ÿผ์œผ๋กœ scatter plot ๊ทธ๋ฆฌ๊ธฐ

 ๐Ÿšฉ Numpy๋ฅผ ์ด์šฉํ•œ 1์ฐจ์› ์ง์„  ๋งŒ๋“ค๊ธฐ

  • np.polyfit() : ์ง์„ ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„์ˆ˜๋ฅผ ๊ณ„์‚ฐ
  • np.poly1d() : polyfit์œผ๋กœ ์ฐพ์€ ๊ณ„์ˆ˜๋กœ ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ

  1. ๊ธฐ์ค€์„ ์žก๊ณ  np.polyfit() ํ•จ์ˆ˜์— ๋„ฃ์–ด์ค€๋‹ค (x, y ๊ฐ’ ํ•„์ˆ˜)
  2. ํ•จ์ˆ˜์— ๋„ฃ์–ด์ค€ ๊ฐ’์„ polyid() ํ•จ์ˆ˜์— ๋Œ€์ž…
  3. ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ฒฝํ–ฅ์„ ์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ x ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  • np.linspace(a, b, n)
    • a๋ถ€ํ„ฐ b๊นŒ์ง€ n๊ฐœ์˜ ๋“ฑ๊ฐ„๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ

  • ์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ scatter ๊ทธ๋ž˜ํ”„์— ์ง์„  ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€

 ๐Ÿšฉ ๊ฒฝํ–ฅ๊ณผ์˜ ์˜ค์ฐจ ๋งŒ๋“ค๊ธฐ

  • ๊ฒฝํ–ฅ(trend)๊ณผ์˜ ์˜ค์ฐจ๋ฅผ ๋งŒ๋“ค์ž
  • ๊ฒฝํ–ฅ์€ f1 ํ•จ์ˆ˜์— ํ•ด๋‹น ์ธ๊ตฌ๋ฅผ ์ž…๋ ฅ
  • f1(data_result["์ธ๊ตฌ์ˆ˜"])

  • ์˜ค์ฐจ ์ปฌ๋Ÿผ์„ ๋‚ด๋ฆผ์ฐจ์ˆœ, ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ


  • ์šฐ์ธก์˜ ์ปฌ๋Ÿฌ๋งต ๋ฐ์ดํ„ฐ ์ œ์ž‘

  • for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์˜ค์ฐจ ๋ฐ์ดํ„ฐ ์ƒ์œ„ 5๊ฐœ, ํ•˜์œ„ 5๊ฐœ ์ธ๋ฑ์Šค์˜ ์ด๋ฆ„ ํ‘œ์‹œํ•˜๊ธฐ