Slide 1

Slide 1 text

2019/9/17 DjangoͱJupyterͰ࢝ΊΔPyData ۽୩ ୓໵ TwitterIDɿ@kumappp27

Slide 2

Slide 2 text

͓લɺ୭Α ✤ ʮ۽୩ʯʢϋϯυϧωʔϜɿ͘·ͽʣͱ͍͍·͢ ✤ TwitterID:@kumappp27 ✤ ਓࡐܥͷձࣾͷWebΤϯδχΞ ✤ Python͸झຯ։ൃͰΑ͘ར༻ɺ
 େ޷͖ͳ໺ٿͷγεςϜΛ࡞੒ ✤ #pyconjp ॳొஃͰ͢ʂυۓுͯ͠·͕͓ٓ͘͢͠ئ͍ ͠·͢ʂ

Slide 3

Slide 3 text

ຊ೔ͷ͓୊

Slide 4

Slide 4 text

DjangoͱJupyterͰ࢝ΊΔPyData

Slide 5

Slide 5 text

ൃදʹࢸ͖͔͚ͬͨͬᶃ ✤ ໺ٿͷσʔλ෼ੳ͕ͨ͘͠Pythonελʔτ ✤ Jupyter NotebookΛѪ༻ ✤ Webͷ஌ࣝ΋໾ཱͭ͜ͱ͕൑໌ʢεΫϨΠϐϯάͱ͔

Slide 6

Slide 6 text

Web΋Data΋ɺͲͬͪ΋΍Γ͍ͨʂ

Slide 7

Slide 7 text

ൃදʹࢸ͖͔͚ͬͨͬᶄ ✤ ௐ΂ͯΈͨΒ DjangoͷϞσϧΛJupyter্Ͱ࢖͑Δ ✤ ͔͠΋؆୯ɺͦͯ͠ສೳʂ ✤ ͜Ε͸ར༻ɾڞ༗͢Δ͔͠ͳ͍ʂ

Slide 8

Slide 8 text

ຊτʔΫͷ໨త ✤ Django×Jupyterͳ؀ڥͷྑ͞Λ఻͑Δ͜ͱ ✤ ΦʔϧΠϯϫϯ؀ڥͰ࡞ۀ΋ֶश΋ḿΔ͜ͱ

Slide 9

Slide 9 text

ΞδΣϯμ ✤ ࿩͢͜ͱ͸ԼهΛ༧ఆ͍ͯ͠·͢ 1. DjangoͱJupyterͷ؆୯ͳ঺հ 2. ਪ͍ͨ͠ཧ༝ 3. Django×Jupyterͷ૊Έ߹Θ͞ΔΠϝʔδ 4. ؀ڥߏஙํ๏ 5. ΦεεϝϥΠϒϥϦɾϓϥάΠϯҰྫ

Slide 10

Slide 10 text

DjangoͱJupyterͷ؆୯ͳ঺հ

Slide 11

Slide 11 text

Djangoʹ͍ͭͯ ✤ Djangoʢδϟϯΰʣͱ͸ɺPythonͰ࣮૷͞ΕͨWeb ϑϨʔϜϫʔΫɻMVCσβΠϯύλʔϯʹ؇΍͔ʹै ͏ɻʢWikipediaΑΓʣ ✤ ڧྗͳORM͕͋Δ͜ͱͱɺϑϧελοΫͰ͋Δ఺͕ ࠾༻ཧ༝ɻ

Slide 12

Slide 12 text

Jupyterʹ͍ͭͯ ✤ ࠓճ͸Jupyterͷఏڙ͢ΔαʔϏεͷ಺
 ʮJupyter NotebookʯΛର৅ɻ ✤ Jupyter Notebook͸ɺίʔυͷଈ࣮࣌ߦ΍ՄࢹԽɺυ Ωϡϝϯτͷ࡞੒͕ߦ͑ΔWebΞϓϦέʔγϣϯɻ

Slide 13

Slide 13 text

Django×JupyterΛਪ͍ͨ͠ཧ༝

Slide 14

Slide 14 text

ਪ͍ͨ͠ཧ༝ 1. ϥΠϒϥϦΛ1ճΠϯετʔϧ͢Δ͚ͩ 2. DjangoٴͼJupyterͷϓϥάΠϯ͕๛෋
 ˠΧόʔͰ͖Δൣғ͕޿͘ͳΔ

Slide 15

Slide 15 text

ͭ·Γ… ✤ खࠒʹDjango(Web)ͱJupyter(Data)ͷೋ౛ྲྀͳ
 ສೳ؀ڥ͕࡞ΕΔ

Slide 16

Slide 16 text

Django×Jupyterͷ૊Έ߹Θ͞ΔΠϝʔδ

Slide 17

Slide 17 text

DjangoͱJupyter͕૊Έ߹Θ͞ΔΠϝʔδ ✤ DjangoͷϞσϧΛJupyter্Ͱ࢖͑Δʮ͚ͩʯ ✤ ओʹDjangoͷϞσϧΛར༻ͨ͠ڧྗͳORMͷԸܙΛ Jupyter্Ͱत͔Δܗ

