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
3
5.7k
Beginning PyData with Django and Jupyter
PyCon JP 2019 9/17 16:15~
kuma127
September 17, 2019
Tweet
Share
More Decks by kuma127
See All by kuma127
私と#pyhack
kuma127
0
280
配信チームの準備と当日進行について
kuma127
0
360
石川雅規のことをもっと知ってもらいたいLT
kuma127
0
1.5k
DjangoとJupyterで捗るPyData
kuma127
1
1.6k
趣味駆動学習のススメ〜野球の場合〜
kuma127
0
340
プロスペクトをデータで紹介
kuma127
2
2.7k
気軽に手に入る成績データで野球分析をしてみた
kuma127
0
2.1k
Python is simple and deep
kuma127
0
52
Other Decks in Programming
See All in Programming
Amazon Q CLI開発で学んだAIコーディングツールの使い方
licux
3
180
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2k
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
740
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
360
令和最新版手のひらコンピュータ
koba789
13
7.3k
Vibe coding コードレビュー
kinopeee
0
430
CEDEC 2025 『ゲームにおけるリアルタイム通信への QUIC導入事例の紹介』
segadevtech
3
820
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1.1k
DataformでPythonする / dataform-de-python
snhryt
0
160
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
320
[DevinMeetupTokyo2025] コード書かせないDevinの使い方
takumiyoshikawa
2
280
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1k
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A better future with KSS
kneath
239
17k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
BBQ
matthewcrist
89
9.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
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Λʂ
Ҏ্ɺ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