๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study_note(zb_data)/EDA

์Šคํ„ฐ๋”” ๋…ธํŠธ (Analysis Seoul Crime)

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ๊ฐœ์š”

๐Ÿšฉ Data ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  • thousands ๋ช…๋ น์–ด
    • (,)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์„œ ๋ฌธ์ž๋กœ ์ธ์‹๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
    • ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ˆซ์žํ˜•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.

๐Ÿšฉ Data Check

  • info() ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ํ™•์ธ
  • Rangeindex๋ฅผ ๋ณด๋‹ˆ ์ด 65534๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค, ํ™•์ธ์ด ํ•„์š”!

  • unique() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ™•์ธ, NaN ๋ฐ์ดํ„ฐ ํ™•์ธ

  • DataFrame.isnull() ํ•จ์ˆ˜๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ NaN ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๋‹ค.
  • ์ด๋ฅผ notnull() ํ•จ์ˆ˜๋กœ ์ œ๊ฑฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ฆฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

๐Ÿšฉ pivot_table()

  • index, columns, values, aggfunc
    • margin=True :  ์ด๊ณ„๋ฅผ ํ‘œ์‹œ
    • fill_value : NaN data๋ฅผ ์ฑ„์›Œ์ค€๋‹ค

์ผ๋ฐ˜ Data๋ฅผ ๋ถˆ๋Ÿฌ์˜ด

  • pivot_table() ํ•จ์ˆ˜๋ฅผ ์ด์šฉ, index๋กœ ์„ค์ •ํ•  column์„ ์ง€์ • (Name)

  • multi index ์„ค์ •
    • ๋ฆฌ์ŠคํŠธ ์•ˆ์— column name์„ ์ž‘์„ฑ

  • ์‹ค์Šต try!
  • ์ˆซ์ž ๋ฐ์ดํ„ฐ๋ฅผ pivot_table ์ง€์ •ํ•˜๋ฉด,  ์ž๋™์œผ๋กœ ํ‰๊ท ๊ฐ’์œผ๋กœ pivot

  • aggfunc=np.sum ํ•จ์ˆ˜๋กœ Price ๊ฐ’์„ ํ•ฉ์—ฐ์‚ฐ์œผ๋กœ ์ ์šฉ

  • index, values, columns
    • Product๋ฅผ ์ปฌ๋Ÿผ์œผ๋กœ ์„ค์ •
    • NaN data ์ฒ˜๋ฆฌ ํ•„์š”

  • fill_value๋กœ NaN data๋ฅผ 0์œผ๋กœ ์ฒ˜๋ฆฌ

  • 2๊ฐœ ์ด์ƒ์˜ values ๊ฐ’ ์„ค์ •

  • aggfunc 2๊ฐœ ์ด์ƒ ์„ค์ •
    • margins = True๋ฅผ ํ†ตํ•ด ์ด๊ณ„ ๊ฐ’ ์ถ”๊ฐ€

๐Ÿ“Œ ์„œ์šธ์‹œ ๋ฒ”์ฃ„ ํ˜„ํ™ฉ ๋ฐ์ดํ„ฐ ์ •๋ฆฌ

๐Ÿšฉ pivot_table ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ •๋ฆฌํ•˜๊ธฐ

  • index = ๊ตฌ๋ถ„, columns = ์ฃ„์ข…, ๋ฐœ์ƒ๊ฒ€๊ฑฐ
  • ์ง€์—ญ๊ตฌ(์„œ)๋ฅผ index๋กœ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ •์ œ

  • ๋ฉ€ํ‹ฐ์ปฌ๋Ÿผ์ธ ๊ฒƒ์„ ํ™•์ธ

๐Ÿšฉ ๋‹ค์ค‘ ์ปฌ๋Ÿผ์—์„œ ํŠน์ • ์ปฌ๋Ÿผ์„ ์ œ๊ฑฐํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•

  • data_name.columns.droplevel([n1, n2])

  • ์ •๋ฆฌ๋œ Data ์ถœ๋ ฅ

๐Ÿšฉ Pip ๋ช…๋ น์œผ๋กœ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ์„ค์น˜

  • !pip list ๋ช…๋ น์–ด๋กœ ์„ค์น˜๋˜์–ด์žˆ๋Š” ๋ชจ๋“ˆ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

๐Ÿšฉ Google Maps API ์„ค์น˜

  • googlemaps๋ฅผ import
  • googlemaps.Client(key="ํ‚ค ๊ฐ’")
  • geocode ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ๊ธ€๋งต ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜  ์žˆ๋‹ค
  • geocode ํ•จ์ˆ˜์˜ ๊ธธ์ด๋Š” 1๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค

  • tmp ๋ณ€์ˆ˜์— ๋‹ด์€ ๋’ค 0๋ฒˆ์งธ index ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธ

  • get ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ์นญ
    • ์œ„๋„์™€ ๊ฒฝ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค

  • ์ฃผ์†Œ ๋ฐ์ดํ„ฐ ์„œ์นญ
    • split์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์Šฌ๋ผ์ด์‹ฑ