Slide 18

Slide 18 text

ຊདྷJupyterͰDBʹΞΫηε͢Δ࣌ ✤ Jupyter্Ͱɺ௚઀DBʹͭͳ͙Πϝʔδ SQL౳

Slide 19

Slide 19 text

JupyterͰ௚઀DBʹͭͳ͙࣌ͷ໰୊఺ ✤ ඞཁͳॲཧ͕ଟ͍
 - Jupyter্Ͱೝূઃఆ΍
 ɹ઀ଓॲཧ͕ඞཁ
 - جຊతʹSQLͰσʔλͷ
 ɹ΍ΓऔΓΛߦ͏ඞཁ͋Γ

Slide 20

Slide 20 text

Django×JupyterͰ͸ ✤ DjangoΛհͯ͠ɺDBʹΞΫηε͢ΔΠϝʔδ ORM

Slide 21

Slide 21 text

DBར༻͕؆୯ʹ ✤ ࡞ۀͷ؆ུԽ
 - ઀ଓઃఆ͸ɺ
 վΊͯ΍Δඞཁͳ͠
 - DjangoͷORM͕࢖͑ΔͷͰɺ
 σʔλॲཧ΋ϥΫ

Slide 22

Slide 22 text

૊Έ߹ΘͤΔͱ͜Μͳ͜ͱ͕ग़དྷΔ

Slide 23

Slide 23 text

WebΞϓϦσʔλΛαΫοͱ෼ੳ ✤ WebΞϓϦͷσʔλΛɺͦͷ··Jupyter্Ͱར༻Ͱ͖Δ ✤ طଘ؀ڥʹ΋େ͖ͳӨڹ͸ͳ͠ ✤ άϥϑදࣔ΍εϥΠυԽ΋༰қ

Slide 24

Slide 24 text

εΫϦϓτΛརศతʹ࣮ߦͰ͖Δ ✤ WebΞϓϦ্ͷσʔλΛCSV౳ʹՃ޻͢Δɺ
 ͱ͍ͬͨ࡞ۀ΋ஞҰڍಈΛ֬ೝ͠ͳ͕Β࣮ߦͰ͖Δ ✤ pandas΋࢖͑ΔͷͰՃ޻΋ϥΫ ✤ ※౰વ࠷ॳ͸ςετ؀ڥͰ࣮ߦ͢Δɺͱ͍ͬͨ࠷௿ݶͷ ഑ྀ͸ඞཁ

Slide 25

Slide 25 text

·ͱΊΔͱ… ✤ Web্ͷσʔλΛѻ͏ͨΊͷɺ
 ΠϯλʔϑΣʔεʹ
 Jupyter͕ͳͬͯ͘Ε͍ͯΔʂ

Slide 26

Slide 26 text

Django×Jupyterͷ؀ڥߏஙํ๏

Slide 27

Slide 27 text

Djangoͷ؀ڥߏங

Slide 28

Slide 28 text

Djangoͷ؀ڥߏங ✤ جຊతʹ͸ެࣜαΠτ௨Γͷߏஙํ๏ͰOK ✤ $ pip install django ✤ $ conda install django (Anacondaͷ৔߹) ✤ ※͍ͣΕͷ৔߹΋Ծ૝؀ڥΛཱͯͯΠϯετʔϧ͢Δ ͷ͕Φεεϝ

Slide 29

Slide 29 text

