Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Navigating the Data Science Python Ecosystem

Navigating the Data Science Python Ecosystem

Navigating the Data Science Python Ecosystem, OSCON 2016

Christine Doig

May 19, 2016
Tweet

More Decks by Christine Doig

Other Decks in Technology

Transcript

  1. 2 is…. Leading Open Data Science Platform
 Powered by Python,

    the fastest growing data science language • Accelerate Time-to-Value • Connect Data, Analytics & Compute • Empower Data Science Teams
  2. 3 NAVIGATING THE DATA SCIENCE PYTHON ECOSYSTEM 1 Introduction to

    Data Science 2 The State of Python for Data Science 3 From data to models to applications
  3. 6 The Data Science Venn Diagram Revisited Machine Learning Big

    Data Visualization BI / ETL Scientific computing CS / Programming Data Science
  4. 7 The Data Science Venn Diagram Revisited Machine Learning Big

    Data Visualization BI / ETL Scientific computing CS / Programming Data Science R Statistics Neural Networks Deep Learning NLP Computer Vision Hadoop Spark MPI GPUs Hive Storm Web development Array computing Software best practises Virtualization C++ Matlab HDFS Tableau D3 SQL Data warehouse Dashboards Postgres Python Java SAS JS Bayesian Clojure MS Excel Docker
  5. 8 Machine Learning Big Data Visualization BI / ETL Scientific

    Computing CS / Programming DS Data Scientists come with different skills and backgrounds Machine Learning Big Data Visualization BI / ETL CS / Programming DS Machine Learning Big Data Visualization BI / ETL CS / Programming DS Statistician / Analyst Research / Computational Scientist Developer / Engineer Scientific Computing Scientific Computing
  6. 9 Machine Learning Big Data Visualization BI / ETL Scientific

    Computing CS / Programming DS Data Scientists come with different skills and backgrounds Machine Learning Big Data Visualization BI / ETL CS / Programming DS Machine Learning Big Data Visualization BI / ETL CS / Programming DS Data Scientist Scientific Computing Scientific Computing Data Scientist Data Scientist
  7. 10 Data Science is about building teams Data Science team

    Machine Learning Big Data Visualization BI / ETL CS / Programming DS Scientific Computing
  8. 11 Statistician / Analyst Research / Computational Scientist Developer /

    Engineer Works with Delivers Thinks data dataframes & tables arrays & data structures data structures & JSON insights, predictions, visualizations algorithms, libraries, performance software, applications, containers Tableau SQL R SAS MS Excel Fortran Matlab C / C++ MPI Docker Postgres Java JS Redshift HDFS
  9. 12 Challenges Machine Learning Big Data Visualization BI / ETL

    Scientific Computing CS / Programming DS • Get diverse data teams (languages, tools, data models, deliverables…) to collaborate effectively • Move Data Scientist (Stats / Analyst) to use Big Data infrastructure • Deploy predictive models into production applications • Share insights with decision makers
  10. 13 Challenges Machine Learning Big Data Visualization BI / ETL

    Scientific Computing CS / Programming DS • Collaboration • Big Data • Deployment • Sharing insights
  11. 14 The Data Science team workflow • Implements a predictive

    modeling algorithm Algorithm (e.g. SVM) • Fits different models with different parameters to find the best one Algorithm (e.g. Logistic Regression) Algorithm (e.g. Neural Network) scripts to transform and select data + Show results to domain expert / decision maker • Build and deploy an application that uses the predictive model e.g depending on the prediction, show the user a different ad Integrate with existing deployment system
  12. 16 Why Python? Machine Learning Big Data Visualization BI /

    ETL CS / Programming Scientific Computing Statistician / Analyst Research / Computational Scientist Developer / Engineer Tableau SQL R SAS MS Excel Fortran Matlab C / C++ MPI Docker Postgres Java JS Redshift HDFS Algorithm (e.g. SVM) Algorithm (e.g. Logistic Regression) Algorithm (e.g. Neural Network) script to transform and select data +
  13. 18 The state of Python for Data Science Machine Learning

    Big Data Visualization BI / ETL Scientific computing CS / Programming Numba Blaze Bokeh Dask
  14. 19 Anaconda Glossary PYTHON NumPy, SciPy, Pandas, Scikit-learn, Jupyter /

    IPython, Numba, Matplotlib, Spyder, Numexpr, Cython, Theano, Scikit-image, NLTK, NetworkX and 150+ packages conda PYTHON cond conda • Anaconda distribution: Python distribution that includes 150+ packages for data science (in the installer) • conda: Cross-platform and language agnostic package and environment manager • Miniconda: Minified version of Anaconda, with just Python and conda. • Anaconda Cloud: Cloud service to host and share public and private packages, environments and notebooks • conda environments: custom isolated sandboxes to easily reproduce and share data science projects Anaconda distribution Miniconda
  15. 20 Why Anaconda distribution? PYTHON NumPy, SciPy, Pandas, Scikit-learn, Jupyter

    / IPython, Numba, Matplotlib, Spyder, Numexpr, Cython, Theano, Scikit-image, NLTK, NetworkX and 150+ packages conda PYTHON cond conda Anaconda distribution Miniconda • Easy to install on all platforms • Trusted by industry leaders • Large user base: 3M+ downloads • BSD license • Extensible - easily build, share and install proprietary libraries with Anaconda Cloud • Language agnostic - Python, R, Scala… • Allows isolated custom sandboxes with different versions of packages
  16. 22 Python Data Science workflow Client Machine Compute Node Compute

    Node Compute Node Head Node Interactive DS Environment Data munging, prep, tidying Data visualization Data modeling
  17. 23 The Jupyter Notebook is a web application that allows

    you to create and share documents that contain live code, equations, visualizations and explanatory text. Open source, interactive data science and scientific computing across over 40 programming languages. Jupyter
  18. 25 Continuum Analytics contributions to the Python ecosystem Bokeh Dask

    Datashader Blaze • Web interactive data visualizations (no JS) • Graphics pipeline system for creating meaningful representations of large amounts of data • Unified expression system to query heterogeneous data • Parallel computing framework
  19. 26 Bokeh Interactive visualization framework that targets modern web browsers

    for presentation • No JavaScript • Python, R, Scala and Lua bindings • Easy to embed in web applications • Server apps: data can be updated, and UI and selection events can be processed to trigger more visual updates. http://bokeh.pydata.org/en/latest/
  20. 29 Datashader graphics pipeline system for creating meaningful representations of

    large amounts of data • Provides automatic, nearly parameter-free visualization of datasets • Allows extensive customization of each step in the data-processing pipeline • Supports automatic downsampling and re- rendering with Bokeh and the Jupyter notebook • Works well with dask and numba to handle very large datasets in and out of core (with examples using billions of datapoints) https://github.com/bokeh/datashader NYC census data by race
  21. 31 Moving from small data to big data Client Machine

    Compute Node Compute Node Compute Node Head Node Client Machine Compute Node Compute Node Compute Node Head Node Big Data Small Data Dask
  22. 32 Dask Dataframes Dask >>> import pandas as pd >>>

    df = pd.read_csv('iris.csv') >>> df.head() sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa 4 5.0 3.6 1.4 0.2 Iris-setosa >>> max_sepal_length_setosa = df[df.species == 'setosa'].sepal_length.max() 5.7999999999999998 >>> import dask.dataframe as dd >>> ddf = dd.read_csv('*.csv') >>> ddf.head() sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa 4 5.0 3.6 1.4 0.2 Iris-setosa … >>> d_max_sepal_length_setosa = ddf[ddf.species == 'setosa'].sepal_length.max() >>> d_max_sepal_length_setosa.compute() 5.7999999999999998
  23. 33 Dask Arrays >>> import numpy as np >>> np_ones

    = np.ones((5000, 1000)) >>> np_ones array([[ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], ..., [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.]]) >>> np_y = np.log(np_ones + 1)[:5].sum(axis=1) >>> np_y array([ 693.14718056, 693.14718056, 693.14718056, 693.14718056, 693.14718056]) >>> import dask.array as da >>> da_ones = da.ones((5000000, 1000000), chunks=(1000, 1000)) >>> da_ones.compute() array([[ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], ..., [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.], [ 1., 1., 1., ..., 1., 1., 1.]]) >>> da_y = da.log(da_ones + 1)[:5].sum(axis=1) >>> np_da_y = np.array(da_y) #fits in memory array([ 693.14718056, 693.14718056, 693.14718056, 693.14718056, …, 693.14718056]) # Result doesn’t fit in memory >>> da_y.to_hdf5('myfile.hdf5', 'result') Dask
  24. 34 Dask A parallel computing framework through task scheduling and

    blocked algorithms • Familiar: Implements parallel NumPy and Pandas objects • Fast: Optimized for demanding for numerical applications • Flexible: for sophisticated and messy algorithms • Scales up: Runs resiliently on clusters of 100s of machines • Scales down: Pragmatic in a single process on a laptop • Interactive: Responsive and fast for interactive data science
  25. 35 Querying heterogenous data storage systems HDFS SQL Flat files

    (CSV…) NOSQL (mongodb) Client Machine Compute Node Compute Node Compute Node Write once, query anywhere! Blaze
  26. 36 Conda and Docker Laptop, server, EC2 instance conda env

    1 Analysis 1 Analysis 3 Laptop, server, EC2 instance conda env 1 conda env 2 conda env 3 Analysis 1 Analysis 2 Analysis 3 Data Science Development Docker container Data Science Deployment Development Deployment
  27. 39 Data Science team workflow Client Machine Compute Node Compute

    Node Compute Node Head Node Client Machine Compute Node Compute Node Compute Node Head Node • Setup your environment locally (single node) on any platform or a cluster HDFS Databases • Use same expression to query data no matter where it lives Blaze • Scale your data processing, without chaning frameworks or paradigms dask • Present and tell your data story to decision makers Bokeh + datashader • Build large scale meaningful interactive data visualizations conda env • Deploy your interactive analytical/predictive application
  28. 40 Challenges (reminder) Machine Learning Big Data Visualization BI /

    ETL Scientific Computing CS / Programming DS • Collaboration • Big Data • Deployment • Sharing insights
  29. 41 Challenges revisited Client Machine Compute Node Compute Node Compute

    Node Head Node Client Machine Compute Node Compute Node Compute Node Head Node • Setup your environment locally (single node) on any platform or a cluster HDFS Databases • Use same expression to query data no matter where it lives Blaze • Scale your data processing, without chaning frameworks or paradigms dask • Present and tell your data story to decision makers Bokeh + datashader • Build large scale meaningful interactive data visualizations conda env • Deploy your interactive analytical/predictive application Sharing insights Big Data Collaboration Deployment