๐Ÿšฉ iterrows() ํ•จ์ˆ˜

  • Pandas DataFrame์€ ๋Œ€๋ถ€๋ถ„ 2์ฐจ์› ๋ฐ์ดํ„ฐ
  • Pandas DataFrame์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋งŒ๋“ค ๋•Œ, iterrows ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด ํŽธํ•˜๋‹ค
  • index, rows ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜

  • station_name์˜ ๋ณ€์ˆ˜๋ฅผ ์ค€๋‹ค.
  • ๊ตฌ๊ธ€๋งต์— ๊ฒฝ์ฐฐ์„œ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์œ„๋„์™€ ๊ฒฝ๋„, ์ฃผ์†Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ์ด์šฉ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ์ด์šฉํ•˜์—ฌ
    ๊ฐ ๊ฒฝ์ฐฐ์„œ์˜ ์œ„์น˜์™€ ์œ„๋„, ๊ฒฝ๋„๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

 

๐Ÿšฉ ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ ์ •๋ฆฌํ•˜๊ธฐ

  • data_name.columns.get_level_values ํ•จ์ˆ˜ ์‚ฌ์šฉ
  • ๊ฐ ๋ฐ์ดํ„ฐ ์ปฌ๋Ÿผ๋“ค์˜ ๊ฐ’์„ ๊ตฌํ•ด์ค€๋‹ค

  • ๊ฐ ์ปฌ๋Ÿผ์„ for๋ฌธ์„ ํ†ตํ•ด์„œ ํ•ฉ์ณ์ค€ ํ›„, ์ €์žฅ

๐Ÿšฉ ๊ตฌ๋ณ„ ๋ฐ์ดํ„ฐ๋กœ ์ •๋ฆฌ

  • ๊ตฌํ–ˆ๋˜ DataFrame ํ™•์ธ ํ›„ index_col ์˜ต์…˜์œผ๋กœ ๊ตฌ๋ถ„ ๋ฐ์ดํ„ฐ๋ฅผ index๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

  • ๊ฒฝ์ฐฐ์„œ ์ด๋ฆ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ณ„ ๋ฐ์ดํ„ฐ๋กœ ์ •๋ฆฌ
  • ํ•„์š”์—†๋Š” ์ปฌ๋Ÿผ ์ œ๊ฑฐ (lat, lng)

๐Ÿšฉ ๋‹ค์ˆ˜์˜ ์ปฌ๋Ÿผ์„ ๋‚˜๋ˆ„๊ธฐ

  • data_frame[["column1", "column2"]].div(data_frame["column3"], axis = 0) #axis = 0 : ๊ฐ€๋กœ
  • divํ•จ์ˆ˜๋กœ ๋‹ค์ˆ˜์˜ ์ปฌ๋Ÿผ์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค

  • ๊ฐ ์ปฌ๋Ÿผ์„ ๋‚˜๋ˆ ์ฃผ์–ด ํ™•๋ฅ ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

  • ๊ฐ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด 100์ด ๋„˜์–ด๊ฐ€๋Š” ๋ฐ์ดํ„ฐ๋Š” 100์œผ๋กœ ํ†ต์ผ์‹œ์ผœ์ค€๋‹ค

  • rename ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ์žฌ์ •๋น„ํ•œ๋‹ค.

๐Ÿšฉ ๋ฒ”์ฃ„ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ •๋ฆฌ (์ •๊ทœํ™”)

  • ์ •๊ทœํ™” : ์ตœ๊ณ ๊ฐ’์€ 1, ์ตœ์†Ÿ๊ฐ’์€ 0
  • ๊ธฐ์กด์˜ ์ปฌ๋Ÿผ๋ฐ์ดํ„ฐ๋ฅผ ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ ๋‚ด์˜ ์ตœ๋Œ“๊ฐ’์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’

  • ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ์— ๊ฐ ์ฃ„์ข…์˜ ๊ฒ€๊ฑฐ์œจ ์ปฌ๋Ÿผ ๋ฐ ์ธ๊ตฌ์ˆ˜, CCTV(์†Œ๊ณ„) ์ปฌ๋Ÿผ์ถ”๊ฐ€

  • ์ •๊ทœํ™”๋œ ๋ฒ”์ฃ„๋ฐœ์ƒ ๊ฑด์ˆ˜ ์ „์ฒด ํ‰๊ท ์„ ๋ฒ”์ฃ„ ์ปฌ๋Ÿผ์— ์ถ”๊ฐ€

