Slide 1

Slide 1 text

iPython & Jupyter: 4 fun & pro t Лев Тонких

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Наши проекты

Slide 4

Slide 4 text

Лучшее 2015 «Афиша-Рестораны» и «Рамблер.Почта» вошли в список 25 лучших приложений 2015 года для iOS по версии редакции AppStore, официального онлайн-магазина Apple. У «Афиши-Рестораны» — 15-е место в рейтинге, «Рамблер.Почта» — на 24-м. http://lenta.ru/news/2015/12/09/rambler/ (http://lenta.ru/news/2015/12/09/rambler/)

Slide 5

Slide 5 text

Контакты В группе компаний Rambler&Co всегда есть открытые вакансии для тех, кто хочет профессионально расти и развиваться, занимаясь тем, что по-настоящему нравится

Slide 6

Slide 6 text

В чем разница между IPython & Jupyter?

Slide 7

Slide 7 text

IPython 2001 Все в консоли, отображение графиков в новом окне и т.д. IPython Notebook pre 1.0 18 декабря 2011

Slide 8

Slide 8 text

8 августа 2013 - IPython 1.0 1 апреля 2014 - IPython 2.0 Появились виджеты 27 февраля 2015 - IPython 3.0 - 54 IPython kernels for other languages (https://github.com/ipython/ipython/wiki/IPython- kernels-for-other-languages)

Slide 9

Slide 9 text

Проблема В названии IPython Это уже не только Python

Slide 10

Slide 10 text

Jupyter Notebook И еще одна проблема... Один большой монолитный репозиторий

Slide 11

Slide 11 text

Куда класть исходники - Григорий Петров Куда класть исходники-Григорий Петров

Slide 12

Slide 12 text

Jupyter 4.0 "BigSplit" ipython ipykernel ipywidget notebook jupyter_core etc. 8 января 2016 - Jupyter 4.1 Первый релиз после BigSplit Будут частыми smaller releases

Slide 13

Slide 13 text

Multi-cells Выделение Shift-Up / Shift-Down Merge Shift-M

Slide 14

Slide 14 text

Command palette Cmd-Shift-P / Ctrl-Shift-P

Slide 15

Slide 15 text

Restart kernel and run-all

Slide 16

Slide 16 text

Find & Replace Hotkey - F

Slide 17

Slide 17 text

I n [ ] : ! j u p y t e r n o t e b o o k

Slide 18

Slide 18 text

Немного магии I n [ 1 4 ] : % l s m a g i c O u t [ 1 4 ] : A v a i l a b l e l i n e m a g i c s : % a l i a s % a l i a s _ m a g i c % a u t o c a l l % a u t o m a g i c % a u t o s a v e % b o o k m a r k % c a t % c d % c l e a r % c o A v a i l a b l e c e l l m a g i c s : % % ! % % H T M L % % S V G % % b a s h % % c a p t u r e % % d e b u g % % f i l e % % h t m l % % j a v a s c r i p t % % l a t e x % % A u t o m a g i c i s O N , % p r e f i x I S N O T n e e d e d f o r l i n e m a g i c s . I n [ 1 5 ] : % q u i c k r e f

Slide 19

Slide 19 text

pwd Current working directory path I n [ 1 6 ] : % p w d O u t [ 1 6 ] : ' / U s e r s / l . t o n k i k h / i p y t h o n ' What in inside? I n [ 1 7 ] : i m p o r t o s o s . g e t c w d ( ) , o s . p a t h . r e a l p a t h ( ' . ' ) # o r s m t h e l s e ? O u t [ 1 7 ] : ( ' / U s e r s / l . t o n k i k h / i p y t h o n ' , ' / U s e r s / l . t o n k i k h / i p y t h o n ' )

Slide 20

Slide 20 text

Docstrings & examples I n [ 1 8 ] : % p i n f o % p w d

Slide 21

Slide 21 text

I n [ 1 9 ] : f r o m I P y t h o n . c o r e . m a g i c s . o s m i m p o r t O S M a g i c s m a g i c = O S M a g i c s ( ) m a g i c . p w d ( ) O u t [ 1 9 ] : ' / U s e r s / l . t o n k i k h / i p y t h o n ' I n [ 2 0 ] : % p s o u r c e m a g i c . p w d I n [ 2 1 ] : % p s o u r c e % p s o u r c e I n [ 2 2 ] : % p s o u r c e % p w d

Slide 22

Slide 22 text

env Virtual Environment I n [ ] : % e n v I n [ 2 4 ] : e n v = % e n v % p a g e e n v True or False? I n [ 1 ] : e n v = % e n v % s e t _ e n v l o l l o l q = ' l o l ' i n e n v . k e y s ( ) e n v : l o l = l o l I n [ 2 ] : q O u t [ 2 ] : F a l s e

Slide 23

Slide 23 text

I n [ 2 7 ] : # % m k d i r t e s t # % c d t e s t I n [ ] : # % l o a d t e s t . p y t e s t . p y p r i n t ( ' H e l l o w o r l d ' ) I n [ 3 1 ] : % p y c a t t e s t . p y

Slide 24

Slide 24 text

Shell capture I n [ 3 2 ] : % s c f i l e s = l s I n [ 3 3 ] : f i l e s O u t [ 3 3 ] : ' U n t i t l e d . i p y n b \ n d o c s \ n e n v \ n h t m l \ n i m g \ n i p y t h o n . i p y n b \ n i p y t h o n . s l i d e s . h t m l \ n i p y t h o n _ l o g . p y

Slide 25

Slide 25 text

I n [ 3 4 ] : ! l s U n t i t l e d . i p y n b e n v i m g i p y t h o n . s l i d e s . h t m l n o t _ t r a c k d o c s h t m l i p y t h o n . i p y n b i p y t h o n _ l o g . p y o v e r w r i t t I n [ 3 5 ] : f i l e s = ! l s f i l e s , f i l e s . n , f i l e s . s O u t [ 3 5 ] : ( [ ' U n t i t l e d . i p y n b ' , ' d o c s ' , ' e n v ' , ' h t m l ' , ' i m g ' , ' i p y t h o n . i p y n b ' , ' i p y t h o n . s l i d e s . h t m l ' , ' i p y t h o n _ l o g . p y ' , ' n o t _ t r a c k ' , ' o v e r w r i t t e n . p y ' , ' r e q u i r e m e n t s . t x t ' , ' t e s t . p n g ' , ' t e s t . p y ' ] , ' U n t i t l e d . i p y n b \ n d o c s \ n e n v \ n h t m l \ n i m g \ n i p y t h o n . i p y n b \ n i p y t h o n . s l i d e s . h t m l \ n i p y t h o n _ l o g . p ' U n t i t l e d . i p y n b d o c s e n v h t m l i m g i p y t h o n . i p y n b i p y t h o n . s l i d e s . h t m l i p y t h o n _ l o g . p y n o t _ t

Slide 26

Slide 26 text

Shell execute

Slide 27

Slide 27 text

I n [ 3 6 ] : f i l e s = % s x l s # = = % s c - l f i l e s = l f i l e s # f i l e s . n # f i l e s . s O u t [ 3 6 ] : [ ' U n t i t l e d . i p y n b ' , ' d o c s ' , ' e n v ' , ' h t m l ' , ' i m g ' , ' i p y t h o n . i p y n b ' , ' i p y t h o n . s l i d e s . h t m l ' , ' i p y t h o n _ l o g . p y ' , ' n o t _ t r a c k ' , ' o v e r w r i t t e n . p y ' , ' r e q u i r e m e n t s . t x t ' , ' t e s t . p n g ' , ' t e s t . p y ' ] I n [ 3 7 ] : ! ! l s O u t [ 3 7 ] : [ ' U n t i t l e d . i p y n b ' , ' d o c s ' , ' e n v ' , ' h t m l ' , ' i m g ' , ' i p y t h o n . i p y n b ' , ' i p y t h o n . s l i d e s . h t m l ' , ' i p y t h o n _ l o g . p y ' , ' n o t _ t r a c k ' , ' o v e r w r i t t e n . p y ' , ' r e q u i r e m e n t s . t x t ' , ' t e s t . p n g ' , ' t e s t . p y ' ]

Slide 28

Slide 28 text

One more example I n [ 3 8 ] : ! p i p f r e e z e | g r e p i p y t h o n i p y t h o n = = 4 . 0 . 3 i p y t h o n - g e n u t i l s = = 0 . 1 . 0 I n [ 3 9 ] : ! ! p i p f r e e z e | g r e p i p y t h o n O u t [ 3 9 ] : [ ' i p y t h o n = = 4 . 0 . 3 ' , ' i p y t h o n - g e n u t i l s = = 0 . 1 . 0 ' ]

Slide 29

Slide 29 text

Bash I n [ 4 0 ] : % % b a s h f o r i i n { 1 . . 3 } ; d o e c h o " $ i " d o n e 1 2 3

Slide 30

Slide 30 text

Who

Slide 31

Slide 31 text

I n [ 4 1 ] : % w h o O S M a g i c s a e n v f i l e s m a g i c o s q I n [ 4 2 ] : % w h o _ l s O u t [ 4 2 ] : [ ' O S M a g i c s ' , ' a ' , ' e n v ' , ' f i l e s ' , ' m a g i c ' , ' o s ' , ' q ' ]

Slide 32

Slide 32 text

I n [ 4 3 ] : % w h o _ l s d i c t O u t [ 4 3 ] : [ ' e n v ' ] I n [ 4 4 ] : % w h o s V a r i a b l e T y p e D a t a / I n f o - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - O S M a g i c s M e t a H a s T r a i t s < c l a s s ' I P y t h o n . c o r e . m a g i c s . o s m . O S M a g i c s ' > a S L i s t [ ' Y o u a r e u s i n g p i p v e r s i < . . . > i p y t h o n - g e n u t i l s = = 0 . 1 . 0 ' ] e n v d i c t n = 3 9 f i l e s S L i s t [ ' U n t i t l e d . i p y n b ' , ' d o c s ' < . . . > ' , ' t e s t . p n g ' , ' t e s t . p y ' ] m a g i c O S M a g i c s < I P y t h o n . c o r e . m a g i c s . o s m . < . . . > c s o b j e c t a t 0 x 1 0 6 3 5 3 1 6 0 > o s m o d u l e < m o d u l e ' o s ' f r o m ' / L i b r a < . . . > 3 . 5 / l i b / p y t h o n 3 . 5 / o s . p y ' > q b o o l T r u e

Slide 33

Slide 33 text

psearch Поиск по имени переменной I n [ 6 3 ] : a 1 = 1 a 2 = ' a 2 ' I n [ 6 4 ] : % p s e a r c h a * I n [ 6 6 ] : % p s e a r c h - e b u i l t i n a * # a 1 # a 2 I n [ 6 7 ] : % p s e a r c h - e b u i l t i n a * i n t

Slide 34

Slide 34 text

Logging I n [ 6 9 ] : % l o g s t a t e L o g g i n g h a s n o t b e e n a c t i v a t e d . I n [ 7 0 ] : % l o g s t a r t A c t i v a t i n g a u t o - l o g g i n g . C u r r e n t s e s s i o n s t a t e p l u s f u t u r e i n p u t s a v e d . F i l e n a m e : i p y t h o n _ l o g . p y M o d e : r o t a t e O u t p u t l o g g i n g : F a l s e R a w i n p u t l o g : F a l s e T i m e s t a m p i n g : F a l s e S t a t e : a c t i v e

Slide 35

Slide 35 text

I n [ 7 1 ] : % l o g o f f S w i t c h i n g l o g g i n g O F F I n [ 7 2 ] : % l o g o n S w i t c h i n g l o g g i n g O N I n [ 7 3 ] : % l o g s t o p I n [ ] : % c a t i p y t h o n _ l o g . p y

Slide 36

Slide 36 text

Python2 & Python3 I n [ 6 9 ] : % % h t m l < i f r a m e s c r o l l i n g = " n o " s t y l e = " b o r d e r : n o n e ; " w i d t h = " 6 4 0 " h e i g h t = " 3 3 0 " s r c = " h t t p : / / w w w . g o o g Interest over time. Web Search. Worldwide, 2004 - present. View full report in Google Trends python 2 python 3 2005 2007 2009 2011 2013 2015

Slide 37

Slide 37 text

I n [ 7 0 ] : % % p y t h o n 2 i m p o r t s y s p r i n t ( s y s . v e r s i o n ) C o u l d n ' t f i n d p r o g r a m : ' p y t h o n 2 '

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

I n [ 7 1 ] : % % p y t h o n 3 i m p o r t s y s p r i n t ( s y s . v e r s i o n ) 3 . 5 . 0 ( v 3 . 5 . 0 : 3 7 4 f 5 0 1 f 4 5 6 7 , S e p 1 2 2 0 1 5 , 1 1 : 0 0 : 1 9 ) [ G C C 4 . 2 . 1 ( A p p l e I n c . b u i l d 5 6 6 6 ) ( d o t 3 ) ] I n [ 6 ] : % % p e r l p r i n t ( s q r t ( 4 ) ) 2 I n [ 3 ] : % % r u b y i n c l u d e M a t h p u t s s q r t ( 4 ) 2 . 0

Slide 40

Slide 40 text

Write & Sharing I n [ 2 5 4 ] : % % w r i t e f i l e - a o v e r w r i t t e n . p y a = ' H i ' # Y o u a r e i n G o o d C o m p a n y W r i t i n g o v e r w r i t t e n . p y I n [ 2 5 5 ] : % p a s t e b i n - d ' t e s t f i l e ' o v e r w r i t t e n . p y O u t [ 2 5 5 ] : ' h t t p s : / / g i s t . g i t h u b . c o m / b a a a 3 b e 4 6 1 4 b 1 c 2 6 d 6 f 1 '

Slide 41

Slide 41 text

Time Время выполнения I n [ 2 7 9 ] : % t i m e x = s u m ( r a n g e ( 1 0 0 0 0 ) ) C P U t i m e s : u s e r 3 6 5 µ s , s y s : 2 µ s , t o t a l : 3 6 7 µ s W a l l t i m e : 3 7 0 µ s I n [ 2 7 8 ] : % t i m e i t x = s u m ( r a n g e ( 1 0 0 0 0 ) ) 1 0 0 0 l o o p s , b e s t o f 3 : 2 0 8 µ s p e r l o o p I n [ 4 2 ] : % % t i m e i t - n 1 0 0 0 x = r a n g e ( 1 0 0 0 0 ) m a x ( x ) 1 0 0 0 l o o p s , b e s t o f 3 : 3 2 0 µ s p e r l o o p

Slide 42

Slide 42 text

LaTeX I n [ 3 ] : % % l a t e x \ b e g i n { e q u a t i o n } \ l a b e l { e q : n o r m a l _ d i s t } \ f r a c { 1 } { \ s i g m a \ s q r t { 2 \ p i } } \ e x p \ l e f t ( - \ f r a c { ( x - \ m u ) ^ 2 } { 2 \ s i g m a ^ 2 } \ r i g h t ) \ e n d { e q u a t i o n } exp ( − ) 1 σ 2 π ‾‾ ‾ √ (x − μ) 2 2 σ2 (1) I n [ 3 2 3 ] : % % l a t e x \ b e g i n { a l i g n } \ n a b l a \ t i m e s \ v e c { \ m a t h b f { B } } - \ , \ f r a c 1 c \ , \ f r a c { \ p a r t i a l \ v e c { \ m a t h b f { E } } } { \ p a r t i a l t } \ n a b l a \ c d o t \ v e c { \ m a t h b f { E } } & = 4 \ p i \ r h o \ \ \ n a b l a \ t i m e s \ v e c { \ m a t h b f { E } } \ , + \ , \ f r a c 1 c \ , \ f r a c { \ p a r t i a l \ v e c { \ m a t h b f { B } } } { \ p a r t i a l t \ n a b l a \ c d o t \ v e c { \ m a t h b f { B } } & = 0 \ e n d { a l i g n } ∇ × − B ⃗ 1 c ∂E ⃗ ∂t ∇ ⋅ E ⃗ ∇ × + E ⃗ 1 c ∂B ⃗ ∂t ∇ ⋅ B ⃗ = 4 π c j ⃗ = 4 πρ = 0 ⃗ = 0 (2) (3) (4) (5)

Slide 43

Slide 43 text

Demos

Slide 44

Slide 44 text

Куда спрятаться от ядерного взрыва?

Slide 45

Slide 45 text

I n [ 3 2 ] : i m p o r t o s i m p o r t r a n d o m f r o m i p y w i d g e t s i m p o r t i n t e r a c t , i n t e r a c t i v e , f i x e d i m p o r t i p y w i d g e t s a s w i d g e t s f r o m I P y t h o n . d i s p l a y i m p o r t d i s p l a y , I F r a m e I n [ 3 3 ] : c i t i e s = { ' W a s h i n g t o n ' : ( 3 8 . 8 9 0 3 6 6 , - 7 7 . 0 3 1 9 5 5 ) , ' N e w Y o r k ' : ( 4 0 . 7 1 4 5 4 5 , - 7 4 . 0 0 7 1 1 2 ) , ' L o s A n g e l e s ' : ( 3 4 . 0 5 3 4 8 5 , - 1 1 8 . 2 4 5 3 1 3 ) , ' L a s V e g a s ' : ( 3 6 . 1 7 1 9 0 6 , - 1 1 5 . 1 3 9 9 6 3 ) , } I n [ 3 4 ] : c i t y = w i d g e t s . D r o p d o w n ( o p t i o n s = c i t i e s , v a l u e = r a n d o m . c h o i c e ( l i s t ( c i t i e s . v a l u e s ( ) ) ) , d e s c r i p t i o n = ' C h o o s e c i t y : ' , ) d i s p l a y ( c i t y ) I n [ 3 5 ] : b u t t o n = w i d g e t s . T o g g l e B u t t o n ( d e s c r i p t i o n = ' M e r r y C h r i s t m a s ! ' , t o o l t i p = ' 1 2 3 ' , v a l u e = F a l s e , ) I n [ 3 6 ] : b u t t o n

Slide 46

Slide 46 text

I n [ 3 6 ] : i m p o r t f o l i u m m y _ m a p = f o l i u m . M a p ( l o c a t i o n = c i t y . v a l u e , z o o m _ s t a r t = 1 2 ) m y _ m a p . c i r c l e _ m a r k e r ( l o c a t i o n = c i t y . v a l u e , r a d i u s = 1 9 0 0 , p o p u p = ' L a u r e l h u r s t P a r k ' , l i n e _ c o l o r = ' # 3 1 8 6 c c ' , f i l l _ c o l o r = ' # 3 1 8 6 c c ' ) m y _ m a p . s i m p l e _ m a r k e r ( c i t y . v a l u e , p o p u p = ' M e r r y C h r i s t m a s h e r e ' , m a r k e r _ c o l o r = ' r e d ' , m a r k e r m y _ m a p . c r e a t e _ m a p ( p a t h = ' h t m l / m a p . h t m l ' ) # L . c o n t r o l . s c a l e ( ) . a d d T o ( m a p ) ; I n [ 3 8 ] : I F r a m e ( s r c = ' h t m l / m a p . h t m l ' , w i d t h = 1 0 0 0 , h e i g h t = 3 5 0 ) O u t [ 3 8 ] :  + - Leaflet (http://leafletjs.com) | Map data (c) OpenStreetMap (http://openstreetmap.org) contributors

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Github Commits Introducing the New GitHub Graphs - April 25, 2012 link (https://github.com/blog/1093- introducing-the-new-github-graphs)

Slide 49

Slide 49 text

I n [ 4 ] : f r o m g i t h u b i m p o r t G i t h u b i m p o r t m a t p l o t l i b . p y p l o t a s p l t i m p o r t s e a b o r n a s s n s i m p o r t p a n d a s a s p d % m a t p l o t l i b i n l i n e I n [ 3 ] : G I T H U B _ U S E R = o s . g e t e n v ( ' G I T H U B _ U S E R ' ) G I T H U B _ T O K E N = o s . g e t e n v ( ' G I T H U B _ T O K E N ' ) R E P O _ P A T H = ' p y t h o n / c p y t h o n ' I n [ 8 ] : g = G i t h u b ( G I T H U B _ U S E R , G I T H U B _ T O K E N ) r e p o = g . g e t _ r e p o ( R E P O _ P A T H ) d f = p d . D a t a F r a m e ( { ' d a t e ' : p d . S e r i e s ( ( i . c o m m i t . c o m m i t t e r . d a t e f o r i i n r e p o . g e t _ c o m m i t s ( ) s t a t s = d f . g r o u p b y ( p d . G r o u p e r ( k e y = ' d a t e ' , f r e q = ' M ' ) ) . s i z e ( )

Slide 50

Slide 50 text

I n [ 3 5 ] : p l t . f i g u r e ( f i g s i z e = ( 1 6 , 4 ) ) s t a t s . p l o t ( t i t l e = ' S t a t s o f c o m m i t s ' , l a b e l = ' C o m m i t s ' , l e g e n d = T r u e ) p l t . x l a b e l ( ' D a t e ' ) ; p l t . y l a b e l ( ' C o m m i t s ' ) p l t . s u p t i t l e ( R E P O _ P A T H , y = 1 . 0 5 , f o n t s i z e = 1 4 , f o n t w e i g h t = ' b o l d ' ) O u t [ 3 5 ] : < m a t p l o t l i b . t e x t . T e x t a t 0 x 1 7 8 9 e 3 2 b 0 >

Slide 51

Slide 51 text

ipyparallel Powerful architecture for parallel and distributed computing Single program, multiple data (SPMD) parallelism. Multiple program, multiple data (MPMD) parallelism. Message passing using MPI. Task farming. Data parallel. Combinations of these approaches. Custom user de ned approaches

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

Engine IPython instance, that takes commands handle incoming and outgoing Python objects

Slide 56

Slide 56 text

Controller provide an interface for working with a set of engines (Direct or LoadBalanced) collection of processes to which IPython engines and clients can connect Controller = Hub + Schedulers

Slide 57

Slide 57 text

Hub Center of a Cluster Process that keeps track of engine connections, schedulers, clients

Slide 58

Slide 58 text

Schedulers All actions that can be performed on the engine go through a Scheduler provide a fully asynchronous interface to a set of engines

Slide 59

Slide 59 text

I n [ ] : ! i p c l u s t e r s t a r t - n 4 I n [ 3 ] : % % b a s h p y t h o n n o t _ t r a c k / h a b r a p a r s e . p y s a v e _ f a v s _ l i s t s t l e o n n o t _ t r a c k / t e s t . t x t p y t h o n n o t _ t r a c k / h a b r a p a r s e . p y s a v e _ f a v s _ l i s t - - g t s t l e o n n o t _ t r a c k / t e s t 1 . t x t p y t h o n n o t _ t r a c k / h a b r a p a r s e . p y s a v e _ f a v s _ l i s t - - m m s t l e o n n o t _ t r a c k / t e s t 2 . t x t c a t n o t _ t r a c k / t e s t 1 . t x t n o t _ t r a c k / t e s t 2 . t x t > > n o t _ t r a c k / t e s t . t x t I n [ 4 7 ] : f r o m i p y p a r a l l e l i m p o r t C l i e n t , r e q u i r e c l i e n t = C l i e n t ( ) d v i e w = c l i e n t [ : ] I n [ 4 8 ] : d v i e w O u t [ 4 8 ] : < D i r e c t V i e w [ 0 , 1 , 2 , 3 ] > I n [ 4 9 ] : l i n k s = ( l i n k . s t r i p ( ) f o r l i n k i n o p e n ( ' n o t _ t r a c k / t e s t . t x t ' ) ) I n [ 5 0 ] : d v i e w . s c a t t e r ( ' l i n k s ' , l i s t ( l i n k s ) ) O u t [ 5 0 ] : < A s y n c R e s u l t : f i n i s h e d >

Slide 60

Slide 60 text

I n [ 5 1 ] : l e n ( d v i e w [ ' l i n k s ' ] ) O u t [ 5 1 ] : 4 I n [ 5 2 ] : @ d v i e w . r e m o t e ( b l o c k = F a l s e ) @ r e q u i r e ( ' r e q u e s t s ' , ' b s 4 ' ) d e f t a g _ m a k e r ( ) : t a g s = { } f o r l i n k i n l i n k s : s o u p = b s 4 . B e a u t i f u l S o u p ( r e q u e s t s . g e t ( l i n k ) . t e x t , ' h t m l . p a r s e r ' ) f o r i i n s o u p . f i n d A l l ( " a " , r e l = " t a g " ) : t a g = i . s t r i n g . l o w e r ( ) t a g s [ t a g ] = 1 + t a g s . g e t ( t a g , 0 ) r e t u r n t a g s I n [ 5 3 ] : t a g s = t a g _ m a k e r ( ) . r e s u l t I n [ 1 ] : # t a g s

Slide 61

Slide 61 text

I n [ 5 5 ] : f r o m c o l l e c t i o n s i m p o r t C o u n t e r f r o m f u n c t o o l s i m p o r t r e d u c e f r o m o p e r a t o r i m p o r t a d d n e w _ t a g s = d i c t ( r e d u c e ( a d d , ( C o u n t e r ( t a g ) f o r t a g i n t a g s ) ) ) I n [ 5 6 ] : l e n ( n e w _ t a g s . k e y s ( ) ) O u t [ 5 6 ] : 8 2 7 I n [ ] : f r o m w o r d c l o u d i m p o r t W o r d C l o u d w o r d c l o u d = W o r d C l o u d ( w i d t h = 1 9 2 0 , h e i g h t = 1 0 8 0 , s c a l e = 1 , f o n t _ p a t h = ' / L i b r a r y / F o n t s / V e r d a n a . t t f ' , m a x _ w o r d s = l e n ( n e w _ t a g s . k e y s ( ) ) ) w o r d c l o u d . g e n e r a t e _ f r o m _ f r e q u e n c i e s ( n e w _ t a g s . i t e m s ( ) )

Slide 62

Slide 62 text

I n [ ] : p l t . i m s h o w ( w o r d c l o u d ) p l t . a x i s ( " o f f " ) p l t . s h o w ( ) w o r d c l o u d . t o _ f i l e ( ' t e s t . p n g ' ) I n [ ] : ! i p c l u s t e r s t o p

Slide 63

Slide 63 text

nbconvert https://github.com/jupyter/nbconvert (https://github.com/jupyter/nbconvert) http://nbconvert.readthedocs.org/en/latest/usage.html (http://nbconvert.readthedocs.org/en/latest/usage.html) I n [ ] : ! j u p y t e r n b c o n v e r t - - t o s l i d e s i p y t h o n . i p y n b - - p o s t s e r v e

Slide 64

Slide 64 text

Links https://github.com/stleon/ipython-slides (https://github.com/stleon/ipython- slides) https://talkpython.fm/episodes/show/44/project-jupyter-and-ipython (https://talkpython.fm/episodes/show/44/project-jupyter-and-ipython) http://blog.jupyter.org/2016/01/08/notebook-4-1-release/ (http://blog.jupyter.org/2016/01/08/notebook-4-1-release/) https://jupyter.readthedocs.org/en/latest/ (https://jupyter.readthedocs.org/en/latest/) https://folium.readthedocs.org/en/latest/ (https://folium.readthedocs.org/en/latest/) http://matplotlib.org (http://matplotlib.org) http://stanford.edu/~mwaskom/software/seaborn/ (http://stanford.edu/~mwaskom/software/seaborn/) https://github.com/PyGithub/PyGithub (https://github.com/PyGithub/PyGithub) http://ipyparallel.readthedocs.org/en/latest/index.html (http://ipyparallel.readthedocs.org/en/latest/index.html)

Slide 65

Slide 65 text

Спасибо!