{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Introduction to Pandas\n", "\n", "- It is a python [3rd party library](https://pandas.pydata.org)\n", "- Used for data analysis and visualization\n", "- Part of Anaconda python distribution\n", "- Best used with Jupyter notebook, can be used with regular python programs\n", "- Main feature is the Data Frame" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Load the pandas library to let python know you will use it\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# What is a Data Frame?\n", "- Its a data structure, like lists and dictionaries\n", "- Consists of rows and columns, similar to SQL tables and excel spreadsheets\n", " - Columns are attributes or variables\n", " - Rows are records or single observations\n", "- Operations are typically performed on columns\n", "- Has both numeric and named indexing" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Loading data into a data frame\n", "\n", "- Data is usually loaded from an external source, like a csv or excel file.\n", "- Download the weather data set from [vega-dataset](https://raw.githubusercontent.com/vega/vega-datasets/gh-pages/data/weather.csv) (**right click and save as**)\n", "- Place it in the same directory as the jupyter notbook you are working on" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationdateprecipitationtemp_maxtemp_minwindweather
0Seattle2012-01-01 00:000.012.85.04.7drizzle
1Seattle2012-01-02 00:0010.910.62.84.5rain
2Seattle2012-01-03 00:000.811.77.22.3rain
3Seattle2012-01-04 00:0020.312.25.64.7rain
4Seattle2012-01-05 00:001.38.92.86.1rain
5Seattle2012-01-06 00:002.54.42.22.2rain
6Seattle2012-01-07 00:000.07.22.82.3rain
7Seattle2012-01-08 00:000.010.02.82.0sun
8Seattle2012-01-09 00:004.39.45.03.4rain
9Seattle2012-01-10 00:001.06.10.63.4rain
10Seattle2012-01-11 00:000.06.1-1.15.1sun
11Seattle2012-01-12 00:000.06.1-1.71.9sun
12Seattle2012-01-13 00:000.05.0-2.81.3sun
13Seattle2012-01-14 00:004.14.40.65.3snow
14Seattle2012-01-15 00:005.31.1-3.33.2snow
15Seattle2012-01-16 00:002.51.7-2.85.0snow
16Seattle2012-01-17 00:008.13.30.05.6snow
17Seattle2012-01-18 00:0019.80.0-2.85.0snow
18Seattle2012-01-19 00:0015.2-1.1-2.81.6snow
19Seattle2012-01-20 00:0013.57.2-1.12.3snow
20Seattle2012-01-21 00:003.08.33.38.2rain
21Seattle2012-01-22 00:006.16.72.24.8rain
22Seattle2012-01-23 00:000.08.31.13.6rain
23Seattle2012-01-24 00:008.610.02.25.1rain
24Seattle2012-01-25 00:008.18.94.45.4rain
25Seattle2012-01-26 00:004.88.91.14.8rain
26Seattle2012-01-27 00:000.06.7-2.21.4drizzle
27Seattle2012-01-28 00:000.06.70.62.2rain
28Seattle2012-01-29 00:0027.79.43.94.5rain
29Seattle2012-01-30 00:003.68.36.15.1rain
........................
2892New York2015-12-02 00:003.013.98.32.0fog
2893New York2015-12-03 00:000.013.37.27.2sun
2894New York2015-12-04 00:000.011.75.04.7sun
2895New York2015-12-05 00:000.011.71.72.4sun
2896New York2015-12-06 00:000.010.63.32.9sun
2897New York2015-12-07 00:000.012.84.43.4drizzle
2898New York2015-12-08 00:000.010.64.43.5sun
2899New York2015-12-09 00:000.012.81.13.4sun
2900New York2015-12-10 00:000.015.08.93.0drizzle
2901New York2015-12-11 00:000.014.47.82.7drizzle
2902New York2015-12-12 00:000.017.89.41.9fog
2903New York2015-12-13 00:000.021.111.73.1drizzle
2904New York2015-12-14 00:009.116.111.74.8fog
2905New York2015-12-15 00:002.317.811.78.2fog
2906New York2015-12-16 00:001.311.77.24.1fog
2907New York2015-12-17 00:0029.715.010.04.1fog
2908New York2015-12-18 00:000.314.43.96.1sun
2909New York2015-12-19 00:000.05.02.29.0sun
2910New York2015-12-20 00:000.06.71.75.1sun
2911New York2015-12-21 00:000.012.83.35.3sun
2912New York2015-12-22 00:004.815.611.13.8fog
2913New York2015-12-23 00:0029.517.28.94.5fog
2914New York2015-12-24 00:000.520.613.94.9fog
2915New York2015-12-25 00:002.517.811.10.9fog
2916New York2015-12-26 00:000.315.69.44.8drizzle
2917New York2015-12-27 00:002.017.28.95.5fog
2918New York2015-12-28 00:001.38.91.76.3snow
2919New York2015-12-29 00:0016.89.41.15.3fog
2920New York2015-12-30 00:009.410.65.03.0fog
2921New York2015-12-31 00:001.511.16.15.5fog
\n", "

2922 rows × 7 columns

\n", "
" ], "text/plain": [ " location date precipitation temp_max temp_min wind \\\n", "0 Seattle 2012-01-01 00:00 0.0 12.8 5.0 4.7 \n", "1 Seattle 2012-01-02 00:00 10.9 10.6 2.8 4.5 \n", "2 Seattle 2012-01-03 00:00 0.8 11.7 7.2 2.3 \n", "3 Seattle 2012-01-04 00:00 20.3 12.2 5.6 4.7 \n", "4 Seattle 2012-01-05 00:00 1.3 8.9 2.8 6.1 \n", "5 Seattle 2012-01-06 00:00 2.5 4.4 2.2 2.2 \n", "6 Seattle 2012-01-07 00:00 0.0 7.2 2.8 2.3 \n", "7 Seattle 2012-01-08 00:00 0.0 10.0 2.8 2.0 \n", "8 Seattle 2012-01-09 00:00 4.3 9.4 5.0 3.4 \n", "9 Seattle 2012-01-10 00:00 1.0 6.1 0.6 3.4 \n", "10 Seattle 2012-01-11 00:00 0.0 6.1 -1.1 5.1 \n", "11 Seattle 2012-01-12 00:00 0.0 6.1 -1.7 1.9 \n", "12 Seattle 2012-01-13 00:00 0.0 5.0 -2.8 1.3 \n", "13 Seattle 2012-01-14 00:00 4.1 4.4 0.6 5.3 \n", "14 Seattle 2012-01-15 00:00 5.3 1.1 -3.3 3.2 \n", "15 Seattle 2012-01-16 00:00 2.5 1.7 -2.8 5.0 \n", "16 Seattle 2012-01-17 00:00 8.1 3.3 0.0 5.6 \n", "17 Seattle 2012-01-18 00:00 19.8 0.0 -2.8 5.0 \n", "18 Seattle 2012-01-19 00:00 15.2 -1.1 -2.8 1.6 \n", "19 Seattle 2012-01-20 00:00 13.5 7.2 -1.1 2.3 \n", "20 Seattle 2012-01-21 00:00 3.0 8.3 3.3 8.2 \n", "21 Seattle 2012-01-22 00:00 6.1 6.7 2.2 4.8 \n", "22 Seattle 2012-01-23 00:00 0.0 8.3 1.1 3.6 \n", "23 Seattle 2012-01-24 00:00 8.6 10.0 2.2 5.1 \n", "24 Seattle 2012-01-25 00:00 8.1 8.9 4.4 5.4 \n", "25 Seattle 2012-01-26 00:00 4.8 8.9 1.1 4.8 \n", "26 Seattle 2012-01-27 00:00 0.0 6.7 -2.2 1.4 \n", "27 Seattle 2012-01-28 00:00 0.0 6.7 0.6 2.2 \n", "28 Seattle 2012-01-29 00:00 27.7 9.4 3.9 4.5 \n", "29 Seattle 2012-01-30 00:00 3.6 8.3 6.1 5.1 \n", "... ... ... ... ... ... ... \n", "2892 New York 2015-12-02 00:00 3.0 13.9 8.3 2.0 \n", "2893 New York 2015-12-03 00:00 0.0 13.3 7.2 7.2 \n", "2894 New York 2015-12-04 00:00 0.0 11.7 5.0 4.7 \n", "2895 New York 2015-12-05 00:00 0.0 11.7 1.7 2.4 \n", "2896 New York 2015-12-06 00:00 0.0 10.6 3.3 2.9 \n", "2897 New York 2015-12-07 00:00 0.0 12.8 4.4 3.4 \n", "2898 New York 2015-12-08 00:00 0.0 10.6 4.4 3.5 \n", "2899 New York 2015-12-09 00:00 0.0 12.8 1.1 3.4 \n", "2900 New York 2015-12-10 00:00 0.0 15.0 8.9 3.0 \n", "2901 New York 2015-12-11 00:00 0.0 14.4 7.8 2.7 \n", "2902 New York 2015-12-12 00:00 0.0 17.8 9.4 1.9 \n", "2903 New York 2015-12-13 00:00 0.0 21.1 11.7 3.1 \n", "2904 New York 2015-12-14 00:00 9.1 16.1 11.7 4.8 \n", "2905 New York 2015-12-15 00:00 2.3 17.8 11.7 8.2 \n", "2906 New York 2015-12-16 00:00 1.3 11.7 7.2 4.1 \n", "2907 New York 2015-12-17 00:00 29.7 15.0 10.0 4.1 \n", "2908 New York 2015-12-18 00:00 0.3 14.4 3.9 6.1 \n", "2909 New York 2015-12-19 00:00 0.0 5.0 2.2 9.0 \n", "2910 New York 2015-12-20 00:00 0.0 6.7 1.7 5.1 \n", "2911 New York 2015-12-21 00:00 0.0 12.8 3.3 5.3 \n", "2912 New York 2015-12-22 00:00 4.8 15.6 11.1 3.8 \n", "2913 New York 2015-12-23 00:00 29.5 17.2 8.9 4.5 \n", "2914 New York 2015-12-24 00:00 0.5 20.6 13.9 4.9 \n", "2915 New York 2015-12-25 00:00 2.5 17.8 11.1 0.9 \n", "2916 New York 2015-12-26 00:00 0.3 15.6 9.4 4.8 \n", "2917 New York 2015-12-27 00:00 2.0 17.2 8.9 5.5 \n", "2918 New York 2015-12-28 00:00 1.3 8.9 1.7 6.3 \n", "2919 New York 2015-12-29 00:00 16.8 9.4 1.1 5.3 \n", "2920 New York 2015-12-30 00:00 9.4 10.6 5.0 3.0 \n", "2921 New York 2015-12-31 00:00 1.5 11.1 6.1 5.5 \n", "\n", " weather \n", "0 drizzle \n", "1 rain \n", "2 rain \n", "3 rain \n", "4 rain \n", "5 rain \n", "6 rain \n", "7 sun \n", "8 rain \n", "9 rain \n", "10 sun \n", "11 sun \n", "12 sun \n", "13 snow \n", "14 snow \n", "15 snow \n", "16 snow \n", "17 snow \n", "18 snow \n", "19 snow \n", "20 rain \n", "21 rain \n", "22 rain \n", "23 rain \n", "24 rain \n", "25 rain \n", "26 drizzle \n", "27 rain \n", "28 rain \n", "29 rain \n", "... ... \n", "2892 fog \n", "2893 sun \n", "2894 sun \n", "2895 sun \n", "2896 sun \n", "2897 drizzle \n", "2898 sun \n", "2899 sun \n", "2900 drizzle \n", "2901 drizzle \n", "2902 fog \n", "2903 drizzle \n", "2904 fog \n", "2905 fog \n", "2906 fog \n", "2907 fog \n", "2908 sun \n", "2909 sun \n", "2910 sun \n", "2911 sun \n", "2912 fog \n", "2913 fog \n", "2914 fog \n", "2915 fog \n", "2916 drizzle \n", "2917 fog \n", "2918 snow \n", "2919 fog \n", "2920 fog \n", "2921 fog \n", "\n", "[2922 rows x 7 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load the data using pandas library\n", "# do you remember what was pd?\n", "pd.read_csv(\"weather.csv\")\n", "\n", "# Jupter notebook tip:\n", "# type: pd.\n", "# then hit tab, see what happens\n", "# try also: pd.read_ (then hit tab)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Now it is your turn\n", "Download [airport.csv](https://raw.githubusercontent.com/vega/vega-datasets/gh-pages/data/airports.csv) then load it into the notebook\n", "\n", "**Remember:** Right click on the link and select **save target as**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# How to work with the data?\n", "\n", "- You must place it in a variable so you can refer to it\n", "- The current data was displayed and not assigned to a variable, so you cannot use it\n", "- Assign it to a variable named **my_df**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "my_df = pd.read_csv(\"weather.csv\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: Load airports.csv into airports_df" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Let us discover how the data looks like" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationdateprecipitationtemp_maxtemp_minwindweather
0Seattle2012-01-01 00:000.012.85.04.7drizzle
1Seattle2012-01-02 00:0010.910.62.84.5rain
2Seattle2012-01-03 00:000.811.77.22.3rain
3Seattle2012-01-04 00:0020.312.25.64.7rain
4Seattle2012-01-05 00:001.38.92.86.1rain
\n", "
" ], "text/plain": [ " location date precipitation temp_max temp_min wind weather\n", "0 Seattle 2012-01-01 00:00 0.0 12.8 5.0 4.7 drizzle\n", "1 Seattle 2012-01-02 00:00 10.9 10.6 2.8 4.5 rain\n", "2 Seattle 2012-01-03 00:00 0.8 11.7 7.2 2.3 rain\n", "3 Seattle 2012-01-04 00:00 20.3 12.2 5.6 4.7 rain\n", "4 Seattle 2012-01-05 00:00 1.3 8.9 2.8 6.1 rain" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_df.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# You can pass a number in the head() method to show more data\n", "# show 10 items (try it)\n", "\n", "# do the same for airports_df\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['location', 'date', 'precipitation', 'temp_max', 'temp_min', 'wind',\n", " 'weather'],\n", " dtype='object')" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# To know which columns are available use the columns attribute\n", "my_df.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: explore the columns for airports_df" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Data types\n", "\n", "- Each **column** will have its own data type\n", "- Remember, variables will be in columns\n", "- Observations in rows\n", "- Use dtypes attribute of to discover columns and datatypes\n", " - **OOP**: What is the difference between a *function*, a *method*, an *attribute*, and a *variable*?" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "location object\n", "date object\n", "precipitation float64\n", "temp_max float64\n", "temp_min float64\n", "wind float64\n", "weather object\n", "dtype: object" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_df.dtypes" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: Find out the data types for the airports_df column" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0 2012-01-01\n", "1 2012-01-02\n", "2 2012-01-03\n", "3 2012-01-04\n", "4 2012-01-05\n", "5 2012-01-06\n", "6 2012-01-07\n", "7 2012-01-08\n", "8 2012-01-09\n", "9 2012-01-10\n", "10 2012-01-11\n", "11 2012-01-12\n", "12 2012-01-13\n", "13 2012-01-14\n", "14 2012-01-15\n", "15 2012-01-16\n", "16 2012-01-17\n", "17 2012-01-18\n", "18 2012-01-19\n", "19 2012-01-20\n", "20 2012-01-21\n", "21 2012-01-22\n", "22 2012-01-23\n", "23 2012-01-24\n", "24 2012-01-25\n", "25 2012-01-26\n", "26 2012-01-27\n", "27 2012-01-28\n", "28 2012-01-29\n", "29 2012-01-30\n", " ... \n", "2892 2015-12-02\n", "2893 2015-12-03\n", "2894 2015-12-04\n", "2895 2015-12-05\n", "2896 2015-12-06\n", "2897 2015-12-07\n", "2898 2015-12-08\n", "2899 2015-12-09\n", "2900 2015-12-10\n", "2901 2015-12-11\n", "2902 2015-12-12\n", "2903 2015-12-13\n", "2904 2015-12-14\n", "2905 2015-12-15\n", "2906 2015-12-16\n", "2907 2015-12-17\n", "2908 2015-12-18\n", "2909 2015-12-19\n", "2910 2015-12-20\n", "2911 2015-12-21\n", "2912 2015-12-22\n", "2913 2015-12-23\n", "2914 2015-12-24\n", "2915 2015-12-25\n", "2916 2015-12-26\n", "2917 2015-12-27\n", "2918 2015-12-28\n", "2919 2015-12-29\n", "2920 2015-12-30\n", "2921 2015-12-31\n", "Name: date, dtype: datetime64[ns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Pandas uses data types provided by numpy\n", "# load numpy\n", "import numpy as np\n", "\n", "# convert the column to datetime\n", "my_df.date.astype(np.datetime64)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0 2012-01-01\n", "1 2012-01-02\n", "2 2012-01-03\n", "3 2012-01-04\n", "4 2012-01-05\n", "Name: date, dtype: datetime64[ns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# an alternative way to do it is using\n", "pd.to_datetime(my_df.date).head() # do you remember head method?" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0 2012-01-01 00:00\n", "1 2012-01-02 00:00\n", "2 2012-01-03 00:00\n", "3 2012-01-04 00:00\n", "4 2012-01-05 00:00\n", "Name: date, dtype: object" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# now let us examine the date column\n", "my_df.date.head()\n", "\n", "# why is it still of type object?\n", "# How to fix it?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# just like the dataframe, the command creates a copy\n", "# but does not store it\n", "# We need to replace the old date column with the new one\n", "my_df.date = my_df.date.astype(np.datetime64)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "location object\n", "date datetime64[ns]\n", "precipitation float64\n", "temp_max float64\n", "temp_min float64\n", "wind float64\n", "weather object\n", "dtype: object" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check the types\n", "my_df.dtypes" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: examine the airports_df dataframe\n", "# are there any date columns that you can convert?\n", "# Check then umeric columns, what should their data type be?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Why convert an object column into a date column?\n", "- As you will find out later, pandas can do more fancy things if it knows the column is a date\n", "- For example:\n", " - Sort\n", " - Filter based on date range\n", " - Date arethmatic\n", "- Always make sure date/time columns have the correct data type" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Indexing Columns\n", "\n", "- Using square brackets [ ]\n", "- Using dot notation ." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Seattle\n", "1 Seattle\n", "2 Seattle\n", "3 Seattle\n", "4 Seattle\n", "5 Seattle\n", "6 Seattle\n", "7 Seattle\n", "8 Seattle\n", "9 Seattle\n", "10 Seattle\n", "11 Seattle\n", "12 Seattle\n", "13 Seattle\n", "14 Seattle\n", "15 Seattle\n", "16 Seattle\n", "17 Seattle\n", "18 Seattle\n", "19 Seattle\n", "20 Seattle\n", "21 Seattle\n", "22 Seattle\n", "23 Seattle\n", "24 Seattle\n", "25 Seattle\n", "26 Seattle\n", "27 Seattle\n", "28 Seattle\n", "29 Seattle\n", " ... \n", "2892 New York\n", "2893 New York\n", "2894 New York\n", "2895 New York\n", "2896 New York\n", "2897 New York\n", "2898 New York\n", "2899 New York\n", "2900 New York\n", "2901 New York\n", "2902 New York\n", "2903 New York\n", "2904 New York\n", "2905 New York\n", "2906 New York\n", "2907 New York\n", "2908 New York\n", "2909 New York\n", "2910 New York\n", "2911 New York\n", "2912 New York\n", "2913 New York\n", "2914 New York\n", "2915 New York\n", "2916 New York\n", "2917 New York\n", "2918 New York\n", "2919 New York\n", "2920 New York\n", "2921 New York\n", "Name: location, dtype: object" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# a single column is known as a series\n", "my_df['location']" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0 Seattle\n", "1 Seattle\n", "2 Seattle\n", "3 Seattle\n", "4 Seattle\n", "Name: location, dtype: object" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Some methods that work on Dataframes also work on Series\n", "my_df['location'].head()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Seattle\n", "1 Seattle\n", "2 Seattle\n", "3 Seattle\n", "4 Seattle\n", "Name: location, dtype: object" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Dot notation to access series\n", "my_df.location.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: Try to index the columns for airports_df using square brackets and dot notation\n", "# Use head() to get an idea of what the data is\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "count 2922\n", "unique 2\n", "top New York\n", "freq 1461\n", "Name: location, dtype: object" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Descriptive statistics\n", "my_df['location'].describe()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
precipitationtemp_maxtemp_minwind
count2922.0000002922.0000002922.0000002922.000000
mean2.94476416.7691318.6123204.101129
std7.6952868.6445967.5117761.880791
min0.000000-7.700000-16.0000000.400000
25%0.00000010.0000003.3000002.700000
50%0.00000016.1000008.9000003.800000
75%1.80000023.90000013.9000005.100000
max118.90000037.80000026.70000016.200000
\n", "
" ], "text/plain": [ " precipitation temp_max temp_min wind\n", "count 2922.000000 2922.000000 2922.000000 2922.000000\n", "mean 2.944764 16.769131 8.612320 4.101129\n", "std 7.695286 8.644596 7.511776 1.880791\n", "min 0.000000 -7.700000 -16.000000 0.400000\n", "25% 0.000000 10.000000 3.300000 2.700000\n", "50% 0.000000 16.100000 8.900000 3.800000\n", "75% 1.800000 23.900000 13.900000 5.100000\n", "max 118.900000 37.800000 26.700000 16.200000" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# works also on dataframe\n", "my_df.describe()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "count 2922\n", "unique 1461\n", "top 2013-06-05 00:00:00\n", "freq 2\n", "first 2012-01-01 00:00:00\n", "last 2015-12-31 00:00:00\n", "Name: date, dtype: object" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Different data types will have different descriptives\n", "my_df['date'].describe()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 2922.000000\n", "mean 2.944764\n", "std 7.695286\n", "min 0.000000\n", "25% 0.000000\n", "50% 0.000000\n", "75% 1.800000\n", "max 118.900000\n", "Name: precipitation, dtype: float64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_df.precipitation.describe()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: Use describe() on airports_df\n", "\n", "# Which columns are included in describe?\n", "\n", "# Try it on the columns that were excluded:\n", "\n", "# Why were these columns excluded?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# You can also plot a dataframe\n", "Pandas will try to show it in the best way possible" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "my_df.plot()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# You need to tell pandas that you want to display plots in the notebook\n", "%matplotlib inline\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# now try it\n", "my_df.plot()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Don't forget!\n", "Always include in your notebook:\n", "```python\n", "# this is the first cell in your notebook\n", "import pandas as pd\n", "%matplotlib inline # dont forget this\n", "```\n", "\n" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\njJ0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# It's more meaningful to plot Series\n", "my_df['precipitation'].plot()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Remember plots show change from one observation to the next\n", "my_df['wind'].plot()\n", "\n", "# in some cases it might not be useful" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEACAYAAABVtcpZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGVRJREFUeJzt3WGQXNV55vH/Y4SMEwwjuwqpjIDBIWDB2p5QiezEyXo2\nOBicRPBhS4WTTZjFnwxrA9lykMgHxV8CeJM12SSkyjGRZAwhMvEGpYpgRaW5SXkLDI6ZgC0tVsoZ\nEPJqXDYGm9oqrQTvfug7qJnpkc7tme5zuvv5VXWp75nbfZ7p7um373m7W4oIzMxsNL0pdwAzM8vH\nRcDMbIS5CJiZjTAXATOzEeYiYGY2wlwEzMxG2CmLgKR7Jc1Jerpt7DOSDkiakfQ3ks5q+9lWSQfr\nn1/ZNn65pKclfVvS3Sv/q5iZWVMpRwLbgQ8vGNsDXBYRE8BBYCuApEuBzcAG4GrgHkmqL/PnwMci\n4mLgYkkLr9PMzPrslEUgIr4K/HDB2N6IeK3efBxYX5/fBDwYEccjYpZWgdgoaR3w1oh4st7vC8C1\nK5DfzMyWYSV6AjcAj9TnzwUOtf3scD12LvBC2/gL9ZiZmWW0rCIg6feAYxHxVyuUx8zM+mhVtxeU\nNAV8BPjltuHDwHlt2+vrsaXGl7puf6GRmVkXIkKn3uuE1CMB1afWhnQV8ClgU0QcbdtvN3CdpNWS\nLgQuAp6IiCPAy5I21o3i3wYePtmEEVHUadu2bdkzONNw5XImZ1rpTN045ZGApAeASeDtkp4HtgG3\nA6uBf6jf/PN4RNwYEfsl7QL2A8eAGyNi/lX9TcAO4AzgkYh4tKvEmczOzuaOsIgzpSsxlzOlcaY0\n3WY6ZRGIiN/oMLz9JPvfAdzRYfyfgXc3SmdmZj3lTwwnmpqayh1hEWdKV2IuZ0rjTGm6zaQTqzXl\nkBQl5jIzK5kkokeN4ZFXVVXuCIs4U7oSczlTGmdK020mFwEzsxHm5SAzsyHh5SAzM2vERSDRMK0B\n9lKJmaDMXM6UxpnSuCdgZmaNuSdgZjYk3BMwM7NGXAQSDdMaYC+VmAnKzOVMaZwpjXsCZmbWmHsC\nZmZDwj0BMzNrxEUg0TCtAfZSiZmgzFzOlMaZ0rgnYGZmjbknYGY2JNwTMDOzRlwEEg3TGmAvlZgJ\nyszlTGmcKY17AmZm1ph7AmZmQ8I9ATMza8RFINEwrQH2UomZoMxczpTGmdK4J2BmZo25J2BmNiTc\nEzAzs0ZcBBIN0xpgL5WYCcrM5UxpnCmNewJmZtbYKXsCku4Ffg2Yi4j31GNrgL8GLgBmgc0R8XL9\ns63ADcBx4OaI2FOPXw7sAM4AHomIW04yp3sCZmYN9aonsB348IKxLcDeiLgE2AdsrQNcCmwGNgBX\nA/dImg/058DHIuJi4GJJC6+zaOvWjSOpr6d168Zz/9pmNuROWQQi4qvADxcMXwPsrM/vBK6tz28C\nHoyI4xExCxwENkpaB7w1Ip6s9/tC22UGwtzcc0D09dSac2nDtC7ZayXmcqY0zpSm3z2BcyJiDiAi\njgDn1OPnAofa9jtcj50LvNA2/kI9ZmZmGSV9TkDSBcDftfUEXoyIt7X9/AcR8XZJfwI8FhEP1OOf\nBx4BngPuiIgr6/FfBH43IjYtMV9xPYHWqla/M4nSbgczK1c3PYFVXc41J2ltRMzVSz3fq8cPA+e1\n7be+HltqfElTU1OMj48DMDY2xsTEBJOTk8CJw55+b58wvz3Z422Wldfb3vb2cG9XVcWOHTsAXn++\nbCwiTnkCxoFn2rbvAm6rz98G3FmfvxR4ClgNXAj8KyeONh4HNgKidXRw1Unmi9IAAdHn08lvh+np\n6f788g2UmCmizFzOlMaZ0kxPT88/ZyQ9r8+fTnkkIOkBWi9R3y7peWAbcCfwJUk30Frq2Vw/c++X\ntAvYDxwDbox4fT3jJt74FtFHm5csMzNbSf7uoETuCZhZ6fzdQWZm1oiLwACbbxCVpMRMUGYuZ0rj\nTGm6zeQiYGY2wtwTSOSegJmVzj0BMzNrxEVggA3TumSvlZjLmdI4Uxr3BMzMrDH3BBK5J2BmpXNP\nwMzMGnERGGDDtC7ZayXmcqY0zpTGPQEzM2vMPYFEeXoCZwBH+zrj2rUXcOTIbF/nNLOV0U1PwEUg\nUa7GsJvRZpbKjeGRU+UOsEiJa6VQZi5nSuNMadwTMDOzxrwclMjLQWZWOi8HmZlZIy4CA63KHWCR\nEtdKocxczpTGmdK4J2BmZo25J5DIPQEzK517AmZm1oiLwECrcgdYpMS1UigzlzOlcaY07gmYmVlj\n7gkkck/AzErnnoCZmTXiIjDQqtwBFilxrRTKzOVMaZwpjXsCZmbWmHsCidwTMLPSuSdgZmaNLKsI\nSLpV0jclPS3pfkmrJa2RtEfSs5K+Iunstv23Sjoo6YCkK5cff9RVuQMsUuJaKZSZy5nSOFOavvcE\nJL0D+ARweUS8B1gFfBTYAuyNiEuAfcDWev9Lgc3ABuBq4B611ljMzCyTrnsCdRF4DJgAfgx8Gfgf\nwJ8CH4yIOUnrgCoi3iVpCxARcVd9+b8Hfj8ivtbhut0TaM2aZc7SbnszS9PXnkBEfBf4I+B54DDw\nckTsBdZGxFy9zxHgnPoi5wKH2q7icD1mZmaZrOr2gpLGgGuAC4CXgS9J+k0Wv3Tt6mXl1NQU4+Pj\nAIyNjTExMcHk5CRwYu2r39snzG9P9nj7VPPNj63s/Mu5vdpvq9z3V/v2zMwMt9xySzF55rXfZrnz\nlHr/3X333UX8/Zf4eKqqih07drAsEdHVCfiPwF+0bf8W8GfAAVpHAwDrgAP1+S3AbW37Pwq8b4nr\njtIAAdHn06nmnO7JnMsxPT29Mjf4CisxlzOlcaY009PT83+/jZ7Ll9MT2AjcC/wccBTYDjwJnA+8\nGBF3SboNWBMRW+rG8P3A+2gtA/0D8NPRIYB7Aq/PmmXO0m57M0vTTU+g6+WgiHhC0kPAU8Cx+t/P\nAW8Fdkm6AXiO1juCiIj9knYB++v9byzumd7MbMQs63MCEfHpiNgQEe+JiOsj4lhEvBgRH4qISyLi\nyoh4qW3/OyLiovoye5Yff9RVuQMssrh/UoYSczlTGmdK020mf2LYzGyE+buDErknYGal83cHmZlZ\nIy4CA63KHWCREtdKocxczpTGmdK4J2BmZo25J5DIPQEzK517AmZm1oiLwECrcgdYpMS1UigzlzOl\ncaY07gmYmVlj7gkkck/AzErnnoCZmTXiIjDQqtwBFilxrRTKzOVMaZwpjXsCZmbWmHsCidwTMLPS\nuSdgZmaNuAgMtCp3gEVKXCuFMnM5UxpnSuOegJmZNeaeQCL3BMysdO4JmJlZIy4CA63KHWCREtdK\nocxczpTGmdK4J2BmZo25J5DIPQEzK517AmZm1oiLwECrcgdYpMS1UigzlzOlcaY07gmYmVlj7gkk\nck/AzErnnoCZmTXiIjDQqtwBFilxrRTKzOVMaZwpTZaegKSzJX1J0gFJ35L0PklrJO2R9Kykr0g6\nu23/rZIO1vtfuZy5zcxs+ZbVE5C0A/jHiNguaRXwk8DtwA8i4jOSbgPWRMQWSZcC9wM/B6wH9gI/\n3Wnx3z2B12fNMmdpt72ZpelrT0DSWcAvRcR2gIg4HhEvA9cAO+vddgLX1uc3AQ/W+80CB4GN3c5v\nZmbLt5zloAuB70vaLukbkj4n6SeAtRExBxARR4Bz6v3PBQ61Xf5wPWZdq3IHWKTEtVIoM5czpXGm\nNN1mWrWMOVcBlwM3RcTXJX0W2MLi9Yuu1hampqYYHx8HYGxsjImJCSYnJ4ETv2y/t0+Y357s8fap\n5utNnly3by+3Z2ZmisrTrpQ8pW7PzMwUlaekx1NVVezYsYPl6LonIGkt8FhEvLPe/kVaReCngMmI\nmJO0DpiOiA2StgAREXfV+z8KbIuIr3W4bvcEWrNmmbO0297M0vS1J1Av+RySdHE9dAXwLWA3MFWP\nXQ88XJ/fDVwnabWkC4GLgCe6nd/MzJZvuZ8T+CRwv6QZ4L3AHwB3Ab8i6VlaheFOgIjYD+wC9gOP\nADcW93J/4FS5AyyyeOmsDCXmcqY0zpSm20zL6QkQEf9C6y2fC31oif3vAO5YzpxmZrZy/N1BidwT\nMLPS+buDzMysEReBgVblDrBIiWulUGYuZ0rjTGm6zeQiYGY2wtwTSOSegJmVzj0BMzNrxEVgoFW5\nAyxS4loplJnLmdI4Uxr3BMzMrDH3BBK5J2BmpXNPwMzMGnERGGhV7gCLlLhWCmXmcqY0zpTGPQEz\nM2vMPYFE7gmYWencEzAzs0ZcBAZalTvAIiWulUKZuZwpjTOlcU/AzMwac08gkXsCZlY69wTMzKwR\nF4GBVuUOsEiJa6VQZi5nSuNMadwTMDOzxtwTSOSegJmVzj0BMzNrxEVgoFU9uM43I6nvp3Xrxnvw\nu5wwTGu4veRMaYYpk4uALXCU1hJUt6fpri43N/dcX347M3sj9wQSjVJPoP9ztuYt7T43GzTuCZiZ\nWSMuAgOtyh2ggyp3gI6GaQ23l5wpzTBlchEwMxthy+4JSHoT8HXghYjYJGkN8NfABcAssDkiXq73\n3QrcABwHbo6IPUtcp3sCrVlHZM7WvKXd52aDJldP4GZgf9v2FmBvRFwC7AO21uEuBTYDG4CrgXvU\nemY1M7NMllUEJK0HPgJ8vm34GmBnfX4ncG19fhPwYEQcj4hZ4CCwcTnzW5U7QAdV7gAdDdMabi85\nU5phyrTcI4HPAp/ijesHayNiDiAijgDn1OPnAofa9jtcj5mZWSarur2gpF8F5iJiRtLkSXbtaqF3\namqK8fFxAMbGxpiYmGBysjXNfMXr9/YJ89uTPd7u93wrsT25jMvXWz2+/3I9fgZhe3Jysqg886qq\nKiZPSY+nqqrYsWMHwOvPl0113RiW9AfAf6LV5H0L8FbgfwI/C0xGxJykdcB0RGyQtAWIiLirvvyj\nwLaI+FqH63ZjuDXriMzZmre0+9xs0PS1MRwRt0fE+RHxTuA6YF9E/Bbwd8BUvdv1wMP1+d3AdZJW\nS7oQuAh4otv5Dcpcf69yB+homNZwe8mZ0gxTpq6Xg07iTmCXpBuA52i9I4iI2C9pF613Eh0Dbizu\n5b6Z2Yjxdwcl8nJQ7+ct7T43GzT+7iAzM2vERWCgVbkDdFDlDtDRMK3h9pIzpRmmTC4CZmYjzD2B\nRO4J9H7e0u5zs0HjnoCZmTXiIjDQqtwBOqhyB+homNZwe8mZ0gxTJhcBM7MR5p5AIvcEej9vafe5\n2aBxT8DMzBpxERhoVe4AHVS5A3Q0TGu4veRMaYYpk4uAmdkIc08gkXsCvZ+3tPvcbNC4J2BmZo24\nCAy0KneADqrcAToapjXcXnKmNMOUyUXAzGyEuSeQyD2B3s9b2n1uNmjcEzAzs0ZcBAZalTtAB1Xu\nAB0N0xpuLzlTmmHK5CJgZjbCBqonEBHs37+f1157ra951qxZw3nnncdorM+7J2A2qLrpCazqVZhe\n2L17N5s3X88ZZ5zX13mPHv23vs5nZtYvA1UEfvzjH7N69a/xox99sa/znnbam/s6X7oKmMycYaGK\n8jK11ksnJydzx3gDZ0rjTGncEzAzs8YGqifwxS9+kY9//FFeeaX/RwKvvvr/GI31efcEzAaVPydg\nZmaNuAgMtCp3gA6q3AE6Gqb3dfeSM6UZpkwuAmZmI8w9gQTuCfRn3hIfi2aDpK89AUnrJe2T9C1J\nz0j6ZD2+RtIeSc9K+oqks9sus1XSQUkHJF3Z7dxmZrYylrMcdBz4nYi4DPh54CZJ7wK2AHsj4hJg\nH7AVQNKlwGZgA3A1cI9aX81pXatyB+igyh2go2Faw+0lZ0ozTJm6LgIRcSQiZurzrwAHgPXANcDO\neredwLX1+U3AgxFxPCJmgYPAxm7nNzOz5VuRnoCkcVovAf8dcCgi1rT97MWIeJukPwEei4gH6vHP\nA49ExJc7XJ97AoB7AmbWRJbPCUg6E3gIuLk+Ilj4l+y/bDOzQi3ru4MkraJVAO6LiIfr4TlJayNi\nTtI64Hv1+GGg/Zvf1tdjHU1NTTE+Pg7A2NgYExMTbT+t6n8n+7IdsfBbS/s1/6nmmx/rV56U7YXZ\nmly+3qrXNue/m2UltmdmZrjlllt6dv3dbM+PlZKnPUspeQDuvvtuJiYmislT0uOpqip27NjBskRE\n1yfgC8B/XzB2F3Bbff424M76/KXAU8Bq4ELgX6mXozpcb3Ry3333xZln/mZA9PV02mmrA+j7vKee\nczrDnKc6dZup832+Uqanp3t6/d1wpjTOlGZ6enr+7+iUz93tp657ApI+APwT8EzriYMAbgeeAHbR\netX/HLA5Il6qL7MV+BhwjNby0Z4lrjs65XJPYFjnbM3b7WPRzFr6+v8JRMT/Ak5b4scfWuIydwB3\ndDunmZmtLH9txECrcgfooModoKNhel93LzlTmmHK5CJgZjbC/N1BCdwT6IczgKN9nXHt2gs4cmS2\nr3Oa9dLQ/x/DNsyO0u/iMzfnby0x83LQQKtyB+igyh1gCVXuAIsM07pyLzlTGvcEzMysMfcEErgn\nMKzz+rMJNlz8fwybmVkjLgIDrcodoIMqd4AlVLkDLDJM68q95Exp3BMwM7PG3BNI4J7AsM7rnoAN\nF/cEzMysEReBgVblDtBBlTvAEqrcARYZpnXlXnKmNO4JmJlZY+4JJHBPYFjndU/Ahot7AmZm1oiL\nwECrcgfooModYAlV7gCLDNO6ci85Uxr3BMzMrDH3BBK4JzCs87onYMPFPQEzM2vERWCgVbkDdFDl\nDrCEqsPYm5HU19O6deMnEg3RunIvOVOabjP5fxazEeb/zczMPYEE7gkM67zuQ9hwcU/AzMwacREY\naFXuAB1UuQMsocodYJFhWlfuJWdK488JmJlZY+4JJHBPYFjndU/Ahot7AmZm1kjfi4CkqyT9b0nf\nlnRbv+cfLlXuAB1UuQMsocodYJFhWlfuJWdKMxA9AUlvAv4U+DBwGfBRSe/qZ4bhMpM7QAclZoIS\nc83MOFMKZ0rTbaZ+HwlsBA5GxHMRcQx4ELimzxmGyEu5A3RQYiYoJ9eJTynfeuutWT6pfDIvvVTK\n7XSCM6XpNlO/i8C5wKG27RfqMbMRMf8p5QC2tZ3v7Wlu7rm+/HY2eAbqayNOP/10jh+f5qyzfr2v\n877yymt9nS/dbO4AHczmDrCE2dwBOpjt41ytI5AUn/70p1dkxrVrL+DIkdllX8/s7PKvY6UNU6a+\nvkVU0vuB34+Iq+rtLUBExF0L9vN76MzMutD0LaL9LgKnAc8CVwD/B3gC+GhEHOhbCDMze11fl4Mi\n4lVJ/wXYQ6sfca8LgJlZPkV+YtjMzPqjqE8Ml/ZBMknrJe2T9C1Jz0j6ZO5M8yS9SdI3JO3OnWWe\npLMlfUnSgfo2e18BmW6V9E1JT0u6X9LqDBnulTQn6em2sTWS9kh6VtJXJJ1dSK7P1PffjKS/kXRW\n7kxtP/uvkl6T9LYSMkn6RH1bPSPpztyZJL1X0mOSnpL0hKSfTbmuYopAoR8kOw78TkRcBvw8cFMB\nmebdDOzPHWKBPwYeiYgNwHuBrEt9kt4BfAK4PCLeQ2v587oMUbbTely32wLsjYhLgH3A1r6n6pxr\nD3BZREwAB+l/rk6ZkLQe+BUgx3tdF2WSNAn8OvDuiHg38Ie5MwGfAbZFxM/Qev/xf0u5omKKAAV+\nkCwijkTETH3+FVpPatk/11D/QXwE+HzuLPPqV4y/FBHbASLieET8KHMsgNOAn5S0CvgJ4Lv9DhAR\nXwV+uGD4GmBnfX4ncG1fQ9E5V0TsjYj590Q/DqzPnan2WeBT/cwyb4lMHwfujIjj9T7fLyDTa8D8\nEeUYcDjlukoqAkV/kEzSODABfC1vEuDEH0RJDZ0Lge9L2l4vU31O0ltyBoqI7wJ/BDxP6w/ipYjY\nmzNTm3MiYg5aLzaAczLn6eQG4O9zh5C0CTgUEc/kztLmYuDfS3pc0nTq0kuP3Qr8oaTnaR0VJB3F\nlVQEiiXpTOAh4Ob6iCBnll8F5uojFNWnEqwCLgf+LCIuB/4vrSWPbCSN0XrFfQHwDuBMSb+RM9NJ\nlFTQkfR7wLGIeCBzjrcAt9Na3nh9OFOcdquANRHxfuB3gV2Z80Dr6OTmiDifVkH4y5QLlVQEDgPn\nt22vJ/FwppfqZYSHgPsi4uHceYAPAJskfQf4K+A/SPpC5kzQOnI7FBFfr7cfolUUcvoQ8J2IeDEi\nXgW+DPxC5kzz5iStBZC0Dvhe5jyvkzRFa7mxhIL5U8A48C+S/o3W88I/S8p95HSI1uOJiHgSeE3S\n2/NG4vqI+Ns600O0lthPqaQi8CRwkaQL6ndwXAeU8M6XvwT2R8Qf5w4CEBG3R8T5EfFOWrfRvoj4\n7QJyzQGHJF1cD11B/sb188D7JZ2h1ncmXEG+ZvXCo7bdwFR9/nog1wuMN+SSdBWtpcZNEXE0d6aI\n+GZErIuId0bEhbRebPxMRPS7aC68//4W+GWA+jF/ekT8IHOmw5I+WGe6Avh20rVERDEn4Cpanyg+\nCGwpIM8HgFdpfQ/xU8A3gKty52rL90Fgd+4cbXneS6uYz9B6lXR2AZm20Xrif5pWA/b0DBkeoNWQ\nPkqrMP1nYA2wt3687wHGCsl1kNY7cL5Rn+7JnWnBz78DvC13JlrLQfcBzwBfBz5YQKZfqLM8BTxG\nq1ie8rr8YTEzsxFW0nKQmZn1mYuAmdkIcxEwMxthLgJmZiPMRcDMbIS5CJiZjTAXATOzEeYiYGY2\nwv4/E+JS6hz2gm0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# you can try a histogram\n", "my_df['wind'].hist()\n", "\n", "# Which is useful to know distributions" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# How can you find out if percipitation is usually high in the year or low?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Your turn:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "ename": "TypeError", "evalue": "Empty 'DataFrame': no numeric data to plot", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Sometime pandas cannot plot it\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmy_df\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'location'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/Users/koutbo6/anaconda/lib/python3.5/site-packages/pandas/tools/plotting.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, kind, ax, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, label, secondary_y, **kwds)\u001b[0m\n\u001b[1;32m 3564\u001b[0m \u001b[0mcolormap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcolormap\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtable\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtable\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0myerr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3565\u001b[0m \u001b[0mxerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mxerr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msecondary_y\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msecondary_y\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3566\u001b[0;31m **kwds)\n\u001b[0m\u001b[1;32m 3567\u001b[0m \u001b[0m__call__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplot_series\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3568\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/koutbo6/anaconda/lib/python3.5/site-packages/pandas/tools/plotting.py\u001b[0m in \u001b[0;36mplot_series\u001b[0;34m(data, kind, ax, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, label, secondary_y, **kwds)\u001b[0m\n\u001b[1;32m 2643\u001b[0m \u001b[0myerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0myerr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxerr\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mxerr\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2644\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msecondary_y\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msecondary_y\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2645\u001b[0;31m **kwds)\n\u001b[0m\u001b[1;32m 2646\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2647\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/koutbo6/anaconda/lib/python3.5/site-packages/pandas/tools/plotting.py\u001b[0m in \u001b[0;36m_plot\u001b[0;34m(data, x, y, subplots, ax, kind, **kwds)\u001b[0m\n\u001b[1;32m 2439\u001b[0m \u001b[0mplot_obj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mklass\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubplots\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mkind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2440\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2441\u001b[0;31m \u001b[0mplot_obj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgenerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2442\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2443\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/koutbo6/anaconda/lib/python3.5/site-packages/pandas/tools/plotting.py\u001b[0m in \u001b[0;36mgenerate\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgenerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_args_adjust\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compute_plot_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setup_subplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_plot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/Users/koutbo6/anaconda/lib/python3.5/site-packages/pandas/tools/plotting.py\u001b[0m in \u001b[0;36m_compute_plot_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1133\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_empty\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1134\u001b[0m raise TypeError('Empty {0!r}: no numeric data to '\n\u001b[0;32m-> 1135\u001b[0;31m 'plot'.format(numeric_data.__class__.__name__))\n\u001b[0m\u001b[1;32m 1136\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1137\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumeric_data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: Empty 'DataFrame': no numeric data to plot" ] } ], "source": [ "# Sometime pandas cannot plot it\n", "my_df['location'].plot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: try to plot the columns in airport_df using either plot() or hist()\n", "\n", "\n", "# What can you find out about the data?" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "New York 1461\n", "Seattle 1461\n", "Name: location, dtype: int64" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Such variables are usually categorical and you can get frequencies like so\n", "my_df['location'].value_counts()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Your turn: Examine the columns for airports_df\n", "# what would be the best columns to check frequencies for?\n", "# try it:\n", "\n", "\n", "# The best columns are:\n", "\n", "# The reason frequencies is best calculated on them is because:\n", "\n", "# What did you find out about your data?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Are data frames immutable?\n", "- Yes, however, all operations that change values will produce a copy and not change the original\n", "- You have to use assignment to change columns or dataframes\n", "- **So be careful!**" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 }