ΞϓϦͷ࡞੒ ✤ JupyterΛಋೖ͢ΔͨΊʹɺͱΓ͋͑ͣΞϓϦΛ࡞੒
 $ django-admin startproject test_project
 $ cd test_project
 $ python manage.py startapp test_app ✤ ʮtest_projectʯͱ͍͏ϓϩδΣΫτʹʮtest_appʯͱ ͍͏ΞϓϦΛ࡞੒ ✤ ※ৄ͘͠͸ެࣜυΩϡϝϯτࢀর
 (https://docs.djangoproject.com/ja/2.2/)

Slide 30

Slide 30 text

Jupyterͷಋೖ

Slide 31

Slide 31 text

ಋೖ͸ͱͬͯ΋؆୯ ✤ django-extensions ΛΠϯετʔϧ͢Δ͚ͩʂ ✤ pipͰΠϯετʔϧ͢Δ৔߹͸ 
 $ pip install django-extensions ✤ setting.pyͷINSTALLED_APPSʹҎԼΛ௥Ճ
 ‘django_extensions' ✤ ࢀߟɿhttps://github.com/django-extensions/django-extensions

Slide 32

Slide 32 text

Jupyterͷىಈ΋ϥΫνϯ ✤ manage.pyͷ͋ΔϑΥϧμͰҎԼίϚϯυΛ࣮ߦ
 $ python manage.py shell_plus —notebook ✤ ىಈʹ੒ޭͨ͠Βɺදࣔ͞ΕͨURLΛϒϥ΢βͰΞΫηε ✤ $ jupyter notebook Λ࣮ߦ͢Δͷͱ΄΅ಉ͡ʂ

Slide 33

Slide 33 text

DjangoͷϞσϧΛJupyterͰར༻͢Δ ✤ Jupyter্ͰϞσϧΛimport͢Δ͚ͩͰ
 ௨ৗ௨ΓϞσϧ͕ར༻Մೳʂ ✤ ෳࡶͳઃఆ౳͸ෆཁ ✤ ※؀ڥʹΑͬͯ͸Լه4ߦͷ࣮ߦ͕ඞཁʹͳΓ·͢

Slide 34

Slide 34 text

ར༻Πϝʔδ ✤ DjangoͷORMͰऔಘͨ͠σʔλΛσʔλϑϨʔϜʹม׵

Slide 35

Slide 35 text

ʢ͓·͚ʣDockerͷઃఆͱ஫ҙ ✤ جຊతͳ࡞Γํ͸ࠓճ͸ׂѪɺ
 ৄ͘͠͸DockerެࣜυΩϡϝϯτʹͯ
 ʢhttps://docs.docker.com/compose/django/ʣ ✤ Dockerʹͯઌड़ͷJupyterͷಋೖ·Ͱߦ͏ࡍɺ
 Jupyter༻ͷϙʔτͷ͚͕݀͋ඞਢͳͷͰ஫ҙ
 ΞΫηεͰ͖ͳ͘ͳΔʢܦݧஊʣ

Slide 36

Slide 36 text

ΦεεϝϥΠϒϥϦɾϓϥάΠϯҰྫ

Slide 37

Slide 37 text

ΦεεϝϥΠϒϥϦɾϓϥάΠϯͷҰྫ ✤ Django΍JupyterΛར༻͢Δ্Ͱ
 ໾ཱͭϥΠϒϥϦ΍ϓϥάΠϯΛग़དྷΔݶΓ঺հ ✤ ଞʹ΋ͨ͘͞Μ͋ΔͷͰɺڵຯΛ࣋ͬͨํ͸ௐ΂ͯΈ ͍ͯͩ͘͞

Slide 38

Slide 38 text

PyDataʹ͓͍ͯͷΦεεϝ ✤ Numpy
 ଟ࣍ݩ഑ྻΛαϙʔτ͢Δɺ਺஋ܭࢉ༻Ϟδϡʔϧ
 ػցֶशͷԋࢉ౳ʹศར ✤ pandas
 σʔλϑϨʔϜܗࣜͷ഑ྻΛఏڙ͢ΔϥΠϒϥϦ
 σʔλͷՄࢹԽɾՃ޻ʹ༏ΕΔ ✤ matplotlib
 Python΍NumpyͷͨΊͷάϥϑඳըϥΠϒϥϦ ✤ ※ػցֶशपΓͷπʔϧ͸ࢲ͕ະܦݧͷͨΊ֎͍ͯ͠·͢…

Slide 39

Slide 39 text

Jupyterʹ͓͍ͯͷΦεεϝ ✤ nbextensions
 Jupyterʹ֦ுػೳΛಋೖग़དྷΔ
 LaTeXͷ؀ڥͩͬͨΓίʔυ੔ܗͩͬͨΓ ✤ RISE
 JupyterΛεϥΠυܗࣜʹม׵Ͱ͖Δ
 ඳըͨ͠άϥϑΛͦͷ··εϥΠυࢿྉʹ͢Δ࣌ͳͲʹΦεεϝ

Slide 40

Slide 40 text

Djangoʹ͓͍ͯͷΦεεϝ ✤ Django REST Framework
 Web API Λߏங͢ΔͨΊͷπʔϧ
 ໘౗ͳAPIͷઃఆ౳͕؆ུԽͰ͖Δ ✤ Django-filter
 ↑ͷDRFͱ૊Έ߹ΘͤͯݕࡧػೳΛ௥ՃͰ͖Δ ✤ Django-pandas
 ϞσϧͷσʔλΛσʔλϑϨʔϜܗࣜʹม׵Ͱ͖Δ
 ͦͯ͠σʔλͷՄࢹԽɾՃ޻ʹར༻Ͱ͖Δ

Slide 41

Slide 41 text

࠷ޙʹ

Slide 42

Slide 42 text

Django×JupyterΛ࢖ͬͯΈͯ ✤ Webͱσʔλ૒ํͷ஌ݟΛಘΕͨ
 - σʔλॲཧ΋ɺWeb։ൃ΋ಉ͡؀ڥͰͰ͖Δ
 - Ξ΢τϓοτͷੵΈॏͶ͕ՄࢹԽ
 - Ϟνϕʔγϣϯͷҡ࣋ͱɺ࣮ӡ༻Λҙֶࣝͨ͠श ✤ ͜Ε͔ΒPyDataΛ࢝ΊΔͳΒɺͥͻDjango×JupyterΛʂ

Slide 43

Slide 43 text

Ҏ্ɺ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