Community Data Science Workshops (Core)/Day 2 Lecture: Difference between revisions

From CommunityData
No edit summary
No edit summary
Line 9: Line 9:
* Today we'll learn how to find/create data sets
* Today we'll learn how to find/create data sets
* Next week we'll get into data science (asking and answering questions)
* Next week we'll get into data science (asking and answering questions)


;Outline:  
;Outline:  
Line 20: Line 19:
* Introduction to structured data (JSON)
* Introduction to structured data (JSON)
* How do we use APIs in general?
* How do we use APIs in general?


;What is a (web) API?
;What is a (web) API?
Line 26: Line 24:
* API: a structured way for programs to talk to each other (aka an interface for programs)
* API: a structured way for programs to talk to each other (aka an interface for programs)
* Web APIs: like a website your programs can visit (you:a website::your program:a web API)
* Web APIs: like a website your programs can visit (you:a website::your program:a web API)


; How do we use an API to fetch datasets?
; How do we use an API to fetch datasets?
Line 41: Line 38:
* How do you understand (i.e. parse) the data?  
* How do you understand (i.e. parse) the data?  
** The requests module can do that using the <code>.json()</code> function!
** The requests module can do that using the <code>.json()</code> function!


; How do we write Python programs that make web requests?
; How do we write Python programs that make web requests?
Line 51: Line 47:
* the ability to save to files  
* the ability to save to files  
* the ability to understand (i.e., parse) JSON data that APIs usually give us
* the ability to understand (i.e., parse) JSON data that APIs usually give us


; Session 1 review
; Session 1 review
Line 64: Line 59:
** importing modules, so you can use code other people have written for you!
** importing modules, so you can use code other people have written for you!


; New programming concepts:
* interpolate variables into a string using <code>.format</code>
* using <code>input()</code>


; New programming concepts:


* interpolate variables into a string using format
* [http://docs.python-requests.org/en/latest/ requests]
* [http://docs.python-requests.org/en/latest/ requests]
* open files and write to them
* open files and write to them
* parsing a string (turning the string into a data structure we can manipulate) using the json module
* parsing a string (turning the string into a data structure we can manipulate) using the json module


; How do we use an API to fetch pictures of kittens?
; How do we use an API to fetch pictures of kittens?
Line 81: Line 77:
** kittens of different sizes
** kittens of different sizes
** kittens in greyscale or color
** kittens in greyscale or color
* Now we write a small program to grab an arbitrary square from placekitten by asking for the size on standard in ([http://mako.cc/teaching/2016/cdsw-spring/placekitten_input.py placekitten_input.py])
* Now we write a small program to grab an arbitrary square from placekitten by asking for the size on standard in ([http://mako.cc/teaching/2016/cdsw-spring/placekitten.py placekitten.py])
 


; Introduction to structured data (JSON, JavaScriptObjectNotation)
; Introduction to structured data (JSON, JavaScriptObjectNotation)
Line 93: Line 88:
* Example file at http://mako.cc/cdsw.json
* Example file at http://mako.cc/cdsw.json
* download it and parse it (e.g., with a program like [http://mako.cc/teaching/2015/cdsw-spring/parse_cdswjson.py parse_cdswjson.py])
* download it and parse it (e.g., with a program like [http://mako.cc/teaching/2015/cdsw-spring/parse_cdswjson.py parse_cdswjson.py])


; Using other APIs
; Using other APIs

Revision as of 04:27, 18 April 2016

In which you learn how to use Python and web APIs to meet the likes of this guys!

Welcome to the Saturday lecture section of the Community Data Science Workshop Session 2! For about 140 minutes, we'll work through an introduction to web APIs using Python via both a lecture and hand-on exercises.

Lecture Outline

Introduction and context
  • You can write some tools in Python now. Congratulations!
  • Today we'll learn how to find/create data sets
  • Next week we'll get into data science (asking and answering questions)
Outline
  • What did we learn in Session 1?
  • What is an API?
  • How do we use one to fetch interesting datasets?
  • How do we write programs that use the internet?
  • How can we use the placekitten API to fetch kitten pictures?
  • Introduction to structured data (JSON)
  • How do we use APIs in general?
What is a (web) API?
  • API: a structured way for programs to talk to each other (aka an interface for programs)
  • Web APIs: like a website your programs can visit (you:a website::your program:a web API)
How do we use an API to fetch datasets?

Basic idea: your program sends a request, the API sends data back

  • Where do you direct your request? The site's API endpoint.
  • How do I write my request? Put together a URL; it will be different for different web APIs.
    • Check the documentation, look for code samples
  • How do you send a request?
    • Python has modules you can use, like requests (they make HTTP requests)
  • What do you get back?
    • Structured data (usually in the JSON format)
  • How do you understand (i.e. parse) the data?
    • The requests module can do that using the .json() function!
How do we write Python programs that make web requests?

To use APIs to build a dataset we will need:

  • all our tools from last session: variables, etc
  • the ability to open urls on the web
  • the ability to create custom URLS
  • the ability to save to files
  • the ability to understand (i.e., parse) JSON data that APIs usually give us
Session 1 review
  • Navigating in the terminal and using it to run programs
  • Writing Python:
    • using variables to manipulate data
    • types of data: strings, integers, lists, dictionaries
    • if statements
    • for loops
    • printing
    • importing modules, so you can use code other people have written for you!
New programming concepts
  • interpolate variables into a string using .format
  • using input()


  • requests
  • open files and write to them
  • parsing a string (turning the string into a data structure we can manipulate) using the json module
How do we use an API to fetch pictures of kittens?

placekitten.com

  • API that takes specially crafted URLs and gives appropriately sized picture of kittens
  • Exploring placekitten in a browser:
    • visit the API documentation
    • kittens of different sizes
    • kittens in greyscale or color
  • Now we write a small program to grab an arbitrary square from placekitten by asking for the size on standard in (placekitten.py)
Introduction to structured data (JSON, JavaScriptObjectNotation)
  • what is json: useful for more structured data
  • import json; json.loads(), or, even easier, just do it directly with requests using the .json() function!
  • like Python (except no single quotes)
  • simple lists, dictionaries
  • can reflect more complicated data structures
  • Example file at http://mako.cc/cdsw.json
  • download it and parse it (e.g., with a program like parse_cdswjson.py)
Using other APIs
  • every API is different, so read the documentation!
  • If the documentation isn't helpful, search online
  • for popular APIs, there are python modules that help you make requests and parse json

Possible issues:

  • rate limiting
  • authentication
  • text encoding issues

Lecture Slides (From Fall 2014)

We don't use these slides anymore but they might be very useful if you're following along at home or interested in refreshing your memory since they cover a lot of the same material.