{"id":509985,"date":"2024-09-13T07:49:39","date_gmt":"2024-09-13T06:49:39","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=509985"},"modified":"2024-10-15T20:10:09","modified_gmt":"2024-10-15T19:10:09","slug":"data-analytics-with-kotlin-notebooks-dataframe-and-kandy","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ko\/kotlin\/2024\/09\/data-analytics-with-kotlin-notebooks-dataframe-and-kandy\/","title":{"rendered":"Kotlin Notebook, DataFrame\uacfc Kandy\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130 \ubd84\uc11d"},"content":{"rendered":"<p>\ub300\ud654\ud615\uc73c\ub85c \ub370\uc774\ud130\ub97c \ud0d0\uc0c9\ud558\uace0 \uc2dc\uac01\ud654\ud558\uba74 \uc815\uc801\uc778 \ubd84\uc11d\uc5d0\uc11c\ub294 \uba85\ud655\ud558\uac8c \ubcf4\uc774\uc9c0 \uc54a\ub294 \uc228\uaca8\uc9c4 \ud328\ud134, \ucd94\uc138\ub098 \uad00\uacc4\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc989\uac01\uc801\uc778 \ud53c\ub4dc\ubc31\uc744 \ud65c\uc6a9\ud558\uc5ec \uac00\uc815\uc744 \ube60\ub974\uac8c \uac80\uc99d\ud558\uace0, \uc774\uc0c1 \uc218\uce58\ub098 \uc0c1\ud0dc\ub97c \uc2dd\ubcc4\ud558\uace0 \ubd84\uc11d\uc744 \uc870\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16340-kotlin-notebook\" target=\"_blank\" rel=\"noopener\">Kotlin Notebook<\/a>\uc740 IntelliJ IDEA\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ud0d0\uc0c9\ud560 \ub54c \ud3b8\ub9ac\ud558\uac8c \uc4f8 \uc218 \uc788\ub294 \ub3c4\uad6c\uc785\ub2c8\ub2e4. \uc774 \ub3c4\uad6c\ub294 <a href=\"https:\/\/kotlinlang.org\/docs\/data-science-overview.html#jupyter-kotlin-kernel\" target=\"_blank\" rel=\"noopener\">Kotlin \ucee4\ub110<\/a>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc140 \ub0b4\uc758 Kotlin \ucf54\ub4dc \uc2a4\ub2c8\ud3ab\uc744 \uc2e4\ud589\ud55c \ub2e4\uc74c \uc5d0\ub514\ud130\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ub80c\ub354\ub9c1\ud569\ub2c8\ub2e4. \ub610\ud55c \ub370\uc774\ud130 \ucc98\ub9ac\uc5d0\ub294 <a href=\"https:\/\/github.com\/Kotlin\/dataframe\" target=\"_blank\" rel=\"noopener\">Kotlin DataFrame<\/a>\uacfc \uac19\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c, \ucc28\ud2b8 \uc0dd\uc131\uc5d0\ub294 <a href=\"https:\/\/kotlin.github.io\/kandy\/welcome.html\" target=\"_blank\" rel=\"noopener\">Kandy<\/a>\ub97c \ud1b5\ud569\ud558\uc5ec \ub370\uc774\ud130 \ubd84\uc11d\uc744 \uac04\uc18c\ud654\ud569\ub2c8\ub2e4.<\/p>\n<p>\ucd5c\uadfc Roman\uacfc Anton\uc740 \ub370\uc774\ud130 \ubd84\uc11d \ub3c4\uad6c\uc758 \uc131\ub2a5\uc744 \uc0b4\ud3b4\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc774\ub4e4\uc758 \ub77c\uc774\ube0c\uc2a4\ud2b8\ub9bc \ub179\ud654\ubcf8\uc740 \uc544\ub798\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8 \uae00\uc5d0\uc11c\ub294 DataFrame \ubc0f Kandy \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud3ec\ud568\ud558\uc5ec Kotlin Notebook \ud50c\ub7ec\uadf8\uc778\uc744 \ud3b8\ub9ac\ud558\uac8c \uc0ac\uc6a9\ud574 \ubcfc \uc218 \uc788\ub3c4\ub85d \ud574\ub2f9 \uc138\uc158\uc758 \uc608\uc2dc\ub97c \ucd94\uac00\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Data Analytics With Kotlin Notebooks\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/_RYV7ZvMKpE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n<p>\uc5ec\ub7ec\ubd84\uc758 \ud3b8\uc758\ub97c \uc704\ud574 \uc900\ube44\ud55c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc5ec\ub7ec\ubd84\uc740 <a href=\"https:\/\/github.com\/antonarhipov\/kotlin-notebooks-demo\" target=\"_blank\" rel=\"noopener\">GitHub \uc800\uc7a5\uc18c<\/a>\ub97c \uc0b4\ud3b4\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud504\ub85c\uc81d\ud2b8\uc5d0\ub294 \ub77c\uc774\ube0c\uc2a4\ud2b8\ub9bc \uc911\uc5d0 \uc0ac\uc6a9\ub418\uc5c8\ub358 CSV \ud30c\uc77c\ub3c4 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c, \uc2dc\uc5f0\ub418\uc5c8\ub358 \ub611\uac19\uc740 \uc608\uc2dc\ub97c \uc9c1\uc811 \uc7ac\uad6c\uc131\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Kotlin Notebook \uc2dc\uc791\ud558\uae30<\/h2>\n<p>Kotlin Notebook\uc744 \uc2dc\uc791\ud558\ub824\uba74 \uac04\ub2e8\ud788 IntelliJ IDEA Ultimate\uc5d0\uc11c <em>Settings(\uc124\uc815) | Plugins(\ud50c\ub7ec\uadf8\uc778)<\/em> \ud0ed\uc73c\ub85c \uc774\ub3d9\ud55c \ub2e4\uc74c JetBrains Marketplace\uc5d0\uc11c <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16340-kotlin-notebook\" target=\"_blank\" rel=\"noopener\">\ud50c\ub7ec\uadf8\uc778<\/a>\uc744 \uc124\uce58\ud558\uba74 \ub429\ub2c8\ub2e4. \ud50c\ub7ec\uadf8\uc778\uc744 \uc124\uce58\ud558\uba74 <em>New(\uc0c8\ub85c \ub9cc\ub4e4\uae30) | Kotlin Notebook<\/em> \uc561\uc158\uc73c\ub85c \uccab Notebook\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460637\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/Kotlin-create-new-notebook.png\" alt=\"\" width=\"1730\" height=\"1000\" \/><\/figure>\n<p>\ucc98\uc74c Notebook\uc744 \uc0dd\uc131\ud558\uba74 \ube48 \uc140\ub9cc \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc140\uc740 Notebook\uc758 \uc8fc\uc694 \uad6c\uc131 \uc694\uc18c\uc774\uba70 \ucf54\ub4dc \ub610\ub294 \ud14d\uc2a4\ud2b8\ub97c \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucf54\ub4dc \uc140\uc744 \uc2e4\ud589\ud558\ub824\uba74 <em>Run(\uc2e4\ud589)<\/em> \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uac70\ub098 <em>Ctrl+Enter<\/em> \ub2e8\ucd95\ud0a4\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. \ucf54\ub4dc\uac00 \uc2e4\ud589\ub418\uace0 \ucd9c\ub825 \ub610\ub294 \uc624\ub958\uac00 \uc140 \uc544\ub798\uc5d0 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc140\uc744 \uc99d\ubd84 \uc2e4\ud589\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uc774\uc804 \uc140\uc5d0\uc11c \uc2e4\ud589\ub41c \uacc4\uc0b0\uc744 \ub2e4\uc2dc \uc2e4\ud589\ud558\uc9c0 \uc54a\uc544\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4. Kotlin Notebook\uc758 \uae30\ucd08\ub97c \ube60\ub974\uac8c \uc54c\uc544\ubcf4\uace0 \uc2f6\uc740 \uacbd\uc6b0 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/07\/introducing-kotlin-notebook\/\">\uc774 \ube14\ub85c\uadf8 \uae00<\/a>\uc744 \ucc38\uc870\ud558\uc138\uc694.<\/p>\n<h2 class=\"wp-block-heading\">DataFrame\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc77d\uace0 \ud0d0\uc0c9<\/h2>\n<p>\uc774\uc81c Notebook\uc73c\ub85c \uc2e4\ud5d8\ud558\uace0 DataFrame \ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c \ub370\uc774\ud130\ub97c \ubd84\uc11d\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub370\uc774\ud130 \uc18c\uc2a4\ub294 \uc554\uc2a4\ud14c\ub974\ub2f4 \uc9c0\uc5ed\uc5d0\uc11c \uc218\uc9d1\ub41c \uae30\uc0c1 \uc815\ubcf4\ub97c \ub2f4\uace0 \uc788\ub294 <a href=\"https:\/\/github.com\/antonarhipov\/kotlin-notebooks-demo\/blob\/main\/data\/ams_weather.csv\" target=\"_blank\" rel=\"noopener\">CSV \ud30c\uc77c<\/a>\uc785\ub2c8\ub2e4.<\/p>\n<p><em>Project(\ud504\ub85c\uc81d\ud2b8)<\/em> \ubdf0\uc5d0\uc11c Notebook \uc140\ub85c CSV \ud30c\uc77c\uc744 \ub4dc\ub798\uadf8 \uc564 \ub4dc\ub86d\ud558\uc138\uc694. Notebook\uc774 \uc790\ub3d9\uc73c\ub85c \ubd80\ud2b8\uc2a4\ud2b8\ub7a9 \ucf54\ub4dc\ub97c \uc0dd\uc131\ud558\uc5ec DataFrame \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc885\uc18d\uc131\uc73c\ub85c\uc11c \ucd94\uac00\ud558\uace0 CSV \ud30c\uc77c\uc744 \uc77d\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460626\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/getting-started-with-kn-and-df-short.gif\" alt=\"\" width=\"1280\" height=\"720\" \/><\/figure>\n<p>\ub370\uc774\ud130\uac00 \uc11c\ub85c \ub2e4\ub978 \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc0ac\uc6a9 \uc0ac\ub840\uc5d0 \ub9de\ucdb0 \ubd84\uc11d \uc635\uc158\uc744 \ubcc0\uacbd\ud574\uc57c \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ubd84\uc11d \uc2dc\uc5d0 \uad6c\ubd84 \uae30\ud638\ub098 \ub0a0\uc9dc \ud615\uc2dd\uc744 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \uc815\ubcf4\ub294 <a href=\"https:\/\/kotlin.github.io\/dataframe\/read.html#column-type-inference-from-csv\" target=\"_blank\" rel=\"noopener\">API \ubb38\uc11c<\/a>\ub97c \ucc38\uc870\ud558\uc138\uc694.<\/p>\n<p>\uc5f4 \ud0c0\uc785\uc740 \uae30\ubcf8\uc801\uc73c\ub85c CSV \ub370\uc774\ud130\uc5d0\uc11c \ucd94\ub860\ub429\ub2c8\ub2e4. \uadf8 \uacb0\uacfc\ub85c Kotlin \ucef4\ud30c\uc77c\ub7ec\uac00 \uc9c0\uc6d0\ud558\ub294 \ud0c0\uc785\uc5d0 \uc548\uc804\ud55c \ubc29\uc2dd\uc73c\ub85c \ub370\uc774\ud130 \uc791\uc5c5\uc744 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub370\uc774\ud130\ub97c \uc77d\uc740 \ub2e4\uc74c\uc5d0\ub294 DataFrame \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 <a href=\"https:\/\/kotlin.github.io\/dataframe\/schema.html\" target=\"_blank\" rel=\"noopener\">schema<\/a> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucd94\ub860\ub41c \ud0c0\uc785\uc744 \uac04\ub2e8\ud788 \uac80\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460648\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/Kotlin-Notebooks-DF-schema.png\" alt=\"\" width=\"3176\" height=\"1870\" \/><\/figure>\n<p>\ub610\ud55c, <a href=\"https:\/\/kotlin.github.io\/dataframe\/describe.html\" target=\"_blank\" rel=\"noopener\">describe<\/a> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uba74 \ub370\uc774\ud130\uc758 \ud1b5\uacc4 \uc694\uc57d\uc744 \ube60\ub974\uac8c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460659\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/Kotlin-Notebooks-DF-describe.png\" alt=\"\" width=\"3512\" height=\"1480\" \/><\/figure>\n<p><a href=\"https:\/\/kotlin.github.io\/dataframe\/describe.html\" target=\"_blank\" rel=\"noopener\">describe<\/a> \ud568\uc218\ub294 \uc22b\uc790 \uc5f4\uc758 \ucd5c\ub313\uac12\/\ucd5c\uc19f\uac12, \uace0\uc720\ud55c \uac12 \ubc0f null\uc758 \uac1c\uc218 \ub4f1\uacfc \uac19\uc740 \ub370\uc774\ud130\uc5d0 \uad00\ud55c \ud1b5\uacc4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ud1b5\uacc4\ub294 \ucd94\ud6c4\uc5d0 \ub370\uc774\ud130\ub97c \uc0b4\ud3b4\ubcf4\uc544\uc57c \ud560 \ub54c \ucc38\uace0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>DataFrame API\ub294 <a href=\"https:\/\/kotlin.github.io\/dataframe\/columnselectors.html\" target=\"_blank\" rel=\"noopener\">\uc120\ud0dd<\/a>, <a href=\"https:\/\/kotlin.github.io\/dataframe\/filter.html\" target=\"_blank\" rel=\"noopener\">\ud544\ud130\ub9c1<\/a>, <a href=\"https:\/\/kotlin.github.io\/dataframe\/groupby.html#aggregation\" target=\"_blank\" rel=\"noopener\">\ub204\uc801 \uc5f0\uc0b0<\/a> \ub4f1\uacfc \uac19\uc774 \ub370\uc774\ud130 \uc870\uc791\uc5d0 \ud544\uc694\ud55c \ub2e4\uc591\ud55c \uc635\uc158\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798\uc758 \uc774\ubbf8\uc9c0\ub294 \ud544\ud130\ub9c1\uc758 \uc608\uc2dc\uc785\ub2c8\ub2e4. &#8216;datetime&#8217; \uc5f4\uacfc \uc81c\ubaa9\uc5d0 &#8220;wind&#8221;\uac00 \ud3ec\ud568\ub41c \ubaa8\ub4e0 \uc5f4\uc758 \ub370\uc774\ud130\uac00 2023\ub144\uae4c\uc9c0 \ud544\ud130\ub9c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460670\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/Kotlin-Notebooks-DF-column-selectors.png\" alt=\"\" width=\"2112\" height=\"980\" \/><\/figure>\n<p>\ub370\uc774\ud130\ub97c \ud0d0\uc0c9\ud574\uc11c \ud1b5\uacc4\uc801\uc73c\ub85c \uc628\ub3c4\uac00 \uac00\uc7a5 \ub192\uc740 \ub144\ub3c4\ub97c \ucc3e\uc73c\ub824 \ud55c\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc758 \uc808\ucc28\ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uccab \ubc88\uc9f8\ub85c DataFrame \uc778\uc2a4\ud134\uc2a4\uc758 \uc694\uc18c\ub97c &#8216;temp&#8217; \uc18d\uc131\uc744 \uae30\uc900\uc73c\ub85c \ub0b4\ub9bc\ucc28\uc21c\uc73c\ub85c \uc815\ub82c\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c \uc815\ub82c\ub41c \ubaa9\ub85d\uc5d0\uc11c \uccab 30\uac1c\ub9cc \ub0a8\uae41\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c &#8216;datetime&#8217;\uc758 &#8216;year&#8217; \uc18d\uc131\uc744 \uae30\uc900\uc73c\ub85c \uc911\ubcf5\ub418\ub294 \uc694\uc18c\ub97c \ubaa8\ub450 \uc81c\uac70\ud574\uc57c \ud569\ub2c8\ub2e4. \uacb0\uacfc \ubaa9\ub85d\uc5d0\ub294 \ucd5c\uace0 temp \uac12\uc774 \uc788\ub294 30\uac1c\uc758 \uc694\uc18c \uc911\uc5d0\uc11c \ub69c\ub837\uc774 \uad6c\ubd84\ub418\ub294 \uc694\uc18c(\ub144\ub3c4 \uae30\uc900)\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460681\" style=\"aspect-ratio: 2.05607476635514; width: 662px; height: auto;\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/Kotlin-Notebooks-DF-sortBy-and-distinct-year.png\" alt=\"\" width=\"1320\" height=\"642\" \/><\/figure>\n<p>&#8216;datetime&#8217; \uc5f4\uc758 \uac12\uc5d0\uc11c &#8216;year&#8217;\ub97c \ucd94\ucd9c\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 <em>expr<\/em> \ud568\uc218\ub97c \uc0ac\uc6a9\ud574\uc11c \ub144\ub3c4\ub9cc \ud3ec\ud568\ud558\ub294 \uc784\uc2dc \ud45c\ud604\uc2dd \uc5f4\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc774 \uc2dd\uc740 \ucd5c\uc885 \uacb0\uacfc\ub97c \uc5bb\uae30 \uc704\ud574 &#8216;distinct&#8217; \ud568\uc218\uc5d0 \ub9e4\uac1c\ubcc0\uc218\ub85c \uc81c\uacf5\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud1b5\uacc4\uc801\uc73c\ub85c \ucd5c\uadfc \ub144\ub3c4\uac00 \ub354 \ub354\uc6e0\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc218\uce58\ub9cc \ubcf4\uace0\ub294 \ucd94\uc138\ub97c \uc54c\uc544\ub0b4\uae30\uac00 \uc27d\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub54c \ub370\uc774\ud130\ub97c \uc2dc\uac01\ud654\ud55c\ub2e4\uba74 \ub354 \uc774\ud574\ud558\uae30 \uc27d\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 Kandy \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud574\uc11c \uadf8\ub798\ud504\ub97c \uadf8\ub824\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 class=\"wp-block-heading\">Kandy\ub85c \ub370\uc774\ud130 \uc2dc\uac01\ud654<\/h2>\n<p>\uadf8\ub798\ud504 \uc0dd\uc131\uc744 \uc704\ud55c Kandy \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ucd5c\uadfc\uc5d0 <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2023\/12\/kandy-the-new-kotlin-plotting-library-by-jetbrains\/\">\ub3c4\uc785<\/a>\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Kandy\ub294 \ub3c5\ub9bd\ud615 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub85c \uc0ac\uc6a9\ud558\uc5ec \uadf8\ub798\ud504\ub97c \uc0dd\uc131\ud560 \uc218\ub3c4 \uc788\uc73c\ub098 Kotlin Notebook\uc5d0 \ud3b8\ub9ac\ud558\uac8c \ud1b5\ud569\ub418\uc5b4 \uc788\uae30\ub3c4 \ud569\ub2c8\ub2e4. \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \ub2e4\uc591\ud55c \uc885\ub958\uc758 \uadf8\ub798\ud504\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub294 \uac04\ub2e8\ud55c DSL\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \ud48d\ubd80\ud55c <a href=\"https:\/\/kotlin.github.io\/kandy\/examples.html\" target=\"_blank\" rel=\"noopener\">\uc608\uc2dc \uac24\ub7ec\ub9ac<\/a>\uc5d0\ub294 Kandy\ub85c \uc0dd\uc131\ud560 \uc218 \uc788\ub294 \ub2e4\uc591\ud55c \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc774 \uc2dc\uc5f0\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Kotlin Notebook\uacfc Kandy\ub97c \uac19\uc774 \uc0ac\uc6a9\ud558\ub824\uba74 &#8216;<em>%use kandy<\/em>&#8216; \ud589\uc744 \uc140\uc5d0 \ucd94\uac00\ud558\uace0 \uc2e4\ud589\ud558\uc138\uc694. \uadf8\ub7ec\uba74 \uc790\ub3d9\uc73c\ub85c Kandy\uc758 \ucd5c\uc2e0 \uc548\uc815\ud654 \ubc84\uc804\uc774 \ub85c\ub4dc\ub418\uace0, \ubaa8\ub4e0 \ud544\uc218 \uac00\uc838\uc624\uae30 \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uace0 \ud50c\ub86f \ub80c\ub354\ub9c1\uc774 \ucd94\uac00\ub429\ub2c8\ub2e4.<\/p>\n<p>DataFrame\uc744 \uc704\ud574 Kandy\ub294 \ub370\uc774\ud130 \uc2dc\uac01\ud654\uc5d0 \ud544\uc694\ud55c \u2018<em>plot<\/em>\u2018 \ud655\uc7a5 \ud568\uc218\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub97c \uc0ac\uc6a9\ud558\uba74 \uc608\uc2dc\uc758 \uadf8\ub798\ud504\ub97c \ube60\ub974\uac8c \uadf8\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uc5b4 \ub0a0\uc9dc\ub97c \uae30\uc900\uc73c\ub85c \uc628\ub3c4 \uac12\uc758 \uadf8\ub798\ud504\ub97c \uc0dd\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 &#8216;\uc120&#8217; \uadf8\ub798\ud504 \ud0c0\uc785\uc744 \uc120\ud0dd\ud558\uace0 \uac12\uc744 \ub9e4\ud551\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \uc628\ub3c4 \uac12\uc740 y\ucd95\uc73c\ub85c \ub9e4\ud551\ub418\uace0 \ub144\ub3c4\ub294 x\ucd95\uc5d0 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. \ucd94\uac00\uc801\uc73c\ub85c \uc2b5\ub3c4\uc5d0 \ub530\ub77c \uc120\uc758 \uc0c9\uc0c1\uc744 \ubcc0\uacbd\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc628\ub3c4\uc640 \uc2b5\ub3c4\uc758 \uc0c1\uad00\uad00\uacc4\uc5d0 \uad00\ud55c \uc778\uc0ac\uc774\ud2b8\ub97c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\ub97c \ubcf4\ub2c8 \uc628\ub3c4\uac00 \ub0ae\uc73c\uba74 \ub354 \uc2b5\ud558\ub2e4\ub294 \uacb0\ub860\uc774 \ub3c4\ucd9c\ub429\ub2c8\ub2e4.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-460692\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/03\/Kotlin-Notebooks-Kandy.png\" alt=\"\" width=\"3154\" height=\"1904\" \/><\/figure>\n<h3 class=\"wp-block-heading\">\uc694\uc57d<\/h3>\n<p>Kotlin Notebook\uc740 \ub2e4\uc591\ud55c \ucd9c\ub825 \ud615\uc2dd\uc744 \uc9c0\uc6d0\ud558\ub294 \ub300\ud654\ud615 \uc6cc\ud06c\uc2dc\ud2b8\ub85c\uc11c, \uc774\ub97c \uc774\uc6a9\ud574 \ucd94\uac00\uc801\uc778 \ud658\uacbd \uc124\uc815 \uc5c6\uc774 Kotlin \ucf54\ub4dc\ub85c \uc2e4\ud5d8\ud558\uace0 \ud0d0\uc0c9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Kotlin DataFrame \ubc0f <a href=\"https:\/\/kotlin.github.io\/kandy\/welcome.html\" target=\"_blank\" rel=\"noopener\">Kandy<\/a>\uc640 \uac19\uc774 \ud1b5\ud569\ub41c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uba74 \ub370\uc774\ud130\ub97c \ud0d0\uc0c9, \uc2dc\uac01\ud654\ud558\uace0 \ud328\ud134\uc744 \ucc3e\uc740 \ub2e4\uc74c \ud765\ubbf8\ub85c\uc6b4 \uc0ac\uc2e4\uc744 \uc54c\uc544\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \u00a0\uc774 \uae00\uc5d0 \uc788\ub294 <a href=\"https:\/\/github.com\/antonarhipov\/kotlin-notebooks-demo\" target=\"_blank\" rel=\"noopener\">\uc608\uc2dc \uc800\uc7a5\uc18c<\/a>\ub97c \uc0b4\ud3b4\ubcf4\uba74\uc11c Kotlin Notebook\uc744 \ube60\ub974\uac8c \uc2dc\uc791\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub370\uc774\ud130 \uacfc\ud559\uc744 \uc704\ud55c Kotlin\uc5d0 \uad00\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uace0 \uc2f6\uc740 \uacbd\uc6b0 <a href=\"https:\/\/kotlinlang.org\/docs\/data-science-overview.html\" target=\"_blank\" rel=\"noopener\">\ubb38\uc11c\uc758 \ub3c4\uc785\ubd80\ub97c \ud655\uc778<\/a>\ud558\uace0 <a href=\"https:\/\/slack-chats.kotlinlang.org\/c\/datascience\" target=\"_blank\" rel=\"noopener\">Kotlin Slack\uc758 #datascience \ucc44\ub110<\/a>\uc5d0 \ucc38\uc5ec\ud574 \ubcf4\uc138\uc694.<\/p>\n<\/p>\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/1a978606d0a933300f0540687d0baac3?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"Anton Arhipov\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Anton Arhipov<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":964,"featured_media":460714,"comment_status":"closed","ping_status":"closed","template":"","categories":[909,4759],"tags":[7144,8457,21,1017],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/509985"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=509985"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/509985\/revisions"}],"predecessor-version":[{"id":509995,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/kotlin\/509985\/revisions\/509995"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/460714"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=509985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=509985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=509985"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=509985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}