Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Beginning PyData with Django and Jupyter
Search
kuma127
September 17, 2019
Programming
5.9k
3
Share
Beginning PyData with Django and Jupyter
PyCon JP 2019 9/17 16:15~
kuma127
September 17, 2019
More Decks by kuma127
See All by kuma127
ReactPyを使ってreact likeにUIをPythonで実装する
kuma127
0
360
私と#pyhack
kuma127
0
330
配信チームの準備と当日進行について
kuma127
0
390
石川雅規のことをもっと知ってもらいたいLT
kuma127
0
1.5k
DjangoとJupyterで捗るPyData
kuma127
1
1.7k
趣味駆動学習のススメ〜野球の場合〜
kuma127
0
360
プロスペクトをデータで紹介
kuma127
2
2.8k
気軽に手に入る成績データで野球分析をしてみた
kuma127
0
2.1k
Python is simple and deep
kuma127
0
77
Other Decks in Programming
See All in Programming
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
460
横断組織出身のQAEがインプロセスQAEでつまずいたこと・活かせたこと
ty89
0
440
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
400
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
1.6k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
2.9k
Claspは野良GASの夢をみるか
takter00
0
130
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
1.5k
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
160
1人1案件のプロダクトエンジニア時代に、"プロセス監督"としてチャレンジしたこと
non0113
0
350
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
990
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
390
AIエージェントの隔離技術の徹底比較
kawayu
0
440
Featured
See All Featured
Claude Code のすすめ
schroneko
67
220k
Unsuck your backbone
ammeep
672
58k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
710
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Skip the Path - Find Your Career Trail
mkilby
1
130
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Ruling the World: When Life Gets Gamed
codingconduct
0
240
How STYLIGHT went responsive
nonsquared
100
6.1k
Transcript
2019/9/17 DjangoͱJupyterͰ࢝ΊΔPyData ۽୩ TwitterIDɿ@kumappp27
͓લɺ୭Α ✤ ʮ۽୩ʯʢϋϯυϧωʔϜɿ͘·ͽʣͱ͍͍·͢ ✤ TwitterID:@kumappp27 ✤ ਓࡐܥͷձࣾͷWebΤϯδχΞ ✤ Pythonझຯ։ൃͰΑ͘ར༻ɺ େ͖ͳٿͷγεςϜΛ࡞
✤ #pyconjp ॳొஃͰ͢ʂυۓுͯ͠·͕͓ٓ͘͢͠ئ͍ ͠·͢ʂ
ຊͷ͓
DjangoͱJupyterͰ࢝ΊΔPyData
ൃදʹࢸ͖͔͚ͬͨͬᶃ ✤ ٿͷσʔλੳ͕ͨ͘͠Pythonελʔτ ✤ Jupyter NotebookΛѪ༻ ✤ Webͷཱࣝͭ͜ͱ͕໌ʢεΫϨΠϐϯάͱ͔
WebDataɺͲͬͪΓ͍ͨʂ
ൃදʹࢸ͖͔͚ͬͨͬᶄ ✤ ௐͯΈͨΒ DjangoͷϞσϧΛJupyter্Ͱ͑Δ ✤ ͔͠؆୯ɺͦͯ͠ສೳʂ ✤ ͜Εར༻ɾڞ༗͢Δ͔͠ͳ͍ʂ
ຊτʔΫͷత ✤ Django×Jupyterͳڥͷྑ͞Λ͑Δ͜ͱ ✤ ΦʔϧΠϯϫϯڥͰ࡞ۀֶशḿΔ͜ͱ
ΞδΣϯμ ✤ ͢͜ͱԼهΛ༧ఆ͍ͯ͠·͢ 1. DjangoͱJupyterͷ؆୯ͳհ 2. ਪ͍ͨ͠ཧ༝ 3. Django×JupyterͷΈ߹Θ͞ΔΠϝʔδ 4.
ڥߏஙํ๏ 5. ΦεεϝϥΠϒϥϦɾϓϥάΠϯҰྫ
DjangoͱJupyterͷ؆୯ͳհ
Djangoʹ͍ͭͯ ✤ DjangoʢδϟϯΰʣͱɺPythonͰ࣮͞ΕͨWeb ϑϨʔϜϫʔΫɻMVCσβΠϯύλʔϯʹ؇͔ʹै ͏ɻʢWikipediaΑΓʣ ✤ ڧྗͳORM͕͋Δ͜ͱͱɺϑϧελοΫͰ͋Δ͕ ࠾༻ཧ༝ɻ
Jupyterʹ͍ͭͯ ✤ ࠓճJupyterͷఏڙ͢ΔαʔϏεͷ ʮJupyter NotebookʯΛରɻ ✤ Jupyter Notebookɺίʔυͷଈ࣮࣌ߦՄࢹԽɺυ Ωϡϝϯτͷ࡞͕ߦ͑ΔWebΞϓϦέʔγϣϯɻ
Django×JupyterΛਪ͍ͨ͠ཧ༝
ਪ͍ͨ͠ཧ༝ 1. ϥΠϒϥϦΛ1ճΠϯετʔϧ͢Δ͚ͩ 2. DjangoٴͼJupyterͷϓϥάΠϯ͕๛ ˠΧόʔͰ͖Δൣғ͕͘ͳΔ
ͭ·Γ… ✤ खࠒʹDjango(Web)ͱJupyter(Data)ͷೋྲྀͳ ສೳڥ͕࡞ΕΔ
Django×JupyterͷΈ߹Θ͞ΔΠϝʔδ
DjangoͱJupyter͕Έ߹Θ͞ΔΠϝʔδ ✤ DjangoͷϞσϧΛJupyter্Ͱ͑Δʮ͚ͩʯ ✤ ओʹDjangoͷϞσϧΛར༻ͨ͠ڧྗͳORMͷԸܙΛ Jupyter্Ͱत͔Δܗ
ຊདྷJupyterͰDBʹΞΫηε͢Δ࣌ ✤ Jupyter্ͰɺDBʹͭͳ͙Πϝʔδ SQL
JupyterͰDBʹͭͳ͙࣌ͷ ✤ ඞཁͳॲཧ͕ଟ͍ - Jupyter্Ͱೝূઃఆ ɹଓॲཧ͕ඞཁ - جຊతʹSQLͰσʔλͷ ɹΓऔΓΛߦ͏ඞཁ͋Γ
Django×JupyterͰ ✤ DjangoΛհͯ͠ɺDBʹΞΫηε͢ΔΠϝʔδ ORM
DBར༻͕؆୯ʹ ✤ ࡞ۀͷ؆ུԽ - ଓઃఆɺ վΊͯΔඞཁͳ͠ - DjangoͷORM͕͑ΔͷͰɺ σʔλॲཧϥΫ
Έ߹ΘͤΔͱ͜Μͳ͜ͱ͕ग़དྷΔ
WebΞϓϦσʔλΛαΫοͱੳ ✤ WebΞϓϦͷσʔλΛɺͦͷ··Jupyter্Ͱར༻Ͱ͖Δ ✤ طଘڥʹେ͖ͳӨڹͳ͠ ✤ άϥϑදࣔεϥΠυԽ༰қ
εΫϦϓτΛརศతʹ࣮ߦͰ͖Δ ✤ WebΞϓϦ্ͷσʔλΛCSVʹՃ͢Δɺ ͱ͍ͬͨ࡞ۀஞҰڍಈΛ֬ೝ͠ͳ͕Β࣮ߦͰ͖Δ ✤ pandas͑ΔͷͰՃϥΫ ✤ ※વ࠷ॳςετڥͰ࣮ߦ͢Δɺͱ͍ͬͨ࠷ݶͷ ྀඞཁ
·ͱΊΔͱ… ✤ Web্ͷσʔλΛѻ͏ͨΊͷɺ ΠϯλʔϑΣʔεʹ Jupyter͕ͳͬͯ͘Ε͍ͯΔʂ
Django×Jupyterͷڥߏஙํ๏
Djangoͷڥߏங
Djangoͷڥߏங ✤ جຊతʹެࣜαΠτ௨Γͷߏஙํ๏ͰOK ✤ $ pip install django ✤ $
conda install django (Anacondaͷ߹) ✤ ※͍ͣΕͷ߹ԾڥΛཱͯͯΠϯετʔϧ͢Δ ͷ͕Φεεϝ
ΞϓϦͷ࡞ ✤ 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/)
Jupyterͷಋೖ
ಋೖͱͬͯ؆୯ ✤ django-extensions ΛΠϯετʔϧ͢Δ͚ͩʂ ✤ pipͰΠϯετʔϧ͢Δ߹ $ pip install
django-extensions ✤ setting.pyͷINSTALLED_APPSʹҎԼΛՃ ‘django_extensions' ✤ ࢀߟɿhttps://github.com/django-extensions/django-extensions
JupyterͷىಈϥΫνϯ ✤ manage.pyͷ͋ΔϑΥϧμͰҎԼίϚϯυΛ࣮ߦ $ python manage.py shell_plus —notebook ✤ ىಈʹޭͨ͠Βɺදࣔ͞ΕͨURLΛϒϥβͰΞΫηε
✤ $ jupyter notebook Λ࣮ߦ͢Δͷͱ΄΅ಉ͡ʂ
DjangoͷϞσϧΛJupyterͰར༻͢Δ ✤ Jupyter্ͰϞσϧΛimport͢Δ͚ͩͰ ௨ৗ௨ΓϞσϧ͕ར༻Մೳʂ ✤ ෳࡶͳઃఆෆཁ ✤ ※ڥʹΑͬͯԼه4ߦͷ࣮ߦ͕ඞཁʹͳΓ·͢
ར༻Πϝʔδ ✤ DjangoͷORMͰऔಘͨ͠σʔλΛσʔλϑϨʔϜʹม
ʢ͓·͚ʣDockerͷઃఆͱҙ ✤ جຊతͳ࡞ΓํࠓճׂѪɺ ৄ͘͠DockerެࣜυΩϡϝϯτʹͯ ʢhttps://docs.docker.com/compose/django/ʣ ✤ Dockerʹͯઌड़ͷJupyterͷಋೖ·Ͱߦ͏ࡍɺ Jupyter༻ͷϙʔτͷ͚͕݀͋ඞਢͳͷͰҙ ΞΫηεͰ͖ͳ͘ͳΔʢܦݧஊʣ
ΦεεϝϥΠϒϥϦɾϓϥάΠϯҰྫ
ΦεεϝϥΠϒϥϦɾϓϥάΠϯͷҰྫ ✤ DjangoJupyterΛར༻͢Δ্Ͱ ཱͭϥΠϒϥϦϓϥάΠϯΛग़དྷΔݶΓհ ✤ ଞʹͨ͘͞Μ͋ΔͷͰɺڵຯΛ࣋ͬͨํௐͯΈ ͍ͯͩ͘͞
PyDataʹ͓͍ͯͷΦεεϝ ✤ Numpy ଟ࣍ݩྻΛαϙʔτ͢Δɺܭࢉ༻Ϟδϡʔϧ ػցֶशͷԋࢉʹศར ✤ pandas σʔλϑϨʔϜܗࣜͷྻΛఏڙ͢ΔϥΠϒϥϦ σʔλͷՄࢹԽɾՃʹ༏ΕΔ ✤
matplotlib PythonNumpyͷͨΊͷάϥϑඳըϥΠϒϥϦ ✤ ※ػցֶशपΓͷπʔϧࢲ͕ະܦݧͷͨΊ֎͍ͯ͠·͢…
Jupyterʹ͓͍ͯͷΦεεϝ ✤ nbextensions Jupyterʹ֦ுػೳΛಋೖग़དྷΔ LaTeXͷڥͩͬͨΓίʔυܗͩͬͨΓ ✤ RISE JupyterΛεϥΠυܗࣜʹมͰ͖Δ ඳըͨ͠άϥϑΛͦͷ··εϥΠυࢿྉʹ͢Δ࣌ͳͲʹΦεεϝ
Djangoʹ͓͍ͯͷΦεεϝ ✤ Django REST Framework Web API Λߏங͢ΔͨΊͷπʔϧ ໘ͳAPIͷઃఆ͕؆ུԽͰ͖Δ ✤
Django-filter ↑ͷDRFͱΈ߹ΘͤͯݕࡧػೳΛՃͰ͖Δ ✤ Django-pandas ϞσϧͷσʔλΛσʔλϑϨʔϜܗࣜʹมͰ͖Δ ͦͯ͠σʔλͷՄࢹԽɾՃʹར༻Ͱ͖Δ
࠷ޙʹ
Django×JupyterΛͬͯΈͯ ✤ WebͱσʔλํͷݟΛಘΕͨ - σʔλॲཧɺWeb։ൃಉ͡ڥͰͰ͖Δ - ΞτϓοτͷੵΈॏͶ͕ՄࢹԽ - Ϟνϕʔγϣϯͷҡ࣋ͱɺ࣮ӡ༻Λҙֶࣝͨ͠श ✤
͜Ε͔ΒPyDataΛ࢝ΊΔͳΒɺͥͻDjango×JupyterΛʂ
Ҏ্ɺ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