๐Ÿšฉ np.mean()

  • np.array, np.mean()
  • npํ•จ์ˆ˜์—์„œ๋Š” axis=1 : ํ–‰  / axis=0 : ์—ด (pandas ํ•จ์ˆ˜์™€๋Š” ๋ฐ˜๋Œ€)

  • 2์ฐจ์› ํ–‰๋ ฌ

๐Ÿšฉ np ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๊ฒ€๊ฑฐ์œจ ํ‰๊ท  ๊ตฌํ•˜๊ธฐ

๐Ÿšฉ seaborn ๊ธฐ์ดˆ

  • np.linspace(a, b, s) = a๋ถ€ํ„ฐ b๊นŒ์ง€ s๊ฐœ์˜ ๋“ฑ๊ฐ„๊ฒฉ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

  • sin ํ•จ์ˆ˜ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

  • seaborn ํ•จ์ˆ˜ ์ด์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ์ปค์Šคํ…€
    • sns.set_style()
    • ์ˆœ์„œ๋Œ€๋กœ "white", "dark" , "grid",. "darkgrid"

๐Ÿšฉ seaborn ๋ฐ์ดํ„ฐ๋กœ ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

๐Ÿšฉ boxplot

  • boxplot hue (์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์˜ต์…˜)
  • palette = "Set 1~3" (ํŒ”๋ ˆํŠธ ์˜ต์…˜)

 

๐Ÿšฉ swarmplot

๐Ÿšฉ lmplot

  • lmplot ์•ˆ์— ํ•จ์ˆ˜ height(size)๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค

๐Ÿšฉ heatmap

  • pivot
  • index, columns, values

  • heatmap(data, annot, fmt)
    • annot=True : ๋ฐ์ดํ„ฐ ๊ฐ’ ํ‘œ์‹œ
    • fmt = "d" ์ •์ˆ˜ํ˜•์œผ๋กœ ํ‘œํ˜„, # "f" ์‹ค์ˆ˜ํ˜•๋กœ๋„ ๊ฐ€๋Šฅ

  • colormap (cmap)

๐Ÿšฉ pairplot

  • ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋ณด์—ฌ์ค€๋‹ค

 

  • ์›ํ•˜๋Š” ์ปฌ๋Ÿผ๋งŒ pairplot์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿšฉ lmplot

  • order option

  • outlier
    • robust ์˜ต์…˜์œผ๋กœ ์˜ˆ์™ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅ

๐Ÿšฉ ์„œ์šธ์‹œ ๋ฒ”์ฃ„ํ˜„ํ™ฉ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

  • vars = x,y ๊ฐ’ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉ์ ์œผ๋กœ ์ถœ๋ ฅ

  • x_vars, y_vars ๊ฐ’ ์ถœ๋ ฅ

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

๐Ÿšฉ folium.Map()

  • location=[lat, lng]
  • zoom_start, zoom_control

  • tiles option

  • folium.Marker(location=[lat, lng]).add_to(m)
  • popup (ํด๋ฆญ์‹œ ๋‚˜์˜ค๋Š” ์ฐฝ)
  • tooltip option (๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ๋‹ฟ์œผ๋ฉด ๋‚˜์˜ค๋Š” ์ฐฝ)
    • tooltip option, hyperlink ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • folium.Icon(color, icon, icon_color, prefix, angle)
    • ์•„์ด์ฝ˜์„ ๋งˆ์Œ๋Œ€๋กœ ์ปค์Šคํ…€ ํ•  ์ˆ˜ ์žˆ๋‹ค

  • folium.ClickForMarker()
    • ์ง€๋„์œ„์— ๋งˆ์šฐ์Šค ํด๋ฆญ์‹œ ๋งˆ์ปค๋ฅผ ์ƒ์„ฑ

  • folium.LatLngPopup()
    • ์ง€๋„ ์œ„์น˜ ํด๋ฆญ์‹œ ์œ„๋„์™€ ๊ฒฝ๋„ ์ •๋ณด ๋ฐ˜ํ™˜

  • folium.Circle()
    • location, radius, fill, color, fill_color, popup, tooltip
  • folium.CircleMarker()
    • location, radius, fill, color, fill_color, popup, tooltip

๐Ÿšฉ ๊ฒฝ์ฐฐ์„œ ์œ„์น˜ ๋งˆ์ปค ํ‘œ์‹œ

  • iterrows ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
    • rows์˜ lat, lng ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ํ‘œ์‹œ

๐Ÿšฉ Choropleth ํ•จ์ˆ˜

  • ์›์˜ ๋„“์ด๊ฐ€ ํด์ˆ˜๋ก ๊ฒ€๊ฑฐ์œจ์ด ๋†’์€ ๊ณณ