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

Simplifying Data Analysis with GitHub Codespace...

Simplifying Data Analysis with GitHub Codespaces, Jupyter Notebooks & Open AI

This is the deck I used for my talk at PyData NYC 2023

Short Abstract:
As web developers, we create large quantities of data (e.g., from test reports and analytics) that require insights for iterative optimization. But how does a JavaScript developer begin their journey into data science? Enter GitHub Codespaces, GitHub Copilot and Open AI. In this talk, I'll share my journey into creating a consistent development and runtime environment with GitHub Codespaces and Jupyter Notebooks, then activating it with Open AI to support an interactive "learn by exploring" process that helped me (as a JavaScript developer) skill up on Python and data analysis techniques in actionable ways. I'll walk through a couple of motivating use cases, and demonstrate some projects related to competitive programming and data visualization to showcase these insights in action.

Full Abstract:
Link: https://nyc2023.pydata.org/cfp/talk/D9BGVX/

Nitya Narasimhan, PhD

November 03, 2023
Tweet

More Decks by Nitya Narasimhan, PhD

Other Decks in Technology

Transcript

  1. Simplifying Data Analysis With GitHub Codespaces, Jupyter Notebooks & Open

    AI Nitya Narasimhan, PhD Senior Cloud Advocate, AI Microsoft #PyDataNYC | Nov 2023 https://aka.ms/pydata-workshop-2023
  2. Motivation “I’m an app developer not a Python expert. How

    can I learn enough to use it to tackle specific goals in my apps?” Examples: • The USA Computing Olympiad allows Python but lacks parity for resources vs. C/C++, Java. Can I create self-driven learning resources for Python competitors like my 15yo?. • Accessibility Testing generates rich data (1K+ elements per page, 100 rules, 3-5 checks per rule = ~250-500K data points. Can I give developers insight at authoring time, so they can fix issues earlier in development cycle? • Information APIs can generate pages of JSON data with dense information. Can I visualize information in ways that help users get actionable insights?
  3. Objectives Focused Learning – I want to prioritize things that

    help me get closer to my goal. “Don’t boil the ocean. Tell me how I can optimize my time,” Transferable Learning – I want to make it easy for others to reproduce or extend my work. “What tools or environments should I use that make this possible?”
  4. Challenges Developer Environment – setup can be hard to navigate

    for beginners. “It works on my machine. Must be some dependency..” Learning Process – can disrupt state of flow when context-switching across tools. “I went to Google it – and lost time going down a rabbit hole.” Knowledge Gaps – can hamper the intuition that only comes with experience. “I don’t know what I don’t know – what if I missed something?”
  5. What I want to cover today Transferable Learning with Jupyter

    Notebooks Consistent Dev Environment with GitHub Codespaces Focused Learning (in-context) with GitHub Copilot Building AI-assisted intuition using Microsoft LIDA
  6. What You Need • GitHub Account • Github Codespaces (within

    free quota) • Kaggle Dataset (or bring your own) • GitHub Copilot (free trial available)* • Open AI API Key (paid subscription)* * require paid accounts – optional exercises if you don’t have one. https://aka.ms/pydata-workshop-2023
  7. Exercise 1: Fork Repo, Launch Codespaces Based on the official

    GitHub Codespaces for Jupyter template. Fork the repo to your own profile, then launch a codespace from the menu
  8. Exercise 1: Fork Repo, Launch Codespaces Based on the official

    GitHub Codespaces for Jupyter template. Fork the repo to your own profile, then launch a codespace from the menu You should see a Visual Studio Code IDE + a dev environment ready to use!
  9. Exercise 2: Let’s Run the Default Notebook! Open the notebooks/

    folder and look for the matplotlib.ipnyb file. If not already set, ‘Select Kernel’ pick Python 3.10.8 target, ’Clear All Outputs’
  10. Exercise 2: Let’s Run the Default Notebook! “Run All”. You

    just setup a Python env with Jupyter runtime with a few clicks. Open the notebooks/ folder and look for the matplotlib.ipnyb file. If not already set, ‘Select Kernel’ pick Python 3.10.8 target, ’Clear All Outputs’ 🥳
  11. Under The Hood: What’s GitHub Codespaces? A GitHub Codespace is

    a “Development Container” that runs in a dedicated VM in the Azure Cloud. You can set a different default editor – but VS Code gets us Extensions!
  12. Under The Hood: What’s a “Development Container”? Your Visual Studio

    Code editor runs in the host machine outside the container A dev container is a Docker container with a predefined image that has all your dev environment dependencies Your code (filesystem) is mounted by the container – and stays in sync with changes “Configuration as Code” using devcontainer.json – think version controlled! Lifecycle hooks – update env from requirements.txt Everyone gets the same dev environment instantly
  13. Under The Hood: Run it locally - with Docker Desktop!

    Just “Open in Remote Container” – status shows Dev Container (local) or Codespaces (cloud) in blue No code changes needed to move between the two. It just works! Local usage saves your quota – but has some limitations (e.g, “secrets”)
  14. Under The Hood: Production vs. Dev Containers As an app

    developer, I get a consistent runtime for the entire cycle from dev to staging to production And I can debug & test in development (with richer tools) & be confident that deployed experiences will function as expected
  15. Exercise 3: Install GitHub Copilot Chat Extension Add it on

    demand – or save to devcontainer.json for reusability by all. I’ve chosen to save this – users will now get this in their env automatically.
  16. Exercise 3: Save config, then open chat window You get

    the ‘chat’ icon in your sidebar, with a slide- out chat window … And your config file is updated (rebuild now!) 🥳
  17. Under The Hood: What’s GitHub Copilot (Chat)? • Code explanations

    • Code assistance • Code refinement • Unit testing • Code profiling • Code debugging Ask questions in natural language – get responses inline, and in context!
  18. Exercise 4: Have it create a /newNotebook for me Copilot

    Chat provides a chat experience that uses the current window and history as context. It’s not perfect – see the Python cell – but it’s a quick start to my task.
  19. Exercise 4: Let’s setup the notebook with our problem I

    have a USACO problem called “Blocked Billboard” that has a published solution. Let’s first add the problem into our Notebook as Markdown. This becomes a workspace where I can try coding my answers.
  20. Exercise 4: Copy solution – and run it (provide inputs)

    Now we can use Copilot Chat to ask questions to help us understand the code and complexity
  21. Exercise 4: Copy solution – and run it (provide inputs)

    - explain this code to me - how can I improve the solution - can you simplify it using a class Notice how I stay in flow (no external visits) – and am prompted to learn more in context … The “Fast Solution” from USACO agrees on O(1) but uses classes. I can ask about that too..
  22. Exercise 4: I can also explore this more intuitively This

    time let’s use Copilot inline, so it generates code for us We don’t know “how” to visualize it – but since the goal was to explore our intuition visually (vs. code the solution), the end result really helps! 🥳
  23. Exercise 5: Get a dataset to explore (e.g., from Kaggle)

    IPL 2022 Dataset - shared with Open Data Commons License 👉🏽 downloaded Oct 2023 · Example EDA on Kaggle. TED Talks Dataset - shared with Creative Commons License 👉🏽 downloaded Oct 2023 · Example EDA on Kaggle.
  24. LIDA: Generate Data Visualizations & Infographics https://aka.ms/lida/github | Victor Dibia

    (Microsoft Research) – 2023 |. https://aka.ms/lida/org LIDA is a library for generating data visualizations and data-faithful infographics. LIDA is grammar agnostic (will work with any programming language and visualization libraries e.g. matplotlib, seaborn, altair, d3 etc) and works with multiple large language model providers (OpenAI, Azure OpenAI, PaLM, Cohere, Huggingface). Research Paper: https://arxiv.org/abs/2303.02927
  25. Exercise 6: Data Visualization Generation (user query) GitHub Copilot can

    do this too .. But you can vary the parameters and customize the base prompt here programmatically
  26. Exercise 6: Data Visualization Generation (user query) GitHub Copilot can

    do this too .. But you can vary the parameters and customize the base prompt here programmatically Provides flexibility for trial-and-error experiments to build intuition.
  27. Exercise 6: Data Visualization Explanation with LIDA lida/components/viz/vizexplainer.py system_prompt =

    """ You are a helpful assistant highly skilled in providing helpful, structured explanations of visualization of the plot(data: pd.DataFrame) method in the provided code. You divide the code into sections and provide a description of each section and an explanation. The first section should be named "accessibility" and describe the physical appearance of the chart (colors, chart type etc), the goal of the chart, as well the main insights from the chart. You can explain code across the following 3 dimensions: 1. accessibility: the physical appearance of the chart (colors, chart type etc), the goal of the chart, as well the main insights from the chart. 2. transformation: This should describe the section of the code that applies any kind of data transformation (filtering, aggregation, grouping, null value handling etc) 3. visualization: step by step description of the code that creates or modifies the presented visualization. """
  28. Things To Try: Activate Data Wrangler (Preview) Data Wrangler is

    a code-centric data cleaning tool aims to increase the productivity by providing a rich UI that automatically generates Pandas code for insightful column statistics and visualizations. https://aka.ms/datawrangler.
  29. Generative AI Course – From Principles to Prototypes 12 Lessons

    to start with (free, open-source) Jupyter Notebooks (assignments) Github Codespaces (environment OpenAI or Azure OpenAI (API key) Practice Prompt Engineering
  30. Learn by doing more .. https://aka.ms/pydata-for-jsdevs . Contribute to help

    others .. Watch this repo for more examples and tutorials for #30Days learning journeys Follow this org, codespaces template, streamlit application https://aka.ms/lida/org
  31. Thank you  Transferable Learning with Jupyter Notebooks  Consistent

    Dev Environment with GitHub Codespaces  Focused Learning (in-context) with GitHub Copilot  AI-assisted intuition using Microsoft LIDA Simplifying Data Analysis With GitHub Codespaces, Jupyter Notebooks & Open AI https://aka.ms/pydata-workshop-2023