Skip to content

Instantly share code, notes, and snippets.

@ka-pr
Created November 14, 2019 13:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ka-pr/269eea4485b37eb2cb571c61ed111ebb to your computer and use it in GitHub Desktop.
Save ka-pr/269eea4485b37eb2cb571c61ed111ebb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Render our plots inline\n",
"%matplotlib inline\n",
"\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# pd.set_option('display.mpl_style', 'default') # Make the graphs a bit prettier\n",
"# plt.rcParams['figure.figsize'] = (15, 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Reading data from a csv file"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can read data from a CSV file using the `read_csv` function. By default, it assumes that the fields are comma-separated.\n",
"\n",
"We're going to be looking some cyclist data from Montréal. Here's the [original page](http://donnees.ville.montreal.qc.ca/dataset/velos-comptage) (in French), but it's already included in this repository. We're using the data from 2012.\n",
"\n",
"This dataset is a list of how many people were on 7 different bike paths in Montreal, each day."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"ename": "UnicodeDecodeError",
"evalue": "'utf-8' codec can't decode byte 0xe9 in position 15: invalid continuation byte",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mUnicodeDecodeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-2-cd17e845b50e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mbroken_df\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'data/bikes.csv'\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/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36mparser_f\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)\u001b[0m\n\u001b[1;32m 683\u001b[0m )\n\u001b[1;32m 684\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 685\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\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 686\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 687\u001b[0m \u001b[0mparser_f\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 455\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 457\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp_or_buf\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[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 459\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 893\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"has_index_names\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 894\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 895\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\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 896\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 897\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\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[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, engine)\u001b[0m\n\u001b[1;32m 1133\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"c\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1134\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"c\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1135\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mCParserWrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moptions\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 1136\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1137\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"python\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pandas/io/parsers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, src, **kwds)\u001b[0m\n\u001b[1;32m 1904\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"usecols\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0musecols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1905\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1906\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparsers\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTextReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msrc\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[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1907\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munnamed_cols\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1908\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader.__cinit__\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/parsers.pyx\u001b[0m in \u001b[0;36mpandas._libs.parsers.TextReader._get_header\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mUnicodeDecodeError\u001b[0m: 'utf-8' codec can't decode byte 0xe9 in position 15: invalid continuation byte"
]
}
],
"source": [
"broken_df = pd.read_csv('data/bikes.csv')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Look at the first 3 rows\n",
"broken_df[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You'll notice that this is totally broken! `read_csv` has a bunch of options that will let us fix that, though. Here we'll\n",
"\n",
"* change the column separator to a `;`\n",
"* Set the encoding to `'latin1'` (the default is `'utf8'`)\n",
"* Parse the dates in the 'Date' column\n",
"* Tell it that our dates have the day first instead of the month first\n",
"* Set the index to be the 'Date' column"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Berri 1</th>\n",
" <th>Brébeuf (données non disponibles)</th>\n",
" <th>Côte-Sainte-Catherine</th>\n",
" <th>Maisonneuve 1</th>\n",
" <th>Maisonneuve 2</th>\n",
" <th>du Parc</th>\n",
" <th>Pierre-Dupuy</th>\n",
" <th>Rachel1</th>\n",
" <th>St-Urbain (données non disponibles)</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012-01-01</th>\n",
" <td>35</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>38</td>\n",
" <td>51</td>\n",
" <td>26</td>\n",
" <td>10</td>\n",
" <td>16</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-02</th>\n",
" <td>83</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>68</td>\n",
" <td>153</td>\n",
" <td>53</td>\n",
" <td>6</td>\n",
" <td>43</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-03</th>\n",
" <td>135</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>104</td>\n",
" <td>248</td>\n",
" <td>89</td>\n",
" <td>3</td>\n",
" <td>58</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Berri 1 Brébeuf (données non disponibles) Côte-Sainte-Catherine \\\n",
"Date \n",
"2012-01-01 35 NaN 0 \n",
"2012-01-02 83 NaN 1 \n",
"2012-01-03 135 NaN 2 \n",
"\n",
" Maisonneuve 1 Maisonneuve 2 du Parc Pierre-Dupuy Rachel1 \\\n",
"Date \n",
"2012-01-01 38 51 26 10 16 \n",
"2012-01-02 68 153 53 6 43 \n",
"2012-01-03 104 248 89 3 58 \n",
"\n",
" St-Urbain (données non disponibles) \n",
"Date \n",
"2012-01-01 NaN \n",
"2012-01-02 NaN \n",
"2012-01-03 NaN "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixed_df = pd.read_csv('data/bikes.csv', sep=';', encoding='latin1', parse_dates=['Date'], dayfirst=True, index_col='Date')\n",
"fixed_df[:3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Selecting a column"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When you read a CSV, you get a kind of object called a `DataFrame`, which is made up of rows and columns. You get columns out of a DataFrame the same way you get elements out of a dictionary.\n",
"\n",
"Here's an example:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Date\n",
"2012-01-01 35\n",
"2012-01-02 83\n",
"2012-01-03 135\n",
"2012-01-04 144\n",
"2012-01-05 197\n",
" ... \n",
"2012-11-01 2405\n",
"2012-11-02 1582\n",
"2012-11-03 844\n",
"2012-11-04 966\n",
"2012-11-05 2247\n",
"Name: Berri 1, Length: 310, dtype: int64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixed_df['Berri 1']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also look at some basic statistics of each column."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Berri 1</th>\n",
" <th>Brébeuf (données non disponibles)</th>\n",
" <th>Côte-Sainte-Catherine</th>\n",
" <th>Maisonneuve 1</th>\n",
" <th>Maisonneuve 2</th>\n",
" <th>du Parc</th>\n",
" <th>Pierre-Dupuy</th>\n",
" <th>Rachel1</th>\n",
" <th>St-Urbain (données non disponibles)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>310.000000</td>\n",
" <td>0.0</td>\n",
" <td>310.000000</td>\n",
" <td>310.000000</td>\n",
" <td>310.000000</td>\n",
" <td>310.000000</td>\n",
" <td>310.000000</td>\n",
" <td>310.000000</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>2985.048387</td>\n",
" <td>NaN</td>\n",
" <td>1233.351613</td>\n",
" <td>1983.325806</td>\n",
" <td>3510.261290</td>\n",
" <td>1862.983871</td>\n",
" <td>1054.306452</td>\n",
" <td>2873.483871</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2169.271062</td>\n",
" <td>NaN</td>\n",
" <td>944.643188</td>\n",
" <td>1450.715170</td>\n",
" <td>2484.959789</td>\n",
" <td>1332.543266</td>\n",
" <td>1064.029205</td>\n",
" <td>2039.315504</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>32.000000</td>\n",
" <td>NaN</td>\n",
" <td>0.000000</td>\n",
" <td>33.000000</td>\n",
" <td>47.000000</td>\n",
" <td>18.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>596.000000</td>\n",
" <td>NaN</td>\n",
" <td>243.250000</td>\n",
" <td>427.000000</td>\n",
" <td>831.000000</td>\n",
" <td>474.750000</td>\n",
" <td>53.250000</td>\n",
" <td>731.000000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>3128.000000</td>\n",
" <td>NaN</td>\n",
" <td>1269.000000</td>\n",
" <td>2019.500000</td>\n",
" <td>3688.500000</td>\n",
" <td>1822.500000</td>\n",
" <td>704.000000</td>\n",
" <td>3223.500000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>4973.250000</td>\n",
" <td>NaN</td>\n",
" <td>2003.000000</td>\n",
" <td>3168.250000</td>\n",
" <td>5731.750000</td>\n",
" <td>3069.000000</td>\n",
" <td>1818.500000</td>\n",
" <td>4717.250000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>7077.000000</td>\n",
" <td>NaN</td>\n",
" <td>3124.000000</td>\n",
" <td>4999.000000</td>\n",
" <td>8222.000000</td>\n",
" <td>4510.000000</td>\n",
" <td>4386.000000</td>\n",
" <td>6595.000000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Berri 1 Brébeuf (données non disponibles) Côte-Sainte-Catherine \\\n",
"count 310.000000 0.0 310.000000 \n",
"mean 2985.048387 NaN 1233.351613 \n",
"std 2169.271062 NaN 944.643188 \n",
"min 32.000000 NaN 0.000000 \n",
"25% 596.000000 NaN 243.250000 \n",
"50% 3128.000000 NaN 1269.000000 \n",
"75% 4973.250000 NaN 2003.000000 \n",
"max 7077.000000 NaN 3124.000000 \n",
"\n",
" Maisonneuve 1 Maisonneuve 2 du Parc Pierre-Dupuy Rachel1 \\\n",
"count 310.000000 310.000000 310.000000 310.000000 310.000000 \n",
"mean 1983.325806 3510.261290 1862.983871 1054.306452 2873.483871 \n",
"std 1450.715170 2484.959789 1332.543266 1064.029205 2039.315504 \n",
"min 33.000000 47.000000 18.000000 0.000000 0.000000 \n",
"25% 427.000000 831.000000 474.750000 53.250000 731.000000 \n",
"50% 2019.500000 3688.500000 1822.500000 704.000000 3223.500000 \n",
"75% 3168.250000 5731.750000 3069.000000 1818.500000 4717.250000 \n",
"max 4999.000000 8222.000000 4510.000000 4386.000000 6595.000000 \n",
"\n",
" St-Urbain (données non disponibles) \n",
"count 0.0 \n",
"mean NaN \n",
"std NaN \n",
"min NaN \n",
"25% NaN \n",
"50% NaN \n",
"75% NaN \n",
"max NaN "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fixed_df.describe()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.count()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.std()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.min()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.max()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plotting a column"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Just add `.plot()` to the end! How could it be easier? =)\n",
"\n",
"We can see that, unsurprisingly, not many people are biking in January, February, and March, "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df['Berri 1'].plot()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df['Berri 1'].plot(figsize=(10,4))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also plot all the columns just as easily. We'll make it a little bigger, too.\n",
"You can see that it's more squished together, but all the bike paths behave basically the same -- if it's a bad day for cyclists, it's a bad day everywhere."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.plot(figsize=(15, 5))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.rolling(window=15).mean().plot(figsize=(15,5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What if we want to know the cumulative number of people who have biked the path instead of just the daily number?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"cumulative_df = fixed_df.apply(np.cumsum).copy()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"cumulative_df.plot(figsize=(15,5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What if we wanted to know the distribution of visits?"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f2d95e58208>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92f1d0b8>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92eca320>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92ef17f0>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92e98cf8>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92ec82b0>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92e6e828>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92e15dd8>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x7f2d92e15e10>]],\n",
" dtype=object)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 936x936 with 9 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fixed_df.hist(figsize=(13,13))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see here that most trails get very few visitors most days."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fixed_df.columns"
]
}
],
"metadata": {
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment