From e625fb3e376d7fd48ef318b8a8e7c22cc62f51fb Mon Sep 17 00:00:00 2001 From: Sireesh Gururaja Date: Tue, 14 Nov 2017 14:45:19 -0500 Subject: [PATCH 01/92] fixed average per order to use revenue --- .../Chipotle/Exercise_with_Solutions.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 3e441a17d..6867acf1a 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -655,8 +655,10 @@ } ], "source": [ + "chipo['revenue'] = chipo['quantity']* chipo['item_price']\n", "order_grouped = chipo.groupby(by=['order_id']).sum()\n", - "order_grouped.mean()['item_price']\n", + "order_grouped.mean()['revenue']\n", + "\n", "\n", "# Or \n", "\n", From cf50145758862ca84e59f5e3dcd7350849ccbd68 Mon Sep 17 00:00:00 2001 From: Sireesh Gururaja Date: Tue, 14 Nov 2017 14:50:00 -0500 Subject: [PATCH 02/92] fixed cell results --- .../Chipotle/Exercise_with_Solutions.ipynb | 2 +- 01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 6867acf1a..1562d31c5 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -646,7 +646,7 @@ { "data": { "text/plain": [ - "18.811428571428689" + "21.394231" ] }, "execution_count": 4, diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb index f77a7ca47..db18888c3 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb @@ -596,7 +596,7 @@ { "data": { "text/plain": [ - "18.811428571428689" + "21.394231" ] }, "execution_count": 4, From f1cc5d9ecbaa00153e1f0042e7203ac541610c35 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 24 Dec 2017 17:44:55 -0800 Subject: [PATCH 03/92] Fixing link to wind data --- 06_Stats/Wind_Stats/Exercises.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Exercises.ipynb b/06_Stats/Wind_Stats/Exercises.ipynb index bd7d46f0c..acd1ca732 100644 --- a/06_Stats/Wind_Stats/Exercises.ipynb +++ b/06_Stats/Wind_Stats/Exercises.ipynb @@ -84,7 +84,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/Stats/Wind_Stats/wind.data)" + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/Wind_Stats/wind.data)" ] }, { From 8309b825c56c12fda517ce130d86f36cf2fa8ee3 Mon Sep 17 00:00:00 2001 From: shan11812 <11812r@gmail.com> Date: Fri, 9 Feb 2018 14:58:49 +0530 Subject: [PATCH 04/92] comparing with int instead of numpy.int64 --- .../Exercises_with_solutions.ipynb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index f64ac64b5..4789bc26d 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -952,12 +952,9 @@ "outputs": [], "source": [ "def times10(x):\n", - " if type(x) is str:\n", - " return x\n", - " elif type(x) is numpy.int64:\n", + " if type(x) is int:\n", " return 10 * x\n", - " else:\n", - " return" + " return x" ] }, { From 16c59173d0cbfccb249ac82a698a6a3979876f05 Mon Sep 17 00:00:00 2001 From: oleg104 Date: Sun, 18 Feb 2018 14:09:43 +0200 Subject: [PATCH 05/92] Fix link to Alcohol Consumption in readme.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d15360095..a38ce47b5 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Suggestions and collaborations are more than welcome. Please open an issue or ma [Fictional Army](https://github.com/guipsamora/pandas_exercises/tree/master/02_Filtering_%26_Sorting/Fictional%20Army) ### [Grouping](https://github.com/guipsamora/pandas_exercises/tree/master/03_Grouping) -[Alcohol Consumption](https://github.com/guipsamora/pandas_exercises/tree/master/03_Grouping/Alcohol%20Consumption%20) +[Alcohol Consumption](https://github.com/guipsamora/pandas_exercises/tree/master/03_Grouping/Alcohol_Consumption) [Occupation](https://github.com/guipsamora/pandas_exercises/tree/master/03_Grouping/Occupation) [Regiment](https://github.com/guipsamora/pandas_exercises/tree/master/03_Grouping/Regiment) From 37276c11c9bb9ccd7f3e1e3bb557524dec34174f Mon Sep 17 00:00:00 2001 From: Fan Wang Date: Mon, 12 Mar 2018 13:02:13 +0800 Subject: [PATCH 06/92] Edited Euro12 Data --- 02_Filtering_&_Sorting/Euro12/Exercises.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Filtering_&_Sorting/Euro12/Exercises.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises.ipynb index 64d69237b..8dcb5eb0c 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises.ipynb @@ -29,7 +29,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/Euro%202012/Euro%202012%20stats%20TEAM.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/UEFA_European_Championship/Euro%202012/Euro%202012%20stats%20TEAM.csv). " ] }, { From 49d63a4d54505cbcbe90fb319d3d48745fc531a6 Mon Sep 17 00:00:00 2001 From: Fan Wang Date: Mon, 12 Mar 2018 13:03:17 +0800 Subject: [PATCH 07/92] Edited Euro12 Data --- 02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb index 62766f1c9..44002154e 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb @@ -31,7 +31,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/Euro%202012/Euro%202012%20stats%20TEAM.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/UEFA_European_Championship/Euro%202012/Euro%202012%20stats%20TEAM.csv). " ] }, { @@ -569,7 +569,7 @@ } ], "source": [ - "euro12 = pd.read_csv('https://raw.githubusercontent.com/jokecamp/FootballData/master/Euro%202012/Euro%202012%20stats%20TEAM.csv')\n", + "euro12 = pd.read_csv('https://raw.githubusercontent.com/jokecamp/FootballData/master/UEFA_European_Championship/Euro%202012/Euro%202012%20stats%20TEAM.csv', sep=',')\n", "euro12" ] }, From 86477b256632703716649132921ac9b6447e6858 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Tue, 3 Apr 2018 06:48:14 -0300 Subject: [PATCH 08/92] change on step9 Alcohol Consumption --- 04_Apply/Students_Alcohol_Consumption/Exercises.ipynb | 2 +- .../Exercises_with_solutions.ipynb | 3 ++- 04_Apply/Students_Alcohol_Consumption/Solutions.ipynb | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb index f8aa25bcf..a4927fe80 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb @@ -134,7 +134,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker" + "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index 4789bc26d..a7d0b02da 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -776,7 +776,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker" + "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" ] }, { @@ -1189,6 +1189,7 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", diff --git a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb index 5faf2f470..81cd87c6b 100644 --- a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb @@ -759,7 +759,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker" + "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" ] }, { From abd332afa90636c2cb49464681b33dca2d9d820e Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 11:14:51 +0900 Subject: [PATCH 09/92] changed url for clarification --- .../World Food Facts/Exercises_with_solutions.ipynb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb index 38531e483..bc0db667b 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 1. Go to https://www.kaggle.com/openfoodfacts/world-food-facts" + "### Step 1. Go to https://www.kaggle.com/openfoodfacts/world-food-facts/data" ] }, { @@ -23,10 +23,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", From 61f9eec2a4294b602c80d34d8828fbe787dc118a Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 11:22:57 +0900 Subject: [PATCH 10/92] changed directory and filenames - lookes they changed from csv to tsv --- .../World Food Facts/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb index bc0db667b..2e34cfeec 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb @@ -55,7 +55,7 @@ } ], "source": [ - "food = pd.read_csv('/Users/guilhermeoliveira/Desktop/world-food-facts/FoodFacts.csv')" + "food = pd.read_csv('~/Desktop/world-food-facts/en.openfoodfacts.org.products.tsv', sep='\\t')" ] }, { From 22b141fd420a841228c764a2a38fa62e869b5001 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 11:25:33 +0900 Subject: [PATCH 11/92] executed each cell and updated outputs --- .../Exercises_with_solutions.ipynb | 336 +++++++++--------- 1 file changed, 177 insertions(+), 159 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb index 2e34cfeec..2f1f93139 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb @@ -67,15 +67,26 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -91,31 +102,31 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -130,38 +141,38 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -171,21 +182,21 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -195,21 +206,21 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -226,63 +237,63 @@ " \n", " \n", "
generic_namequantity...caffeine_100gtaurine_100gph_100gfruits_vegetables_nuts_100gcollagen_meat_protein_ratio_100gfruits-vegetables-nuts_100gfruits-vegetables-nuts-estimate_100gcollagen-meat-protein-ratio_100gcocoa_100gchlorophyl_100gcarbon_footprint_100gnutrition_score_fr_100gnutrition_score_uk_100gcarbon-footprint_100gnutrition-score-fr_100gnutrition-score-uk_100gglycemic-index_100gwater-hardness_100g
00000000000000128663087http://world-en.openfoodfacts.org/product/0000...date-limite-app14470043642015-11-08T17:39:24Z14470043642015-11-08T17:39:24ZPoêlée à la sarladaiseNaNNaNopenfoodfacts-contributors14741038662016-09-17T09:17:46Z14741038932016-09-17T09:18:13ZFarine de blé noirNaN1kg...NaNNaN
100000000246004530http://world-en.openfoodfacts.org/product/0000...date-limite-app14345307042015-06-17T08:45:04Z14345359142015-06-17T10:11:54ZFilet de bœufNaN2.46 kg...usda-ndb-import14890699572017-03-09T14:32:37Z14890699572017-03-09T14:32:37ZBanana Chips Sweetened (Whole)NaNNaN...NaNNaNNaNNaNNaNNaN14.014.0NaNNaN
200000000362524559http://world-en.openfoodfacts.org/product/0000...tacinte14222217012015-01-25T21:35:01Z14222218552015-01-25T21:37:35ZLion Peanut x2usda-ndb-import14890699572017-03-09T14:32:37Z14890699572017-03-09T14:32:37ZPeanutsNaNNaN...NaNNaNNaNNaNNaN0.00.0NaNNaN
3000000003925916087http://world-en.openfoodfacts.org/product/0000...tacinte14222217732015-01-25T21:36:13Z14222219262015-01-25T21:38:46ZTwix x2usda-ndb-import14890557312017-03-09T10:35:31Z14890557312017-03-09T10:35:31ZOrganic Salted Nut MixNaNNaN...NaNNaNNaNNaNNaN12.012.0NaNNaN
4000000003952916094http://world-en.openfoodfacts.org/product/0000...teolemon14201470512015-01-01T21:17:31Z14391417402015-08-09T17:35:40ZPack de 2 Twixusda-ndb-import14890556532017-03-09T10:34:13Z14890556532017-03-09T10:34:13ZOrganic PolentaNaNNaN...
\n", - "

5 rows × 159 columns

\n", + "

5 rows × 163 columns

\n", "
" ], "text/plain": [ - " code url \\\n", - "0 000000000000012866 http://world-en.openfoodfacts.org/product/0000... \n", - "1 0000000024600 http://world-en.openfoodfacts.org/product/0000... \n", - "2 0000000036252 http://world-en.openfoodfacts.org/product/0000... \n", - "3 0000000039259 http://world-en.openfoodfacts.org/product/0000... \n", - "4 0000000039529 http://world-en.openfoodfacts.org/product/0000... \n", + " code url \\\n", + "0 3087 http://world-en.openfoodfacts.org/product/0000... \n", + "1 4530 http://world-en.openfoodfacts.org/product/0000... \n", + "2 4559 http://world-en.openfoodfacts.org/product/0000... \n", + "3 16087 http://world-en.openfoodfacts.org/product/0000... \n", + "4 16094 http://world-en.openfoodfacts.org/product/0000... \n", "\n", - " creator created_t created_datetime last_modified_t \\\n", - "0 date-limite-app 1447004364 2015-11-08T17:39:24Z 1447004364 \n", - "1 date-limite-app 1434530704 2015-06-17T08:45:04Z 1434535914 \n", - "2 tacinte 1422221701 2015-01-25T21:35:01Z 1422221855 \n", - "3 tacinte 1422221773 2015-01-25T21:36:13Z 1422221926 \n", - "4 teolemon 1420147051 2015-01-01T21:17:31Z 1439141740 \n", + " creator created_t created_datetime \\\n", + "0 openfoodfacts-contributors 1474103866 2016-09-17T09:17:46Z \n", + "1 usda-ndb-import 1489069957 2017-03-09T14:32:37Z \n", + "2 usda-ndb-import 1489069957 2017-03-09T14:32:37Z \n", + "3 usda-ndb-import 1489055731 2017-03-09T10:35:31Z \n", + "4 usda-ndb-import 1489055653 2017-03-09T10:34:13Z \n", "\n", - " last_modified_datetime product_name generic_name quantity \\\n", - "0 2015-11-08T17:39:24Z Poêlée à la sarladaise NaN NaN \n", - "1 2015-06-17T10:11:54Z Filet de bœuf NaN 2.46 kg \n", - "2 2015-01-25T21:37:35Z Lion Peanut x2 NaN NaN \n", - "3 2015-01-25T21:38:46Z Twix x2 NaN NaN \n", - "4 2015-08-09T17:35:40Z Pack de 2 Twix NaN NaN \n", + " last_modified_t last_modified_datetime product_name \\\n", + "0 1474103893 2016-09-17T09:18:13Z Farine de blé noir \n", + "1 1489069957 2017-03-09T14:32:37Z Banana Chips Sweetened (Whole) \n", + "2 1489069957 2017-03-09T14:32:37Z Peanuts \n", + "3 1489055731 2017-03-09T10:35:31Z Organic Salted Nut Mix \n", + "4 1489055653 2017-03-09T10:34:13Z Organic Polenta \n", "\n", - " ... caffeine_100g taurine_100g ph_100g \\\n", - "0 ... NaN NaN NaN \n", - "1 ... NaN NaN NaN \n", - "2 ... NaN NaN NaN \n", - "3 ... NaN NaN NaN \n", - "4 ... NaN NaN NaN \n", + " generic_name quantity ... fruits-vegetables-nuts_100g \\\n", + "0 NaN 1kg ... NaN \n", + "1 NaN NaN ... NaN \n", + "2 NaN NaN ... NaN \n", + "3 NaN NaN ... NaN \n", + "4 NaN NaN ... NaN \n", "\n", - " fruits_vegetables_nuts_100g collagen_meat_protein_ratio_100g cocoa_100g \\\n", - "0 NaN NaN NaN \n", - "1 NaN NaN NaN \n", - "2 NaN NaN NaN \n", - "3 NaN NaN NaN \n", - "4 NaN NaN NaN \n", + " fruits-vegetables-nuts-estimate_100g collagen-meat-protein-ratio_100g \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 NaN NaN \n", "\n", - " chlorophyl_100g carbon_footprint_100g nutrition_score_fr_100g \\\n", - "0 NaN NaN NaN \n", - "1 NaN NaN NaN \n", - "2 NaN NaN NaN \n", - "3 NaN NaN NaN \n", - "4 NaN NaN NaN \n", + " cocoa_100g chlorophyl_100g carbon-footprint_100g nutrition-score-fr_100g \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN 14.0 \n", + "2 NaN NaN NaN 0.0 \n", + "3 NaN NaN NaN 12.0 \n", + "4 NaN NaN NaN NaN \n", "\n", - " nutrition_score_uk_100g \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", + " nutrition-score-uk_100g glycemic-index_100g water-hardness_100g \n", + "0 NaN NaN NaN \n", + "1 14.0 NaN NaN \n", + "2 0.0 NaN NaN \n", + "3 12.0 NaN NaN \n", + "4 NaN NaN NaN \n", "\n", - "[5 rows x 159 columns]" + "[5 rows x 163 columns]" ] }, - "execution_count": 10, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -300,24 +311,41 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "65503" + "(356027, 163)" ] }, - "execution_count": 11, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "food.shape #will give you both (observations/rows, columns)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "356027" + ] + }, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "food.shape #will give you both (observations/rows, columns)\n", "food.shape[0] #will give you only the observations/rows number" ] }, @@ -330,28 +358,26 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(65503, 159)\n", - "159\n", + "(356027, 163)\n", + "163\n", "\n", - "RangeIndex: 65503 entries, 0 to 65502\n", - "Columns: 159 entries, code to nutrition_score_uk_100g\n", - "dtypes: float64(103), object(56)\n", - "memory usage: 79.5+ MB\n" + "RangeIndex: 356027 entries, 0 to 356026\n", + "Columns: 163 entries, code to water-hardness_100g\n", + "dtypes: float64(107), object(56)\n", + "memory usage: 442.8+ MB\n" ] } ], "source": [ - "print food.shape #will give you both (observations/rows, columns)\n", - "print food.shape[1] #will give you only the columns number\n", + "print(food.shape) #will give you both (observations/rows, columns)\n", + "print(food.shape[1]) #will give you only the columns number\n", "\n", "#OR\n", "\n", @@ -367,26 +393,25 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Index([u'code', u'url', u'creator', u'created_t', u'created_datetime',\n", - " u'last_modified_t', u'last_modified_datetime', u'product_name',\n", - " u'generic_name', u'quantity',\n", + "Index(['code', 'url', 'creator', 'created_t', 'created_datetime',\n", + " 'last_modified_t', 'last_modified_datetime', 'product_name',\n", + " 'generic_name', 'quantity',\n", " ...\n", - " u'caffeine_100g', u'taurine_100g', u'ph_100g',\n", - " u'fruits_vegetables_nuts_100g', u'collagen_meat_protein_ratio_100g',\n", - " u'cocoa_100g', u'chlorophyl_100g', u'carbon_footprint_100g',\n", - " u'nutrition_score_fr_100g', u'nutrition_score_uk_100g'],\n", - " dtype='object', length=159)" + " 'fruits-vegetables-nuts_100g', 'fruits-vegetables-nuts-estimate_100g',\n", + " 'collagen-meat-protein-ratio_100g', 'cocoa_100g', 'chlorophyl_100g',\n", + " 'carbon-footprint_100g', 'nutrition-score-fr_100g',\n", + " 'nutrition-score-uk_100g', 'glycemic-index_100g',\n", + " 'water-hardness_100g'],\n", + " dtype='object', length=163)" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -404,18 +429,16 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'glucose_100g'" + "'-glucose_100g'" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -434,9 +457,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -450,7 +471,7 @@ } ], "source": [ - "food.dtypes['glucose_100g']" + "food.dtypes['-glucose_100g']" ] }, { @@ -463,14 +484,12 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "RangeIndex(start=0, stop=65503, step=1)" + "RangeIndex(start=0, stop=356027, step=1)" ] }, "execution_count": 16, @@ -491,18 +510,16 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'Flat Leaf Parsley'" + "'Lotus Organic Brown Jasmine Rice'" ] }, - "execution_count": 18, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -513,24 +530,25 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From ee32dc07d8b88b46824298bc1488b22cf429d641 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 11:48:55 +0900 Subject: [PATCH 12/92] removed seeming-unnecessary-comment --- .../Chipotle/Exercise_with_Solutions.ipynb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 1562d31c5..db47b41fd 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -203,8 +203,7 @@ } ], "source": [ - "chipo.head(10)\n", - "# chipo['choice_description'][4]" + "chipo.head(10)" ] }, { @@ -217,9 +216,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", From b2983d268f9aa60216961df7c3f51742b5dc8561 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 11:54:09 +0900 Subject: [PATCH 13/92] step 10 title changed for clarification --- .../Chipotle/Exercise_with_Solutions.ipynb | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index db47b41fd..59a150369 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -406,20 +406,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. How many items were ordered?" + "### Step 10. For the most-ordered-item, how many items were ordered?" ] }, { "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", From 585d6b96d6d1590544453969b39bff77da4388b3 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 11:57:05 +0900 Subject: [PATCH 14/92] comment changed and cell splitted --- .../Chipotle/Exercise_with_Solutions.ipynb | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 59a150369..078442bd7 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -233,25 +233,31 @@ "dtypes: int64(2), object(3)\n", "memory usage: 180.6+ KB\n" ] - }, + } + ], + "source": [ + "chipo.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ { "data": { "text/plain": [ "4622" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "chipo.info()#\n", - "\n", "# OR\n", - "\n", - "chipo.shape[0]\n", - "# 4622 observations" + "chipo.shape[0] # <= 4622 observations" ] }, { @@ -263,10 +269,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, + "execution_count": 10, + "metadata": {}, "outputs": [ { "data": { @@ -274,7 +278,7 @@ "5" ] }, - "execution_count": 6, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } From 6f4cb59c512404b0d61bbdd83d189209c0f3ccd2 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 12:23:42 +0900 Subject: [PATCH 15/92] splitted cells for clarification --- .../Chipotle/Exercise_with_Solutions.ipynb | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 078442bd7..17e24181b 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -574,16 +574,54 @@ }, { "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": true - }, + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('O')" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chipo.item_price.dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, "outputs": [], "source": [ "dollarizer = lambda x: float(x[1:-1])\n", "chipo.item_price = chipo.item_price.apply(dollarizer)" ] }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('float64')" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chipo.item_price.dtype" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -593,10 +631,8 @@ }, { "cell_type": "code", - "execution_count": 47, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "metadata": {}, "outputs": [ { "name": "stdout", From 591b29b9f0a9b6203f62f33c93b357a7fc48de3a Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 12:24:26 +0900 Subject: [PATCH 16/92] fixed column call, so that correct results will be shown. --- .../Chipotle/Exercise_with_Solutions.ipynb | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 17e24181b..3a6e5a53e 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -686,18 +686,16 @@ }, { "cell_type": "code", - "execution_count": 140, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "21.394231" + "18.81142857142869" ] }, - "execution_count": 4, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -705,12 +703,28 @@ "source": [ "chipo['revenue'] = chipo['quantity']* chipo['item_price']\n", "order_grouped = chipo.groupby(by=['order_id']).sum()\n", - "order_grouped.mean()['revenue']\n", - "\n", - "\n", + "order_grouped.mean()['item_price']" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18.81142857142869" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "# Or \n", - "\n", - "#chipo.groupby(by=['order_id']).sum().mean()['item_price']" + "chipo.groupby(by=['order_id']).sum().mean()['item_price']" ] }, { @@ -722,10 +736,8 @@ }, { "cell_type": "code", - "execution_count": 148, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { @@ -733,7 +745,7 @@ "50" ] }, - "execution_count": 148, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } From 6fbd6d1c3a08b05697c165f5b5ec1e9db13887ae Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 12:27:13 +0900 Subject: [PATCH 17/92] fixed question title --- 01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb | 2 +- 01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb index 854e5997d..7650fa94b 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb @@ -149,7 +149,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. How many items were ordered?" + "### Step 10. For the most-ordered-item, how many items were ordered?" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb index db18888c3..92a430aad 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb @@ -381,7 +381,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. How many items were ordered?" + "### Step 10. For the most-ordered-item, how many items were ordered?" ] }, { From 137f17533249c1ad50c961d62924a994a421042b Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 12:38:50 +0900 Subject: [PATCH 18/92] fixed typo --- 02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb index 44002154e..fbf25d395 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb @@ -1566,7 +1566,7 @@ "# use .iloc to slices via the position of the passed integers\n", "# : means all, 0:7 means from 0 to 7\n", "\n", - "euro.iloc[: , 0:7]" + "euro12.iloc[: , 0:7]" ] }, { From cdb13046b2cdf012bee1b5280769a0f007ba2c27 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 12:39:55 +0900 Subject: [PATCH 19/92] fixed typo --- 02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb index fbf25d395..91cf972eb 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb @@ -2106,7 +2106,7 @@ "source": [ "# use negative to exclude the last 3 columns\n", "\n", - "euro.iloc[: , :-3]" + "euro12.iloc[: , :-3]" ] }, { From 4e3d8a8e0b4e1881a460d78c25c49a616c09302b Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 13:33:20 +0900 Subject: [PATCH 20/92] fixed csv reading --- .../Exercises_with_solutions.ipynb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index a7d0b02da..78c5cdbf9 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -227,13 +227,14 @@ "[5 rows x 33 columns]" ] }, - "execution_count": 25, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df = pd.read_csv('/Users/guilhermeoliveira/Desktop/student/student-mat.csv', sep = ';')\n", + "csv_url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv'\n", + "df = pd.read_csv(csv_url)\n", "df.head()" ] }, From 76f9fe9c5a6f6f9a5643e4850f5eee0f71105434 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 13:37:36 +0900 Subject: [PATCH 21/92] fixed print call from py2 to py3 way --- 05_Merge/Auto_MPG/Exercises_with_solutions.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb index 1aba560e0..ad7a275a8 100644 --- a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb +++ b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb @@ -95,8 +95,8 @@ "cars1 = pd.read_csv(\"https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/05_Merge/Auto_MPG/cars1.csv\")\n", "cars2 = pd.read_csv(\"https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/05_Merge/Auto_MPG/cars2.csv\")\n", "\n", - "print cars1.head()\n", - "print cars2.head()" + "print(cars1.head())\n", + "print(cars2.head())" ] }, { From 2ae3fdb0acd5857eb19f8155ea0a0e293ccc4879 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 13:38:37 +0900 Subject: [PATCH 22/92] fixed print func --- 05_Merge/Auto_MPG/Exercises_with_solutions.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb index ad7a275a8..68f6512d7 100644 --- a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb +++ b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb @@ -247,8 +247,8 @@ } ], "source": [ - "print cars1.shape\n", - "print cars2.shape" + "print(cars1.shape)\n", + "print(cars2.shape)" ] }, { From aa077748503fc4395c77627ccb57196864c2b097 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 13:46:55 +0900 Subject: [PATCH 23/92] fixed print --- 05_Merge/Housing Market/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_Merge/Housing Market/Exercises_with_solutions.ipynb b/05_Merge/Housing Market/Exercises_with_solutions.ipynb index 251e5f305..b5c055037 100644 --- a/05_Merge/Housing Market/Exercises_with_solutions.ipynb +++ b/05_Merge/Housing Market/Exercises_with_solutions.ipynb @@ -243,7 +243,7 @@ "s2 = pd.Series(np.random.randint(1, high=4, size=100, dtype='l'))\n", "s3 = pd.Series(np.random.randint(10000, high=30001, size=100, dtype='l'))\n", "\n", - "print s1, s2, s3" + "print(s1, s2, s3)" ] }, { From d54e5ed8b7de0d1ee89b408f14586c971163791c Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 13:48:16 +0900 Subject: [PATCH 24/92] fixed print func --- 05_Merge/Housing Market/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_Merge/Housing Market/Exercises_with_solutions.ipynb b/05_Merge/Housing Market/Exercises_with_solutions.ipynb index b5c055037..49e8e3a8a 100644 --- a/05_Merge/Housing Market/Exercises_with_solutions.ipynb +++ b/05_Merge/Housing Market/Exercises_with_solutions.ipynb @@ -768,7 +768,7 @@ "\n", "# it is still a Series, so we need to transform it to a DataFrame\n", "bigcolumn = bigcolumn.to_frame()\n", - "print type(bigcolumn)\n", + "print(type(bigcolumn))\n", "\n", "bigcolumn" ] From c02b6152db959799a15ce796432d4e3fff1173c4 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:05:50 +0900 Subject: [PATCH 25/92] fix csv url --- 06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb index 7aa320853..7d409846d 100644 --- a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb +++ b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb @@ -72,7 +72,7 @@ } ], "source": [ - "baby_names = pd.read_csv('https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Stats/US_Baby_Names/US_Baby_Names_right.csv')\n", + "baby_names = pd.read_csv('https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/US_Baby_Names/US_Baby_Names_right.csv')\n", "baby_names.info()" ] }, From b02d17c02e0a3891000dfb96cfb4909c5dcc80f6 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:07:16 +0900 Subject: [PATCH 26/92] fixed value_counts func --- 06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb index 7d409846d..9dbdc36fd 100644 --- a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb +++ b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb @@ -356,7 +356,7 @@ } ], "source": [ - "baby_names['Gender'].value_counts('F')" + "baby_names['Gender'].value_counts()" ] }, { From c5772f41ae2596857a133bca8cd345141bc3bef2 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:08:36 +0900 Subject: [PATCH 27/92] fixed print func --- 06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb index 9dbdc36fd..c715b30a6 100644 --- a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb +++ b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb @@ -446,7 +446,7 @@ "names.head()\n", "\n", "# print the size of the dataset\n", - "print names.shape\n", + "print(names.shape)\n", "\n", "# sort it from the biggest value to the smallest one\n", "names.sort_values(\"Count\", ascending = 0).head()" From f1fab5fb598daeab38c2a9154ccf8e3ffa5ed838 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:09:05 +0900 Subject: [PATCH 28/92] uncomment del func so that it can delete unnecessary columns --- 06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb index c715b30a6..50dcc4ade 100644 --- a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb +++ b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb @@ -437,7 +437,7 @@ ], "source": [ "# you don't want to sum the Year column, so you delete it\n", - "# del baby_names[\"Year\"]\n", + "del baby_names[\"Year\"]\n", "\n", "# group the data\n", "names = baby_names.groupby(\"Name\").sum()\n", From ba9969cf6b3eb87825656839f3d4fe7912c1f89d Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:15:55 +0900 Subject: [PATCH 29/92] fixed data url --- 06_Stats/Wind_Stats/Exercises_with_solutions.ipynb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 4078fca74..16073be61 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -87,7 +87,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/Stats/Wind_Stats/wind.data)" + "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/06_Stats/Wind_Stats/wind.data)" ] }, { @@ -235,7 +235,8 @@ ], "source": [ "# parse_dates gets 0, 1, 2 columns and parses them as the index\n", - "data = pd.read_table(\"wind.data\", sep = \"\\s+\", parse_dates = [[0,1,2]]) \n", + "data_url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/Wind_Stats/wind.data'\n", + "data = pd.read_table(data_url, sep = \"\\s+\", parse_dates = [[0,1,2]]) \n", "data.head()" ] }, From f2eb35396e82a3cb5781063828e45b9526eaea7e Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:20:58 +0900 Subject: [PATCH 30/92] fixed typo --- 06_Stats/Wind_Stats/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 16073be61..42579a122 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -849,7 +849,7 @@ "data['year'] = data['date'].apply(lambda date: date.year)\n", "data['day'] = data['date'].apply(lambda date: date.day)\n", "\n", - "# gets all value from the month 1 and assign to janyary_winds\n", + "# gets all value from the month 1 and assign to january_winds\n", "january_winds = data.query('month == 1')\n", "\n", "# gets the mean from january_winds, using .loc to not print the mean of month, year and day\n", From 097230882987418891074588e770e833b4b6b720 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:28:54 +0900 Subject: [PATCH 31/92] fixed data url --- 06_Stats/Wind_Stats/Exercises_with_solutions.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 42579a122..3c79a4572 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -4210,7 +4210,8 @@ ], "source": [ "# call data again but this time don't use parse_dates\n", - "wind_data = pd.read_table(\"wind.data\", sep = \"\\s+\") \n", + "data_url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/Wind_Stats/wind.data'\n", + "wind_data = pd.read_table(data_url, sep = \"\\s+\") \n", "\n", "# compute the month number for each day in the dataset, there are in total 216 months\n", "wind_data['months_num'] = (wind_data.iloc[:, 0] - 61) * 12 + wind_data.iloc[:, 1]\n", From 2fdf1793e40d67afb0874efb7a997215c0059142 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Thu, 5 Apr 2018 14:50:00 +0900 Subject: [PATCH 32/92] fixed deprecation error --- 06_Stats/Wind_Stats/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 3c79a4572..00e79ee40 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -4605,7 +4605,7 @@ "weekly = data.resample('W').agg(['min','max','mean','std'])\n", "\n", "# slice it for the first 52 weeks and locations\n", - "weekly.ix[1:53, \"RPT\":\"MAL\"].head(10)" + "weekly.loc[weekly.index[1:53], \"RPT\":\"MAL\"] .head(10)" ] } ], From b1038c4bdb12c852be3219a78e5133232f60e831 Mon Sep 17 00:00:00 2001 From: TakaakiFuruse Date: Fri, 6 Apr 2018 10:55:18 +0900 Subject: [PATCH 33/92] split 1 cell into 2 - split to show the result of 'mask' --- .../Wine/Exercises_code_and_solutions.ipynb | 118 ++++++++++++++++-- 1 file changed, 105 insertions(+), 13 deletions(-) diff --git a/10_Deleting/Wine/Exercises_code_and_solutions.ipynb b/10_Deleting/Wine/Exercises_code_and_solutions.ipynb index 188d7c8aa..8b5c913eb 100644 --- a/10_Deleting/Wine/Exercises_code_and_solutions.ipynb +++ b/10_Deleting/Wine/Exercises_code_and_solutions.ipynb @@ -1043,17 +1043,101 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 20, "metadata": { - "collapsed": false + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 False\n", + "1 False\n", + "2 True\n", + "3 False\n", + "4 False\n", + "5 False\n", + "6 False\n", + "7 False\n", + "8 True\n", + "9 True\n", + "10 True\n", + "11 True\n", + "12 True\n", + "13 True\n", + "14 True\n", + "15 True\n", + "16 True\n", + "17 True\n", + "18 True\n", + "19 True\n", + "20 True\n", + "21 True\n", + "22 True\n", + "23 True\n", + "24 True\n", + "25 True\n", + "26 True\n", + "27 True\n", + "28 True\n", + "29 True\n", + " ... \n", + "140 True\n", + "141 True\n", + "142 True\n", + "143 True\n", + "144 True\n", + "145 True\n", + "146 True\n", + "147 True\n", + "148 True\n", + "149 True\n", + "150 True\n", + "151 True\n", + "152 True\n", + "153 True\n", + "154 True\n", + "155 True\n", + "156 True\n", + "157 True\n", + "158 True\n", + "159 True\n", + "160 True\n", + "161 True\n", + "162 True\n", + "163 True\n", + "164 True\n", + "165 True\n", + "166 True\n", + "167 True\n", + "168 True\n", + "169 True\n", + "Name: alcohol, Length: 170, dtype: bool" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mask = wine.alcohol.notnull()\n", + "mask" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "2 10.00\n", - "3 13.24\n", - "5 14.39\n", + "8 13.86\n", + "9 14.10\n", "10 14.12\n", "11 13.75\n", "12 14.75\n", @@ -1112,18 +1196,15 @@ "174 13.27\n", "175 13.17\n", "176 14.13\n", - "Name: alcohol, dtype: float64" + "Name: alcohol, Length: 170, dtype: float64" ] }, - "execution_count": 108, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "mask = wine.alcohol.notnull()\n", - "mask\n", - "\n", "wine.alcohol[mask]" ] }, @@ -1136,15 +1217,26 @@ }, { "cell_type": "code", - "execution_count": 109, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", From 2551fb2f7e67b19ebaf9dceb54c963911e330c7c Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 24 Jun 2018 13:15:22 +0200 Subject: [PATCH 34/92] World Food Facts revised --- .../World Food Facts/Exercises.ipynb | 9 +- .../Exercises_with_solutions.ipynb | 44 ++- .../World Food Facts/Solutions.ipynb | 306 ++++++++++-------- 3 files changed, 207 insertions(+), 152 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises.ipynb index 0246d3784..ea507fa1d 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 1. Go to [Kaggle]( https://www.kaggle.com/openfoodfacts/world-food-facts)" + "### Step 1. Go to https://www.kaggle.com/openfoodfacts/world-food-facts/data" ] }, { @@ -25,7 +25,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Use the csv file and assign it to a dataframe called food" + "### Step 3. Use the tsv file and assign it to a dataframe called food" ] }, { @@ -167,8 +167,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -182,7 +183,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb index 2f1f93139..331fcfeba 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb @@ -24,7 +24,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pandas as pd\n", @@ -35,7 +37,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Use the csv file and assign it to a dataframe called food" + "### Step 3. Use the tsv file and assign it to a dataframe called food" ] }, { @@ -55,7 +57,7 @@ } ], "source": [ - "food = pd.read_csv('~/Desktop/world-food-facts/en.openfoodfacts.org.products.tsv', sep='\\t')" + "food = pd.read_csv('~/Desktop/en.openfoodfacts.org.products.tsv', sep='\\t')" ] }, { @@ -68,7 +70,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -312,7 +316,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -332,7 +338,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -359,7 +367,9 @@ { "cell_type": "code", "execution_count": 10, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -394,7 +404,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -430,7 +442,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -457,7 +471,9 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -484,7 +500,9 @@ { "cell_type": "code", "execution_count": 16, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -511,7 +529,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Solutions.ipynb index 6b0c98644..e51bf13c4 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Solutions.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 1. Go to https://www.kaggle.com/openfoodfacts/world-food-facts" + "### Step 1. Go to https://www.kaggle.com/openfoodfacts/world-food-facts/data" ] }, { @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -34,7 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Use the csv file and assign it to a dataframe called food" + "### Step 3. Use the tsv file and assign it to a dataframe called food" ] }, { @@ -64,16 +64,28 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 5, "metadata": { - "collapsed": false, - "scrolled": true + "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -89,31 +101,31 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -128,38 +140,38 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -169,21 +181,21 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -193,21 +205,21 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -224,63 +236,63 @@ " \n", " \n", "
generic_namequantity...caffeine_100gtaurine_100gph_100gfruits_vegetables_nuts_100gcollagen_meat_protein_ratio_100gfruits-vegetables-nuts_100gfruits-vegetables-nuts-estimate_100gcollagen-meat-protein-ratio_100gcocoa_100gchlorophyl_100gcarbon_footprint_100gnutrition_score_fr_100gnutrition_score_uk_100gcarbon-footprint_100gnutrition-score-fr_100gnutrition-score-uk_100gglycemic-index_100gwater-hardness_100g
00000000000000128663087http://world-en.openfoodfacts.org/product/0000...date-limite-app14470043642015-11-08T17:39:24Z14470043642015-11-08T17:39:24ZPoêlée à la sarladaiseNaNNaNopenfoodfacts-contributors14741038662016-09-17T09:17:46Z14741038932016-09-17T09:18:13ZFarine de blé noirNaN1kg...NaNNaN
100000000246004530http://world-en.openfoodfacts.org/product/0000...date-limite-app14345307042015-06-17T08:45:04Z14345359142015-06-17T10:11:54ZFilet de bœufNaN2.46 kg...usda-ndb-import14890699572017-03-09T14:32:37Z14890699572017-03-09T14:32:37ZBanana Chips Sweetened (Whole)NaNNaN...NaNNaNNaNNaNNaNNaN14.014.0NaNNaN
200000000362524559http://world-en.openfoodfacts.org/product/0000...tacinte14222217012015-01-25T21:35:01Z14222218552015-01-25T21:37:35ZLion Peanut x2usda-ndb-import14890699572017-03-09T14:32:37Z14890699572017-03-09T14:32:37ZPeanutsNaNNaN...NaNNaNNaNNaNNaN0.00.0NaNNaN
3000000003925916087http://world-en.openfoodfacts.org/product/0000...tacinte14222217732015-01-25T21:36:13Z14222219262015-01-25T21:38:46ZTwix x2usda-ndb-import14890557312017-03-09T10:35:31Z14890557312017-03-09T10:35:31ZOrganic Salted Nut MixNaNNaN...NaNNaNNaNNaNNaN12.012.0NaNNaN
4000000003952916094http://world-en.openfoodfacts.org/product/0000...teolemon14201470512015-01-01T21:17:31Z14391417402015-08-09T17:35:40ZPack de 2 Twixusda-ndb-import14890556532017-03-09T10:34:13Z14890556532017-03-09T10:34:13ZOrganic PolentaNaNNaN...
\n", - "

5 rows × 159 columns

\n", + "

5 rows × 163 columns

\n", "
" ], "text/plain": [ - " code url \\\n", - "0 000000000000012866 http://world-en.openfoodfacts.org/product/0000... \n", - "1 0000000024600 http://world-en.openfoodfacts.org/product/0000... \n", - "2 0000000036252 http://world-en.openfoodfacts.org/product/0000... \n", - "3 0000000039259 http://world-en.openfoodfacts.org/product/0000... \n", - "4 0000000039529 http://world-en.openfoodfacts.org/product/0000... \n", + " code url \\\n", + "0 3087 http://world-en.openfoodfacts.org/product/0000... \n", + "1 4530 http://world-en.openfoodfacts.org/product/0000... \n", + "2 4559 http://world-en.openfoodfacts.org/product/0000... \n", + "3 16087 http://world-en.openfoodfacts.org/product/0000... \n", + "4 16094 http://world-en.openfoodfacts.org/product/0000... \n", "\n", - " creator created_t created_datetime last_modified_t \\\n", - "0 date-limite-app 1447004364 2015-11-08T17:39:24Z 1447004364 \n", - "1 date-limite-app 1434530704 2015-06-17T08:45:04Z 1434535914 \n", - "2 tacinte 1422221701 2015-01-25T21:35:01Z 1422221855 \n", - "3 tacinte 1422221773 2015-01-25T21:36:13Z 1422221926 \n", - "4 teolemon 1420147051 2015-01-01T21:17:31Z 1439141740 \n", + " creator created_t created_datetime \\\n", + "0 openfoodfacts-contributors 1474103866 2016-09-17T09:17:46Z \n", + "1 usda-ndb-import 1489069957 2017-03-09T14:32:37Z \n", + "2 usda-ndb-import 1489069957 2017-03-09T14:32:37Z \n", + "3 usda-ndb-import 1489055731 2017-03-09T10:35:31Z \n", + "4 usda-ndb-import 1489055653 2017-03-09T10:34:13Z \n", "\n", - " last_modified_datetime product_name generic_name quantity \\\n", - "0 2015-11-08T17:39:24Z Poêlée à la sarladaise NaN NaN \n", - "1 2015-06-17T10:11:54Z Filet de bœuf NaN 2.46 kg \n", - "2 2015-01-25T21:37:35Z Lion Peanut x2 NaN NaN \n", - "3 2015-01-25T21:38:46Z Twix x2 NaN NaN \n", - "4 2015-08-09T17:35:40Z Pack de 2 Twix NaN NaN \n", + " last_modified_t last_modified_datetime product_name \\\n", + "0 1474103893 2016-09-17T09:18:13Z Farine de blé noir \n", + "1 1489069957 2017-03-09T14:32:37Z Banana Chips Sweetened (Whole) \n", + "2 1489069957 2017-03-09T14:32:37Z Peanuts \n", + "3 1489055731 2017-03-09T10:35:31Z Organic Salted Nut Mix \n", + "4 1489055653 2017-03-09T10:34:13Z Organic Polenta \n", "\n", - " ... caffeine_100g taurine_100g ph_100g \\\n", - "0 ... NaN NaN NaN \n", - "1 ... NaN NaN NaN \n", - "2 ... NaN NaN NaN \n", - "3 ... NaN NaN NaN \n", - "4 ... NaN NaN NaN \n", + " generic_name quantity ... fruits-vegetables-nuts_100g \\\n", + "0 NaN 1kg ... NaN \n", + "1 NaN NaN ... NaN \n", + "2 NaN NaN ... NaN \n", + "3 NaN NaN ... NaN \n", + "4 NaN NaN ... NaN \n", "\n", - " fruits_vegetables_nuts_100g collagen_meat_protein_ratio_100g cocoa_100g \\\n", - "0 NaN NaN NaN \n", - "1 NaN NaN NaN \n", - "2 NaN NaN NaN \n", - "3 NaN NaN NaN \n", - "4 NaN NaN NaN \n", + " fruits-vegetables-nuts-estimate_100g collagen-meat-protein-ratio_100g \\\n", + "0 NaN NaN \n", + "1 NaN NaN \n", + "2 NaN NaN \n", + "3 NaN NaN \n", + "4 NaN NaN \n", "\n", - " chlorophyl_100g carbon_footprint_100g nutrition_score_fr_100g \\\n", - "0 NaN NaN NaN \n", - "1 NaN NaN NaN \n", - "2 NaN NaN NaN \n", - "3 NaN NaN NaN \n", - "4 NaN NaN NaN \n", + " cocoa_100g chlorophyl_100g carbon-footprint_100g nutrition-score-fr_100g \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN 14.0 \n", + "2 NaN NaN NaN 0.0 \n", + "3 NaN NaN NaN 12.0 \n", + "4 NaN NaN NaN NaN \n", "\n", - " nutrition_score_uk_100g \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", + " nutrition-score-uk_100g glycemic-index_100g water-hardness_100g \n", + "0 NaN NaN NaN \n", + "1 14.0 NaN NaN \n", + "2 0.0 NaN NaN \n", + "3 12.0 NaN NaN \n", + "4 NaN NaN NaN \n", "\n", - "[5 rows x 159 columns]" + "[5 rows x 163 columns]" ] }, - "execution_count": 10, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -296,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -304,10 +316,30 @@ { "data": { "text/plain": [ - "65503" + "(356027, 163)" ] }, - "execution_count": 11, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "356027" + ] + }, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -323,7 +355,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -332,13 +364,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "(65503, 159)\n", - "159\n", + "(356027, 163)\n", + "163\n", "\n", - "RangeIndex: 65503 entries, 0 to 65502\n", - "Columns: 159 entries, code to nutrition_score_uk_100g\n", - "dtypes: float64(103), object(56)\n", - "memory usage: 79.5+ MB\n" + "RangeIndex: 356027 entries, 0 to 356026\n", + "Columns: 163 entries, code to water-hardness_100g\n", + "dtypes: float64(107), object(56)\n", + "memory usage: 442.8+ MB\n" ] } ], @@ -353,7 +385,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -361,18 +393,19 @@ { "data": { "text/plain": [ - "Index([u'code', u'url', u'creator', u'created_t', u'created_datetime',\n", - " u'last_modified_t', u'last_modified_datetime', u'product_name',\n", - " u'generic_name', u'quantity',\n", + "Index(['code', 'url', 'creator', 'created_t', 'created_datetime',\n", + " 'last_modified_t', 'last_modified_datetime', 'product_name',\n", + " 'generic_name', 'quantity',\n", " ...\n", - " u'caffeine_100g', u'taurine_100g', u'ph_100g',\n", - " u'fruits_vegetables_nuts_100g', u'collagen_meat_protein_ratio_100g',\n", - " u'cocoa_100g', u'chlorophyl_100g', u'carbon_footprint_100g',\n", - " u'nutrition_score_fr_100g', u'nutrition_score_uk_100g'],\n", - " dtype='object', length=159)" + " 'fruits-vegetables-nuts_100g', 'fruits-vegetables-nuts-estimate_100g',\n", + " 'collagen-meat-protein-ratio_100g', 'cocoa_100g', 'chlorophyl_100g',\n", + " 'carbon-footprint_100g', 'nutrition-score-fr_100g',\n", + " 'nutrition-score-uk_100g', 'glycemic-index_100g',\n", + " 'water-hardness_100g'],\n", + " dtype='object', length=163)" ] }, - "execution_count": 13, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -388,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -396,10 +429,10 @@ { "data": { "text/plain": [ - "'glucose_100g'" + "'-glucose_100g'" ] }, - "execution_count": 14, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -450,7 +483,7 @@ { "data": { "text/plain": [ - "RangeIndex(start=0, stop=65503, step=1)" + "RangeIndex(start=0, stop=356027, step=1)" ] }, "execution_count": 16, @@ -469,7 +502,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -477,10 +510,10 @@ { "data": { "text/plain": [ - "'Flat Leaf Parsley'" + "'Lotus Organic Brown Jasmine Rice'" ] }, - "execution_count": 18, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -489,24 +522,25 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From 4778c27942edef7dc96cd64a2e21a7aa87c0c1d0 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 24 Jun 2018 13:28:18 +0200 Subject: [PATCH 35/92] Update on step12 of Occupation exercise code solution --- .../Occupation/Exercise_with_Solution.ipynb | 77 +++++++++++-------- .../Occupation/Exercises.ipynb | 5 +- .../Occupation/Solutions.ipynb | 5 +- 3 files changed, 51 insertions(+), 36 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb index ba552f673..c5bd0b238 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": { "collapsed": false, "scrolled": true @@ -300,7 +300,7 @@ "25 39 M engineer 55107" ] }, - "execution_count": 6, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -318,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true @@ -435,7 +435,7 @@ "943 22 M student 77841" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -482,7 +482,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -493,7 +493,7 @@ "4" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -511,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -522,7 +522,7 @@ "Index([u'age', u'gender', u'occupation', u'zip_code'], dtype='object')" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -540,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -554,7 +554,7 @@ " dtype='int64', name=u'user_id', length=943)" ] }, - "execution_count": 13, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -573,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -588,7 +588,7 @@ "dtype: object" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -606,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -679,7 +679,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 17, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -701,7 +701,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -712,13 +712,13 @@ "21" ] }, - "execution_count": 20, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(users.occupation.unique())" + "users.occupation.nunique()" ] }, { @@ -730,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -746,7 +746,7 @@ "Name: occupation, dtype: int64" ] }, - "execution_count": 33, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -764,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -829,7 +829,7 @@ "max 73.000000" ] }, - "execution_count": 21, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -847,7 +847,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": { "collapsed": false, "scrolled": true @@ -964,7 +964,7 @@ "max 73.000000 NaN NaN NaN" ] }, - "execution_count": 22, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -982,7 +982,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -997,7 +997,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 34, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1015,7 +1015,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -1026,7 +1026,7 @@ "34.0" ] }, - "execution_count": 38, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -1044,7 +1044,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -1056,7 +1056,7 @@ "Name: age, dtype: int64" ] }, - "execution_count": 53, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -1067,10 +1067,23 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb index 4e8328147..9c5106f88 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb @@ -293,8 +293,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -308,7 +309,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb index 0daad0200..73fa4163e 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb @@ -1027,8 +1027,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -1042,7 +1043,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, From 997c48eb1bb3e8dec0d71e54cdece0ffbd51f5a7 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 24 Jun 2018 18:06:51 +0200 Subject: [PATCH 36/92] ajustes chipotle --- .../Chipotle/Exercise_with_Solutions.ipynb | 202 +++++++++++------- .../Chipotle/Exercises.ipynb | 95 ++++++-- .../Chipotle/Solutions.ipynb | 178 +++++++++++---- 3 files changed, 350 insertions(+), 125 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 3a6e5a53e..9069ddcba 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false, "scrolled": false @@ -197,7 +197,7 @@ "9 [Fresh Tomato Salsa, [Rice, Black Beans, Pinto... $9.25 " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -213,10 +213,36 @@ "### Step 5. What is the number of observations in the dataset?" ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4622" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution 1\n", + "\n", + "chipo.shape[0] # entries <= 4622 observations" + ] + }, { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -236,28 +262,9 @@ } ], "source": [ - "chipo.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4622" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# OR\n", - "chipo.shape[0] # <= 4622 observations" + "# Solution 2\n", + "\n", + "chipo.info() # entries <= 4622 observations" ] }, { @@ -269,8 +276,10 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": 6, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -278,7 +287,7 @@ "5" ] }, - "execution_count": 10, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -351,12 +360,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Which was the most ordered item? " + "### Step 9. Which was the most-ordered item? " ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -394,7 +403,7 @@ "Chicken Bowl 713926 761" ] }, - "execution_count": 41, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -410,31 +419,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. For the most-ordered-item, how many items were ordered?" + "### Step 10. For the most-ordered item, how many items were ordered?" ] }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, + "execution_count": 10, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { "text/html": [ "
\n", - "\n", "\n", " \n", " \n", @@ -464,7 +462,7 @@ "Chicken Bowl 713926 761" ] }, - "execution_count": 21, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -485,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -523,7 +521,7 @@ "[Diet Coke] 123455 159" ] }, - "execution_count": 23, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -544,7 +542,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -555,7 +553,7 @@ "4972" ] }, - "execution_count": 42, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -573,9 +571,18 @@ ] }, { - "cell_type": "code", - "execution_count": 3, + "cell_type": "markdown", "metadata": {}, + "source": [ + "#### Step 13.a. Check the item price type" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -583,7 +590,7 @@ "dtype('O')" ] }, - "execution_count": 3, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -593,9 +600,18 @@ ] }, { - "cell_type": "code", - "execution_count": 4, + "cell_type": "markdown", "metadata": {}, + "source": [ + "#### Step 13.b. Create a lambda function and change the type of item price" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "dollarizer = lambda x: float(x[1:-1])\n", @@ -603,9 +619,18 @@ ] }, { - "cell_type": "code", - "execution_count": 5, + "cell_type": "markdown", "metadata": {}, + "source": [ + "#### Step 13.c. Check the item price type" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -613,7 +638,7 @@ "dtype('float64')" ] }, - "execution_count": 5, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -631,8 +656,10 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": 16, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -657,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -668,7 +695,7 @@ "1834" ] }, - "execution_count": 130, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -686,8 +713,10 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, + "execution_count": 18, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -695,21 +724,25 @@ "18.81142857142869" ] }, - "execution_count": 15, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "chipo['revenue'] = chipo['quantity']* chipo['item_price']\n", + "# Solution 1\n", + "\n", + "chipo['revenue'] = chipo['quantity'] * chipo['item_price']\n", "order_grouped = chipo.groupby(by=['order_id']).sum()\n", "order_grouped.mean()['item_price']" ] }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, + "execution_count": 19, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -717,13 +750,14 @@ "18.81142857142869" ] }, - "execution_count": 16, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Or \n", + "# Solution 2\n", + "\n", "chipo.groupby(by=['order_id']).sum().mean()['item_price']" ] }, @@ -736,8 +770,10 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, + "execution_count": 20, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -745,7 +781,7 @@ "50" ] }, - "execution_count": 17, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -761,6 +797,18 @@ "display_name": "Python [default]", "language": "python", "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb index 7650fa94b..4629c2950 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Getting and Knowing your Data" + "# Ex2 - Getting and Knowing your Data" ] }, { @@ -60,7 +60,8 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, "outputs": [], "source": [] @@ -74,12 +75,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], - "source": [] + "source": [ + "# Solution 1\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Solution 2\n", + "\n" + ] }, { "cell_type": "markdown", @@ -92,7 +108,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [] @@ -133,7 +149,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Which was the most ordered item?" + "### Step 9. Which was the most-ordered item? " ] }, { @@ -149,7 +165,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. For the most-ordered-item, how many items were ordered?" + "### Step 10. For the most-ordered item, how many items were ordered?" ] }, { @@ -200,6 +216,29 @@ "### Step 13. Turn the item price into a float" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 13.a. Check the item price type" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 13.b. Create a lambda function and change the type of item price" + ] + }, { "cell_type": "code", "execution_count": null, @@ -209,6 +248,22 @@ "outputs": [], "source": [] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 13.c. Check the item price type" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -236,7 +291,7 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [] @@ -250,12 +305,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], - "source": [] + "source": [ + "# Solution 1\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Solution 2\n", + "\n" + ] }, { "cell_type": "markdown", @@ -268,13 +338,14 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb index 92a430aad..55b6764aa 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false, "scrolled": false @@ -190,7 +190,7 @@ "9 [Fresh Tomato Salsa, [Rice, Black Beans, Pinto... $9.25 " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -204,6 +204,29 @@ "### Step 5. What is the number of observations in the dataset?" ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4622" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution 1\n", + "\n" + ] + }, { "cell_type": "code", "execution_count": 5, @@ -226,19 +249,12 @@ "dtypes: int64(2), object(3)\n", "memory usage: 180.6+ KB\n" ] - }, - { - "data": { - "text/plain": [ - "4622" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" } ], - "source": [] + "source": [ + "# Solution 2\n", + "\n" + ] }, { "cell_type": "markdown", @@ -327,12 +343,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Which was the most ordered item? " + "### Step 9. Which was the most-ordered item? " ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -370,7 +386,7 @@ "Chicken Bowl 713926 761" ] }, - "execution_count": 41, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -381,12 +397,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. For the most-ordered-item, how many items were ordered?" + "### Step 10. For the most-ordered item, how many items were ordered?" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -424,7 +440,7 @@ "Chicken Bowl 713926 761" ] }, - "execution_count": 21, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -440,7 +456,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -478,12 +494,15 @@ "[Diet Coke] 123455 159" ] }, - "execution_count": 23, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "\n", + "# Diet Coke 159" + ] }, { "cell_type": "markdown", @@ -494,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -505,7 +524,7 @@ "4972" ] }, - "execution_count": 42, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -519,15 +538,76 @@ "### Step 13. Turn the item price into a float" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 13.a. Check the item price type" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('O')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 13.b. Create a lambda function and change the type of item price" + ] + }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 13.c. Check the item price type" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('float64')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -537,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -561,7 +641,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -572,7 +652,7 @@ "1834" ] }, - "execution_count": 130, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -588,7 +668,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -596,15 +676,41 @@ { "data": { "text/plain": [ - "21.394231" + "18.81142857142869" ] }, - "execution_count": 4, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "# Solution 1\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "18.81142857142869" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Solution 2\n", + "\n" + ] }, { "cell_type": "markdown", @@ -615,7 +721,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -626,7 +732,7 @@ "50" ] }, - "execution_count": 148, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } From 904a4b1241c972e4402b26e45f203267d6dcd815 Mon Sep 17 00:00:00 2001 From: pkro Date: Fri, 13 Jul 2018 11:45:41 +0200 Subject: [PATCH 37/92] Clarified instructions for creating the dataframe --- 02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb index a15c1fe58..3e0ddbfdb 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb @@ -65,7 +65,7 @@ "source": [ "### Step 3. Create a dataframe and assign it to a variable called army. \n", "\n", - "#### Don't forget to include the columns names" + "#### Don't forget to include the columns names in the order presented in the dictionary ('regiment', 'company', 'deaths'...) so that the column index order is consistent with the solutions. If omitted, pandas will order the columns alphabetically." ] }, { From 05e45aaa680788732a174512c08461573a8888a3 Mon Sep 17 00:00:00 2001 From: pkro Date: Fri, 13 Jul 2018 11:49:12 +0200 Subject: [PATCH 38/92] replaced deprecaded ix method to loc / iloc --- .../Fictional Army/Exercise_with_solutions.ipynb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb index 87308cae0..9c006b0ee 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb @@ -1714,7 +1714,7 @@ } ], "source": [ - "army.ix[['Arizona', 'Texas']]" + "army.loc[['Arizona', 'Texas'], :]" ] }, { @@ -1743,11 +1743,11 @@ } ], "source": [ - "army.ix['Arizona', 'deaths']\n", + "army.loc[['Arizona'], ['deaths']]\n", "\n", "#OR\n", "\n", - "army.ix['Arizona', 2]" + "army.loc[['Arizona'], [army.columns[2]]]" ] }, { @@ -1776,7 +1776,11 @@ } ], "source": [ - "army.ix[2, 'deaths']" + "army.loc['Texas', 'deaths']\n", + "\n", + "#OR\n", + "\n", + "army.iloc[2, army.columns.get_loc('deaths')]\n" ] } ], From 8853686fba2d236f70b178d4f5082470ad3cd0e7 Mon Sep 17 00:00:00 2001 From: pkro Date: Mon, 16 Jul 2018 10:36:28 +0200 Subject: [PATCH 39/92] Clarified instructions --- 02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb index ee76cbeab..77998800a 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb @@ -63,7 +63,7 @@ "source": [ "### Step 3. Create a dataframe and assign it to a variable called army. \n", "\n", - "#### Don't forget to include the columns names" + "#### Don't forget to include the columns names in the order presented in the dictionary ('regiment', 'company', 'deaths'...) so that the column index order is consistent with the solutions. If omitted, pandas will order the columns alphabetically." ] }, { From b6fa2e70375aacfc597ffdfa572833511ad8d593 Mon Sep 17 00:00:00 2001 From: pkro Date: Mon, 16 Jul 2018 10:37:13 +0200 Subject: [PATCH 40/92] Clarified instructions --- .../Fictional Army/Exercise_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb index 9c006b0ee..5e4a3cc82 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb @@ -65,7 +65,7 @@ "source": [ "### Step 3. Create a dataframe and assign it to a variable called army. \n", "\n", - "#### Don't forget to include the columns names" + "#### Don't forget to include the columns names in the order presented in the dictionary ('regiment', 'company', 'deaths'...) so that the column index order is consistent with the solutions. If omitted, pandas will order the columns alphabetically." ] }, { From e1c5ffdb81706dcdca67f864c370571aeacb0bc8 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Thu, 2 Aug 2018 20:07:00 +0200 Subject: [PATCH 41/92] all good --- .../Exercises_with_solutions.ipynb | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index 78c5cdbf9..ad9e25f66 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -46,7 +46,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 2, "metadata": { "collapsed": false, "scrolled": false @@ -227,7 +227,7 @@ "[5 rows x 33 columns]" ] }, - "execution_count": 5, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -247,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -370,7 +370,7 @@ "4 home father " ] }, - "execution_count": 26, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -389,7 +389,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -407,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -479,7 +479,7 @@ "Name: Fjob, dtype: object" ] }, - "execution_count": 28, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -498,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -621,7 +621,7 @@ "394 course father " ] }, - "execution_count": 29, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -639,7 +639,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -762,7 +762,7 @@ "394 course father " ] }, - "execution_count": 30, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -782,7 +782,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -797,7 +797,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -926,7 +926,7 @@ "4 home father False " ] }, - "execution_count": 32, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -946,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -960,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -1003,7 +1003,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1019,7 +1019,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1035,7 +1035,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1051,7 +1051,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1067,7 +1067,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1083,7 +1083,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1099,7 +1099,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1115,7 +1115,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1131,7 +1131,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1147,7 +1147,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", "
TEACHERcoursemotherNoneTrue
1OTHERcoursefatherNoneFalse
2OTHERothermotherNoneFalse
3SERVICEShomemotherNoneFalse
4OTHERhomefatherNoneFalse
5OTHERreputationmotherNoneFalse
6OTHERhomemotherNoneFalse
7TEACHERhomemotherNoneFalse
8OTHERhomemotherNoneFalse
9OTHERhomemotherNoneFalse
\n", @@ -1167,19 +1167,19 @@ "9 GP M 150 U GT3 T 30 40 OTHER OTHER \n", "\n", " reason guardian legal_drinker \n", - "0 course mother None \n", - "1 course father None \n", - "2 other mother None \n", - "3 home mother None \n", - "4 home father None \n", - "5 reputation mother None \n", - "6 home mother None \n", - "7 home mother None \n", - "8 home mother None \n", - "9 home mother None " + "0 course mother True \n", + "1 course father False \n", + "2 other mother False \n", + "3 home mother False \n", + "4 home father False \n", + "5 reputation mother False \n", + "6 home mother False \n", + "7 home mother False \n", + "8 home mother False \n", + "9 home mother False " ] }, - "execution_count": 42, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } From 58c05149c7e2374389b99f93097782c27d70bb80 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Thu, 2 Aug 2018 21:34:54 +0200 Subject: [PATCH 42/92] grammar adjusts --- .../Exercises_with_solutions.ipynb | 60 ++++++++++--------- 06_Stats/US_Baby_Names/Solutions.ipynb | 59 +++++++++--------- 2 files changed, 65 insertions(+), 54 deletions(-) diff --git a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb index 50dcc4ade..56234726f 100644 --- a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb +++ b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -226,7 +226,7 @@ "9 11358 11359 Sophia 2004 F AK 28" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -318,7 +318,7 @@ "4 Emily 2004 F AK 41" ] }, - "execution_count": 106, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -337,22 +337,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Is there more male or female names in the dataset?" + "### Step 6. Are there more male or female names in the dataset?" ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "17632\n" - ] + "data": { + "text/plain": [ + "F 558846\n", + "M 457549\n", + "Name: Gender, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -368,7 +373,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -430,7 +435,7 @@ "Isabella 204798" ] }, - "execution_count": 116, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -461,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -472,7 +477,7 @@ "17632" ] }, - "execution_count": 89, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -492,7 +497,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -503,7 +508,7 @@ "'Jacob'" ] }, - "execution_count": 151, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -525,7 +530,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -536,7 +541,7 @@ "2578" ] }, - "execution_count": 138, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -554,7 +559,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -892,7 +897,7 @@ "[66 rows x 1 columns]" ] }, - "execution_count": 144, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -910,7 +915,7 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -921,7 +926,7 @@ "11006.069467891111" ] }, - "execution_count": 147, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -939,7 +944,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1004,7 +1009,7 @@ "max 242874.000000" ] }, - "execution_count": 148, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1015,6 +1020,7 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", diff --git a/06_Stats/US_Baby_Names/Solutions.ipynb b/06_Stats/US_Baby_Names/Solutions.ipynb index dff9e9368..9acac382e 100644 --- a/06_Stats/US_Baby_Names/Solutions.ipynb +++ b/06_Stats/US_Baby_Names/Solutions.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -221,7 +221,7 @@ "9 11358 11359 Sophia 2004 F AK 28" ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -237,7 +237,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -311,7 +311,7 @@ "4 Emily 2004 F AK 41" ] }, - "execution_count": 106, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -322,22 +322,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Is there more male or female names in the dataset?" + "### Step 6. Are there more male or female names in the dataset?" ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "17632\n" - ] + "data": { + "text/plain": [ + "F 558846\n", + "M 457549\n", + "Name: Gender, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [] @@ -351,7 +356,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -413,7 +418,7 @@ "Isabella 204798" ] }, - "execution_count": 116, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -429,7 +434,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -440,7 +445,7 @@ "17632" ] }, - "execution_count": 89, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -456,7 +461,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -467,7 +472,7 @@ "'Jacob'" ] }, - "execution_count": 151, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -483,7 +488,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -494,7 +499,7 @@ "2578" ] }, - "execution_count": 138, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -510,7 +515,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -848,7 +853,7 @@ "[66 rows x 1 columns]" ] }, - "execution_count": 144, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -864,7 +869,7 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -875,7 +880,7 @@ "11006.069467891111" ] }, - "execution_count": 147, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -891,7 +896,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -956,7 +961,7 @@ "max 242874.000000" ] }, - "execution_count": 148, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } From 0b70baedea5cf1a090b5c872375680e800fd2f09 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Wed, 15 Aug 2018 10:25:08 +0200 Subject: [PATCH 43/92] checked merge --- 06_Stats/Wind_Stats/Exercises.ipynb | 5 +- .../Wind_Stats/Exercises_with_solutions.ipynb | 265 +++++++++++++----- 06_Stats/Wind_Stats/Solutions.ipynb | 7 +- 3 files changed, 208 insertions(+), 69 deletions(-) diff --git a/06_Stats/Wind_Stats/Exercises.ipynb b/06_Stats/Wind_Stats/Exercises.ipynb index acd1ca732..bd4d34dcd 100644 --- a/06_Stats/Wind_Stats/Exercises.ipynb +++ b/06_Stats/Wind_Stats/Exercises.ipynb @@ -323,8 +323,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -338,7 +339,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 00e79ee40..11409c05f 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 414, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -228,7 +228,7 @@ "4 10.34 12.92 11.83 " ] }, - "execution_count": 414, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -249,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": 415, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -378,7 +378,7 @@ "4 10.34 12.92 11.83 " ] }, - "execution_count": 415, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -407,21 +407,149 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { - "ename": "NameError", - "evalue": "name 'pd' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\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# transform Yr_Mo_Dy it to date type datetime64\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Yr_Mo_Dy\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_datetime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Yr_Mo_Dy\"\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 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# set 'Yr_Mo_Dy' as the index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Yr_Mo_Dy'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'pd' is not defined" - ] + "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", + "
RPTVALROSKILSHABIRDUBCLAMULCLOBELMAL
Yr_Mo_Dy
1961-01-0115.0414.9613.179.29NaN9.8713.6710.2510.8312.5818.5015.04
1961-01-0214.71NaN10.836.5012.627.6711.5010.049.799.6717.5413.83
1961-01-0318.5016.8812.3310.1311.176.1711.25NaN8.507.6712.7512.71
1961-01-0410.586.6311.754.584.542.888.631.795.835.885.4610.88
1961-01-0513.3313.2511.426.1710.718.2111.926.5410.9210.3412.9211.83
\n", + "
" + ], + "text/plain": [ + " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", + "Yr_Mo_Dy \n", + "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", + "1961-01-02 14.71 NaN 10.83 6.50 12.62 7.67 11.50 10.04 9.79 \n", + "1961-01-03 18.50 16.88 12.33 10.13 11.17 6.17 11.25 NaN 8.50 \n", + "1961-01-04 10.58 6.63 11.75 4.58 4.54 2.88 8.63 1.79 5.83 \n", + "1961-01-05 13.33 13.25 11.42 6.17 10.71 8.21 11.92 6.54 10.92 \n", + "\n", + " CLO BEL MAL \n", + "Yr_Mo_Dy \n", + "1961-01-01 12.58 18.50 15.04 \n", + "1961-01-02 9.67 17.54 13.83 \n", + "1961-01-03 7.67 12.75 12.71 \n", + "1961-01-04 5.88 5.46 10.88 \n", + "1961-01-05 10.34 12.92 11.83 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -445,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": 423, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -468,7 +596,7 @@ "dtype: int64" ] }, - "execution_count": 423, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -487,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 424, + "execution_count": 7, "metadata": { "collapsed": false, "scrolled": true @@ -511,7 +639,7 @@ "dtype: int64" ] }, - "execution_count": 424, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -531,7 +659,7 @@ }, { "cell_type": "code", - "execution_count": 426, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -542,7 +670,7 @@ "10.227982360836924" ] }, - "execution_count": 426, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -563,7 +691,7 @@ }, { "cell_type": "code", - "execution_count": 264, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -687,7 +815,7 @@ "MAL 0.67 42.54 15.599079 6.699794" ] }, - "execution_count": 264, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -714,7 +842,7 @@ }, { "cell_type": "code", - "execution_count": 404, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -732,57 +860,65 @@ " mean\n", " std\n", " \n", + " \n", + " Yr_Mo_Dy\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " 0\n", - " 1.0\n", + " 1961-01-01\n", + " 9.29\n", " 18.50\n", - " 12.016667\n", - " 4.382798\n", + " 13.018182\n", + " 2.808875\n", " \n", " \n", - " 1\n", - " 1.0\n", + " 1961-01-02\n", + " 6.50\n", " 17.54\n", - " 10.475000\n", - " 4.260110\n", + " 11.336364\n", + " 3.188994\n", " \n", " \n", - " 2\n", - " 1.0\n", + " 1961-01-03\n", + " 6.17\n", " 18.50\n", - " 10.755000\n", - " 4.664914\n", + " 11.641818\n", + " 3.681912\n", " \n", " \n", - " 3\n", - " 1.0\n", + " 1961-01-04\n", + " 1.79\n", " 11.75\n", - " 6.186923\n", - " 3.435771\n", + " 6.619167\n", + " 3.198126\n", " \n", " \n", - " 4\n", - " 1.0\n", + " 1961-01-05\n", + " 6.17\n", " 13.33\n", - " 9.889231\n", - " 3.551768\n", + " 10.630000\n", + " 2.445356\n", " \n", " \n", "\n", "
" ], "text/plain": [ - " min max mean std\n", - "0 1.0 18.50 12.016667 4.382798\n", - "1 1.0 17.54 10.475000 4.260110\n", - "2 1.0 18.50 10.755000 4.664914\n", - "3 1.0 11.75 6.186923 3.435771\n", - "4 1.0 13.33 9.889231 3.551768" + " min max mean std\n", + "Yr_Mo_Dy \n", + "1961-01-01 9.29 18.50 13.018182 2.808875\n", + "1961-01-02 6.50 17.54 11.336364 3.188994\n", + "1961-01-03 6.17 18.50 11.641818 3.681912\n", + "1961-01-04 1.79 11.75 6.619167 3.198126\n", + "1961-01-05 6.17 13.33 10.630000 2.445356" ] }, - "execution_count": 404, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -810,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 427, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -833,7 +969,7 @@ "dtype: float64" ] }, - "execution_count": 427, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -865,7 +1001,7 @@ }, { "cell_type": "code", - "execution_count": 428, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1306,7 +1442,7 @@ "1978-01-01 10.00 15.09 20.46 1978-01-01 1 1978 1 " ] }, - "execution_count": 428, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1324,7 +1460,7 @@ }, { "cell_type": "code", - "execution_count": 429, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -2671,7 +2807,7 @@ "[216 rows x 16 columns]" ] }, - "execution_count": 429, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -2689,7 +2825,7 @@ }, { "cell_type": "code", - "execution_count": 430, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -2857,7 +2993,7 @@ "1961-01-29 19.95 27.71 23.38 1961-01-29 1 1961 29 " ] }, - "execution_count": 430, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -2877,7 +3013,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -4203,7 +4339,7 @@ "[6574 rows x 16 columns]" ] }, - "execution_count": 3, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -4233,7 +4369,7 @@ }, { "cell_type": "code", - "execution_count": 433, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -4595,7 +4731,7 @@ "[10 rows x 48 columns]" ] }, - "execution_count": 433, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -4610,8 +4746,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -4625,7 +4762,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/06_Stats/Wind_Stats/Solutions.ipynb b/06_Stats/Wind_Stats/Solutions.ipynb index a0160b398..53151490b 100644 --- a/06_Stats/Wind_Stats/Solutions.ipynb +++ b/06_Stats/Wind_Stats/Solutions.ipynb @@ -87,7 +87,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/Stats/Wind_Stats/wind.data)" + "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/06_Stats/Wind_Stats/wind.data)" ] }, { @@ -3483,8 +3483,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -3498,7 +3499,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, From 1a7eca26a607a706752397c45161388f55ea21a0 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 09:41:13 +0200 Subject: [PATCH 44/92] change revenue amount per oder chipotle --- .../Chipotle/Exercise_with_Solutions.ipynb | 31 ++++++++++--------- .../Chipotle/Exercises.ipynb | 2 +- .../Chipotle/Solutions.ipynb | 29 ++++++++--------- 3 files changed, 30 insertions(+), 32 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 9069ddcba..893af8518 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -656,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -684,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -695,25 +695,26 @@ "1834" ] }, - "execution_count": 17, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "chipo.order_id.value_counts().count()" + "orders = chipo.order_id.value_counts().count()\n", + "orders" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 16. What is the average amount per order?" + "### Step 16. What is the average revenue amount per order?" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -721,10 +722,10 @@ { "data": { "text/plain": [ - "18.81142857142869" + "21.394231188658654" ] }, - "execution_count": 18, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -734,12 +735,12 @@ "\n", "chipo['revenue'] = chipo['quantity'] * chipo['item_price']\n", "order_grouped = chipo.groupby(by=['order_id']).sum()\n", - "order_grouped.mean()['item_price']" + "order_grouped.mean()['revenue']" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -747,10 +748,10 @@ { "data": { "text/plain": [ - "18.81142857142869" + "21.394231188658654" ] }, - "execution_count": 19, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -758,7 +759,7 @@ "source": [ "# Solution 2\n", "\n", - "chipo.groupby(by=['order_id']).sum().mean()['item_price']" + "chipo.groupby(by=['order_id']).sum().mean()['revenue']" ] }, { @@ -770,7 +771,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -781,7 +782,7 @@ "50" ] }, - "execution_count": 20, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb index 4629c2950..03e1fc603 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercises.ipynb @@ -300,7 +300,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 16. What is the average amount per order?" + "### Step 16. What is the average revenue amount per order?" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb index 55b6764aa..c976934dd 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb @@ -499,10 +499,7 @@ "output_type": "execute_result" } ], - "source": [ - "\n", - "# Diet Coke 159" - ] + "source": [] }, { "cell_type": "markdown", @@ -617,7 +614,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -641,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -652,7 +649,7 @@ "1834" ] }, - "execution_count": 17, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -663,12 +660,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 16. What is the average amount per order?" + "### Step 16. What is the average revenue amount per order?" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -676,10 +673,10 @@ { "data": { "text/plain": [ - "18.81142857142869" + "21.394231188658654" ] }, - "execution_count": 18, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -691,7 +688,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -699,10 +696,10 @@ { "data": { "text/plain": [ - "18.81142857142869" + "21.394231188658654" ] }, - "execution_count": 19, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -721,7 +718,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -732,7 +729,7 @@ "50" ] }, - "execution_count": 20, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } From 5b9097e26da8e4af9eb7f60a3d93c1a047887f18 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 10:17:59 +0200 Subject: [PATCH 45/92] improvement chipotle 2 --- .../Chipotle/Exercises_with_solutions.ipynb | 902 +++++++++++++----- .../Chipotle/Solutions.ipynb | 902 +++++++++++++----- 2 files changed, 1310 insertions(+), 494 deletions(-) diff --git a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb index e487dad97..0f7ba9bce 100644 --- a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -72,10 +72,10 @@ { "data": { "text/plain": [ - "1130" + "12" ] }, - "execution_count": 4, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -85,13 +85,15 @@ "prices = [float(value[1 : -1]) for value in chipo.item_price]\n", "\n", "# reassign the column with the cleaned prices\n", - "chipo.item_price = prices \n", + "chipo.item_price = prices\n", "\n", - "# make the comparison\n", - "chipo10 = chipo[chipo['item_price'] > 10.00]\n", - "chipo10.head()\n", + "# delete the duplicates in item_name and quantity\n", + "chipo_filtered = chipo.drop_duplicates(['item_name','quantity'])\n", + "\n", + "# select only the products with quantity equals to 1\n", + "chipo_one_prod = chipo_filtered[chipo_filtered.quantity == 1]\n", "\n", - "len(chipo10)" + "chipo_one_prod[chipo_one_prod['item_price']>10].item_name.nunique()" ] }, { @@ -104,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -222,315 +224,707 @@ " Carnitas Salad\n", " 8.99\n", " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " item_name item_price\n", + "606 Steak Salad Bowl 11.89\n", + "1229 Barbacoa Salad Bowl 11.89\n", + "1132 Carnitas Salad Bowl 11.89\n", + "7 Steak Burrito 11.75\n", + "168 Barbacoa Crispy Tacos 11.75\n", + "39 Barbacoa Bowl 11.75\n", + "738 Veggie Soft Tacos 11.25\n", + "186 Veggie Salad Bowl 11.25\n", + "62 Veggie Bowl 11.25\n", + "57 Veggie Burrito 11.25\n", + "250 Chicken Salad 10.98\n", + "5 Chicken Bowl 10.98\n", + "8 Steak Soft Tacos 9.25\n", + "554 Carnitas Crispy Tacos 9.25\n", + "237 Carnitas Soft Tacos 9.25\n", + "56 Barbacoa Soft Tacos 9.25\n", + "92 Steak Crispy Tacos 9.25\n", + "664 Steak Salad 8.99\n", + "54 Steak Bowl 8.99\n", + "3750 Carnitas Salad 8.99" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# delete the duplicates in item_name and quantity\n", + "chipo_filtered = chipo.drop_duplicates(['item_name','quantity'])\n", + "\n", + "# select only the products with quantity equals to 1\n", + "chipo_one_prod = chipo_filtered[chipo_filtered.quantity == 1]\n", + "\n", + "# select only the item_name and item_price columns\n", + "price_per_item = chipo_one_prod[['item_name', 'item_price']]\n", + "\n", + "# sort the values from the most to less expensive\n", + "price_per_item.sort_values(by = \"item_price\", ascending = False).head(20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6. Sort by the name of the item" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "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", "
order_idquantityitem_namechoice_descriptionitem_price
21Barbacoa Burrito8.993389136026 Pack Soft Drink[Diet Coke]12.98
27Carnitas Burrito8.9934114816 Pack Soft Drink[Diet Coke]6.49
33Carnitas Bowl8.99184974916 Pack Soft Drink[Coke]6.49
11Chicken Crispy Tacos8.75186075416 Pack Soft Drink[Diet Coke]6.49
12Chicken Soft Tacos8.752713107616 Pack Soft Drink[Coke]6.49
44Chicken Salad Bowl8.753422137316 Pack Soft Drink[Coke]6.49
55323016 Pack Soft Drink[Diet Coke]6.49
191677416 Pack Soft Drink[Diet Coke]6.49
192277616 Pack Soft Drink[Coke]6.49
193778416 Pack Soft Drink[Diet Coke]6.49
3836153716 Pack Soft Drink[Coke]6.49
29812916 Pack Soft Drink[Sprite]6.49
197679816 Pack Soft Drink[Diet Coke]6.49
116748116 Pack Soft Drink[Coke]6.49
3875155416 Pack Soft Drink[Diet Coke]6.49
112446516 Pack Soft Drink[Coke]6.49
3886155816 Pack Soft Drink[Diet Coke]6.49
210884916 Pack Soft Drink[Coke]6.49
3010119616 Pack Soft Drink[Diet Coke]6.49
4535180316 Pack Soft Drink[Lemonade]6.49
4169166416 Pack Soft Drink[Diet Coke]6.49
4174166616 Pack Soft Drink[Coke]6.49
4527180016 Pack Soft Drink[Diet Coke]6.49
4522179816 Pack Soft Drink[Diet Coke]6.49
3806152516 Pack Soft Drink[Sprite]6.49
238994916 Pack Soft Drink[Coke]6.49
3132124816 Pack Soft Drink[Diet Coke]6.49
1653Veggie Crispy Tacos3141125316 Pack Soft Drink[Lemonade]6.49
63926416 Pack Soft Drink[Diet Coke]6.49
102642216 Pack Soft Drink[Sprite]6.49
..................
299611921Veggie Salad[Roasted Chili Corn Salsa (Medium), [Black Bea...8.49
16Chicken Burrito316312631Veggie Salad[[Fresh Tomato Salsa (Mild), Roasted Chili Cor...8.49
408416351Veggie Salad[[Fresh Tomato Salsa (Mild), Roasted Chili Cor...8.49
16946861Veggie Salad[[Fresh Tomato Salsa (Mild), Roasted Chili Cor...8.49
1414Salad7.40275610941Veggie Salad[[Tomatillo-Green Chili Salsa (Medium), Roaste...8.49
510Burrito7.40420116771Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Black...11.25
18847601Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
520Crispy Tacos7.404551951Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
673Bowl7.40322312891Veggie Salad Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
2986 Pack Soft Drink6.4922238961Veggie Salad Bowl[Roasted Chili Corn Salsa, Fajita Vegetables]8.75
22699131Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...8.75
454118051Veggie Salad Bowl[Tomatillo Green Chili Salsa, [Fajita Vegetabl...8.75
329313211Veggie Salad Bowl[Fresh Tomato Salsa, [Rice, Black Beans, Chees...8.75
186831Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
10Chips and Guacamole4.459603941Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Lettu...8.75
1Izze3.3913165361Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...8.75
2Nantucket Nectar3.3921568691Veggie Salad Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
674Chips and Mild Fresh Tomato Salsa3.00426117001Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
111Chips and Tomatillo Red Chili Salsa2.952951281Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Lettu...11.25
233Chips and Roasted Chili Corn Salsa2.95457318181Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Pinto...8.75
38Chips and Tomatillo Green Chili Salsa2.95268310661Veggie Salad Bowl[Roasted Chili Corn Salsa, [Fajita Vegetables,...8.75
3Chips and Tomatillo-Green Chili Salsa2.394962071Veggie Salad Bowl[Fresh Tomato Salsa, [Rice, Lettuce, Guacamole...11.25
300Chips and Tomatillo-Red Chili Salsa2.39410916461Veggie Salad Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
191Chips and Roasted Chili-Corn Salsa2.397383041Veggie Soft Tacos[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
0Chips and Fresh Tomato Salsa2.39388915592Veggie Soft Tacos[Fresh Tomato Salsa (Mild), [Black Beans, Rice...16.98
40Chips2.1523849481Veggie Soft Tacos[Roasted Chili Corn Salsa, [Fajita Vegetables,...8.75
6Side of Chips1.697813221Veggie Soft Tacos[Fresh Tomato Salsa, [Black Beans, Cheese, Sou...8.75
263Canned Soft Drink1.25285111321Veggie Soft Tacos[Roasted Chili Corn Salsa (Medium), [Black Bea...8.49
28Canned Soda1.0916996881Veggie Soft Tacos[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
34Bottled Water1.0913955671Veggie Soft Tacos[Fresh Tomato Salsa (Mild), [Pinto Beans, Rice...8.49
\n", + "

4622 rows × 5 columns

\n", "
" ], "text/plain": [ - " item_name item_price\n", - "606 Steak Salad Bowl 11.89\n", - "1229 Barbacoa Salad Bowl 11.89\n", - "1132 Carnitas Salad Bowl 11.89\n", - "7 Steak Burrito 11.75\n", - "168 Barbacoa Crispy Tacos 11.75\n", - "39 Barbacoa Bowl 11.75\n", - "738 Veggie Soft Tacos 11.25\n", - "186 Veggie Salad Bowl 11.25\n", - "62 Veggie Bowl 11.25\n", - "57 Veggie Burrito 11.25\n", - "250 Chicken Salad 10.98\n", - "5 Chicken Bowl 10.98\n", - "8 Steak Soft Tacos 9.25\n", - "554 Carnitas Crispy Tacos 9.25\n", - "237 Carnitas Soft Tacos 9.25\n", - "56 Barbacoa Soft Tacos 9.25\n", - "92 Steak Crispy Tacos 9.25\n", - "664 Steak Salad 8.99\n", - "54 Steak Bowl 8.99\n", - "3750 Carnitas Salad 8.99\n", - "21 Barbacoa Burrito 8.99\n", - "27 Carnitas Burrito 8.99\n", - "33 Carnitas Bowl 8.99\n", - "11 Chicken Crispy Tacos 8.75\n", - "12 Chicken Soft Tacos 8.75\n", - "44 Chicken Salad Bowl 8.75\n", - "1653 Veggie Crispy Tacos 8.49\n", - "16 Chicken Burrito 8.49\n", - "1694 Veggie Salad 8.49\n", - "1414 Salad 7.40\n", - "510 Burrito 7.40\n", - "520 Crispy Tacos 7.40\n", - "673 Bowl 7.40\n", - "298 6 Pack Soft Drink 6.49\n", - "10 Chips and Guacamole 4.45\n", - "1 Izze 3.39\n", - "2 Nantucket Nectar 3.39\n", - "674 Chips and Mild Fresh Tomato Salsa 3.00\n", - "111 Chips and Tomatillo Red Chili Salsa 2.95\n", - "233 Chips and Roasted Chili Corn Salsa 2.95\n", - "38 Chips and Tomatillo Green Chili Salsa 2.95\n", - "3 Chips and Tomatillo-Green Chili Salsa 2.39\n", - "300 Chips and Tomatillo-Red Chili Salsa 2.39\n", - "191 Chips and Roasted Chili-Corn Salsa 2.39\n", - "0 Chips and Fresh Tomato Salsa 2.39\n", - "40 Chips 2.15\n", - "6 Side of Chips 1.69\n", - "263 Canned Soft Drink 1.25\n", - "28 Canned Soda 1.09\n", - "34 Bottled Water 1.09" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# delete the duplicates in item_name and quantity\n", - "chipo_filtered = chipo.drop_duplicates(['item_name','quantity'])\n", - "\n", - "# select only the products with quantity equals to 1\n", - "chipo_one_prod = chipo_filtered[chipo_filtered.quantity == 1]\n", - "\n", - "# select only the item_name and item_price columns\n", - "price_per_item = chipo_one_prod[['item_name', 'item_price']]\n", - "\n", - "# sort the values from the most to less expensive\n", - "price_per_item.sort_values(by = \"item_price\", ascending = False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 6. Sort by the name of the item" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "3389 6 Pack Soft Drink\n", - "341 6 Pack Soft Drink\n", - "1849 6 Pack Soft Drink\n", - "1860 6 Pack Soft Drink\n", - "2713 6 Pack Soft Drink\n", - "3422 6 Pack Soft Drink\n", - "553 6 Pack Soft Drink\n", - "1916 6 Pack Soft Drink\n", - "1922 6 Pack Soft Drink\n", - "1937 6 Pack Soft Drink\n", - "3836 6 Pack Soft Drink\n", - "298 6 Pack Soft Drink\n", - "1976 6 Pack Soft Drink\n", - "1167 6 Pack Soft Drink\n", - "3875 6 Pack Soft Drink\n", - "1124 6 Pack Soft Drink\n", - "3886 6 Pack Soft Drink\n", - "2108 6 Pack Soft Drink\n", - "3010 6 Pack Soft Drink\n", - "4535 6 Pack Soft Drink\n", - "4169 6 Pack Soft Drink\n", - "4174 6 Pack Soft Drink\n", - "4527 6 Pack Soft Drink\n", - "4522 6 Pack Soft Drink\n", - "3806 6 Pack Soft Drink\n", - "2389 6 Pack Soft Drink\n", - "3132 6 Pack Soft Drink\n", - "3141 6 Pack Soft Drink\n", - "639 6 Pack Soft Drink\n", - "1026 6 Pack Soft Drink\n", - " ... \n", - "2996 Veggie Salad\n", - "3163 Veggie Salad\n", - "4084 Veggie Salad\n", - "1694 Veggie Salad\n", - "2756 Veggie Salad\n", - "4201 Veggie Salad Bowl\n", - "1884 Veggie Salad Bowl\n", - "455 Veggie Salad Bowl\n", - "3223 Veggie Salad Bowl\n", - "2223 Veggie Salad Bowl\n", - "2269 Veggie Salad Bowl\n", - "4541 Veggie Salad Bowl\n", - "3293 Veggie Salad Bowl\n", - "186 Veggie Salad Bowl\n", - "960 Veggie Salad Bowl\n", - "1316 Veggie Salad Bowl\n", - "2156 Veggie Salad Bowl\n", - "4261 Veggie Salad Bowl\n", - "295 Veggie Salad Bowl\n", - "4573 Veggie Salad Bowl\n", - "2683 Veggie Salad Bowl\n", - "496 Veggie Salad Bowl\n", - "4109 Veggie Salad Bowl\n", - "738 Veggie Soft Tacos\n", - "3889 Veggie Soft Tacos\n", - "2384 Veggie Soft Tacos\n", - "781 Veggie Soft Tacos\n", - "2851 Veggie Soft Tacos\n", - "1699 Veggie Soft Tacos\n", - "1395 Veggie Soft Tacos\n", - "Name: item_name, dtype: object" + " order_id quantity item_name \\\n", + "3389 1360 2 6 Pack Soft Drink \n", + "341 148 1 6 Pack Soft Drink \n", + "1849 749 1 6 Pack Soft Drink \n", + "1860 754 1 6 Pack Soft Drink \n", + "2713 1076 1 6 Pack Soft Drink \n", + "3422 1373 1 6 Pack Soft Drink \n", + "553 230 1 6 Pack Soft Drink \n", + "1916 774 1 6 Pack Soft Drink \n", + "1922 776 1 6 Pack Soft Drink \n", + "1937 784 1 6 Pack Soft Drink \n", + "3836 1537 1 6 Pack Soft Drink \n", + "298 129 1 6 Pack Soft Drink \n", + "1976 798 1 6 Pack Soft Drink \n", + "1167 481 1 6 Pack Soft Drink \n", + "3875 1554 1 6 Pack Soft Drink \n", + "1124 465 1 6 Pack Soft Drink \n", + "3886 1558 1 6 Pack Soft Drink \n", + "2108 849 1 6 Pack Soft Drink \n", + "3010 1196 1 6 Pack Soft Drink \n", + "4535 1803 1 6 Pack Soft Drink \n", + "4169 1664 1 6 Pack Soft Drink \n", + "4174 1666 1 6 Pack Soft Drink \n", + "4527 1800 1 6 Pack Soft Drink \n", + "4522 1798 1 6 Pack Soft Drink \n", + "3806 1525 1 6 Pack Soft Drink \n", + "2389 949 1 6 Pack Soft Drink \n", + "3132 1248 1 6 Pack Soft Drink \n", + "3141 1253 1 6 Pack Soft Drink \n", + "639 264 1 6 Pack Soft Drink \n", + "1026 422 1 6 Pack Soft Drink \n", + "... ... ... ... \n", + "2996 1192 1 Veggie Salad \n", + "3163 1263 1 Veggie Salad \n", + "4084 1635 1 Veggie Salad \n", + "1694 686 1 Veggie Salad \n", + "2756 1094 1 Veggie Salad \n", + "4201 1677 1 Veggie Salad Bowl \n", + "1884 760 1 Veggie Salad Bowl \n", + "455 195 1 Veggie Salad Bowl \n", + "3223 1289 1 Veggie Salad Bowl \n", + "2223 896 1 Veggie Salad Bowl \n", + "2269 913 1 Veggie Salad Bowl \n", + "4541 1805 1 Veggie Salad Bowl \n", + "3293 1321 1 Veggie Salad Bowl \n", + "186 83 1 Veggie Salad Bowl \n", + "960 394 1 Veggie Salad Bowl \n", + "1316 536 1 Veggie Salad Bowl \n", + "2156 869 1 Veggie Salad Bowl \n", + "4261 1700 1 Veggie Salad Bowl \n", + "295 128 1 Veggie Salad Bowl \n", + "4573 1818 1 Veggie Salad Bowl \n", + "2683 1066 1 Veggie Salad Bowl \n", + "496 207 1 Veggie Salad Bowl \n", + "4109 1646 1 Veggie Salad Bowl \n", + "738 304 1 Veggie Soft Tacos \n", + "3889 1559 2 Veggie Soft Tacos \n", + "2384 948 1 Veggie Soft Tacos \n", + "781 322 1 Veggie Soft Tacos \n", + "2851 1132 1 Veggie Soft Tacos \n", + "1699 688 1 Veggie Soft Tacos \n", + "1395 567 1 Veggie Soft Tacos \n", + "\n", + " choice_description item_price \n", + "3389 [Diet Coke] 12.98 \n", + "341 [Diet Coke] 6.49 \n", + "1849 [Coke] 6.49 \n", + "1860 [Diet Coke] 6.49 \n", + "2713 [Coke] 6.49 \n", + "3422 [Coke] 6.49 \n", + "553 [Diet Coke] 6.49 \n", + "1916 [Diet Coke] 6.49 \n", + "1922 [Coke] 6.49 \n", + "1937 [Diet Coke] 6.49 \n", + "3836 [Coke] 6.49 \n", + "298 [Sprite] 6.49 \n", + "1976 [Diet Coke] 6.49 \n", + "1167 [Coke] 6.49 \n", + "3875 [Diet Coke] 6.49 \n", + "1124 [Coke] 6.49 \n", + "3886 [Diet Coke] 6.49 \n", + "2108 [Coke] 6.49 \n", + "3010 [Diet Coke] 6.49 \n", + "4535 [Lemonade] 6.49 \n", + "4169 [Diet Coke] 6.49 \n", + "4174 [Coke] 6.49 \n", + "4527 [Diet Coke] 6.49 \n", + "4522 [Diet Coke] 6.49 \n", + "3806 [Sprite] 6.49 \n", + "2389 [Coke] 6.49 \n", + "3132 [Diet Coke] 6.49 \n", + "3141 [Lemonade] 6.49 \n", + "639 [Diet Coke] 6.49 \n", + "1026 [Sprite] 6.49 \n", + "... ... ... \n", + "2996 [Roasted Chili Corn Salsa (Medium), [Black Bea... 8.49 \n", + "3163 [[Fresh Tomato Salsa (Mild), Roasted Chili Cor... 8.49 \n", + "4084 [[Fresh Tomato Salsa (Mild), Roasted Chili Cor... 8.49 \n", + "1694 [[Fresh Tomato Salsa (Mild), Roasted Chili Cor... 8.49 \n", + "2756 [[Tomatillo-Green Chili Salsa (Medium), Roaste... 8.49 \n", + "4201 [Fresh Tomato Salsa, [Fajita Vegetables, Black... 11.25 \n", + "1884 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "455 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "3223 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "2223 [Roasted Chili Corn Salsa, Fajita Vegetables] 8.75 \n", + "2269 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 8.75 \n", + "4541 [Tomatillo Green Chili Salsa, [Fajita Vegetabl... 8.75 \n", + "3293 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 8.75 \n", + "186 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "960 [Fresh Tomato Salsa, [Fajita Vegetables, Lettu... 8.75 \n", + "1316 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 8.75 \n", + "2156 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "4261 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "295 [Fresh Tomato Salsa, [Fajita Vegetables, Lettu... 11.25 \n", + "4573 [Fresh Tomato Salsa, [Fajita Vegetables, Pinto... 8.75 \n", + "2683 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 8.75 \n", + "496 [Fresh Tomato Salsa, [Rice, Lettuce, Guacamole... 11.25 \n", + "4109 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "738 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "3889 [Fresh Tomato Salsa (Mild), [Black Beans, Rice... 16.98 \n", + "2384 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 8.75 \n", + "781 [Fresh Tomato Salsa, [Black Beans, Cheese, Sou... 8.75 \n", + "2851 [Roasted Chili Corn Salsa (Medium), [Black Bea... 8.49 \n", + "1699 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "1395 [Fresh Tomato Salsa (Mild), [Pinto Beans, Rice... 8.49 \n", + "\n", + "[4622 rows x 5 columns]" ] }, - "execution_count": 156, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -552,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 165, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -593,7 +987,7 @@ "3598 44.25 " ] }, - "execution_count": 165, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -611,7 +1005,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -622,7 +1016,7 @@ "18" ] }, - "execution_count": 174, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -642,7 +1036,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -653,7 +1047,7 @@ "20" ] }, - "execution_count": 5, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } diff --git a/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb index 74db3b386..fff0f5952 100644 --- a/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Filtering and Sorting Data" + "# Ex1 - Filtering and Sorting Data" ] }, { @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "collapsed": false }, @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "collapsed": false }, @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 168, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -66,15 +66,28 @@ { "data": { "text/plain": [ - "1130" + "12" ] }, - "execution_count": 168, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "# clean the item_price column and transform it in a float\n", + "\n", + "\n", + "# reassign the column with the cleaned prices\n", + "\n", + "\n", + "# delete the duplicates in item_name and quantity\n", + "\n", + "\n", + "# select only the products with quantity equals to 1\n", + "\n", + "\n" + ] }, { "cell_type": "markdown", @@ -86,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -204,309 +217,717 @@ " Carnitas Salad\n", " 8.99\n", " \n", + " \n", + "\n", + "" + ], + "text/plain": [ + " item_name item_price\n", + "606 Steak Salad Bowl 11.89\n", + "1229 Barbacoa Salad Bowl 11.89\n", + "1132 Carnitas Salad Bowl 11.89\n", + "7 Steak Burrito 11.75\n", + "168 Barbacoa Crispy Tacos 11.75\n", + "39 Barbacoa Bowl 11.75\n", + "738 Veggie Soft Tacos 11.25\n", + "186 Veggie Salad Bowl 11.25\n", + "62 Veggie Bowl 11.25\n", + "57 Veggie Burrito 11.25\n", + "250 Chicken Salad 10.98\n", + "5 Chicken Bowl 10.98\n", + "8 Steak Soft Tacos 9.25\n", + "554 Carnitas Crispy Tacos 9.25\n", + "237 Carnitas Soft Tacos 9.25\n", + "56 Barbacoa Soft Tacos 9.25\n", + "92 Steak Crispy Tacos 9.25\n", + "664 Steak Salad 8.99\n", + "54 Steak Bowl 8.99\n", + "3750 Carnitas Salad 8.99" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# delete the duplicates in item_name and quantity\n", + "\n", + "\n", + "# select only the products with quantity equals to 1\n", + "\n", + "\n", + "# select only the item_name and item_price columns\n", + "\n", + "\n", + "# sort the values from the most to less expensive\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6. Sort by the name of the item" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "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", "
order_idquantityitem_namechoice_descriptionitem_price
21Barbacoa Burrito8.993389136026 Pack Soft Drink[Diet Coke]12.98
27Carnitas Burrito8.9934114816 Pack Soft Drink[Diet Coke]6.49
33Carnitas Bowl8.99184974916 Pack Soft Drink[Coke]6.49
11Chicken Crispy Tacos8.75186075416 Pack Soft Drink[Diet Coke]6.49
12Chicken Soft Tacos8.752713107616 Pack Soft Drink[Coke]6.49
44Chicken Salad Bowl8.753422137316 Pack Soft Drink[Coke]6.49
55323016 Pack Soft Drink[Diet Coke]6.49
1653Veggie Crispy Tacos191677416 Pack Soft Drink[Diet Coke]6.49
192277616 Pack Soft Drink[Coke]6.49
193778416 Pack Soft Drink[Diet Coke]6.49
3836153716 Pack Soft Drink[Coke]6.49
29812916 Pack Soft Drink[Sprite]6.49
197679816 Pack Soft Drink[Diet Coke]6.49
116748116 Pack Soft Drink[Coke]6.49
3875155416 Pack Soft Drink[Diet Coke]6.49
112446516 Pack Soft Drink[Coke]6.49
3886155816 Pack Soft Drink[Diet Coke]6.49
210884916 Pack Soft Drink[Coke]6.49
3010119616 Pack Soft Drink[Diet Coke]6.49
4535180316 Pack Soft Drink[Lemonade]6.49
4169166416 Pack Soft Drink[Diet Coke]6.49
4174166616 Pack Soft Drink[Coke]6.49
4527180016 Pack Soft Drink[Diet Coke]6.49
4522179816 Pack Soft Drink[Diet Coke]6.49
3806152516 Pack Soft Drink[Sprite]6.49
238994916 Pack Soft Drink[Coke]6.49
3132124816 Pack Soft Drink[Diet Coke]6.49
3141125316 Pack Soft Drink[Lemonade]6.49
63926416 Pack Soft Drink[Diet Coke]6.49
102642216 Pack Soft Drink[Sprite]6.49
..................
299611921Veggie Salad[Roasted Chili Corn Salsa (Medium), [Black Bea...8.49
16Chicken Burrito316312631Veggie Salad[[Fresh Tomato Salsa (Mild), Roasted Chili Cor...8.49
408416351Veggie Salad[[Fresh Tomato Salsa (Mild), Roasted Chili Cor...8.49
16946861Veggie Salad[[Fresh Tomato Salsa (Mild), Roasted Chili Cor...8.49
1414Salad7.40275610941Veggie Salad[[Tomatillo-Green Chili Salsa (Medium), Roaste...8.49
510Burrito7.40420116771Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Black...11.25
520Crispy Tacos7.4018847601Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
673Bowl7.404551951Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
2986 Pack Soft Drink6.49322312891Veggie Salad Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
10Chips and Guacamole4.4522238961Veggie Salad Bowl[Roasted Chili Corn Salsa, Fajita Vegetables]8.75
1Izze3.3922699131Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...8.75
2Nantucket Nectar3.39454118051Veggie Salad Bowl[Tomatillo Green Chili Salsa, [Fajita Vegetabl...8.75
674Chips and Mild Fresh Tomato Salsa3.00329313211Veggie Salad Bowl[Fresh Tomato Salsa, [Rice, Black Beans, Chees...8.75
111Chips and Tomatillo Red Chili Salsa2.95186831Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
233Chips and Roasted Chili Corn Salsa2.959603941Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Lettu...8.75
38Chips and Tomatillo Green Chili Salsa2.9513165361Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...8.75
3Chips and Tomatillo-Green Chili Salsa2.3921568691Veggie Salad Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
300Chips and Tomatillo-Red Chili Salsa2.39426117001Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
191Chips and Roasted Chili-Corn Salsa2.392951281Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Lettu...11.25
0Chips and Fresh Tomato Salsa2.39457318181Veggie Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Pinto...8.75
268310661Veggie Salad Bowl[Roasted Chili Corn Salsa, [Fajita Vegetables,...8.75
4962071Veggie Salad Bowl[Fresh Tomato Salsa, [Rice, Lettuce, Guacamole...11.25
40Chips2.15410916461Veggie Salad Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
7383041Veggie Soft Tacos[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
6Side of Chips1.69388915592Veggie Soft Tacos[Fresh Tomato Salsa (Mild), [Black Beans, Rice...16.98
23849481Veggie Soft Tacos[Roasted Chili Corn Salsa, [Fajita Vegetables,...8.75
7813221Veggie Soft Tacos[Fresh Tomato Salsa, [Black Beans, Cheese, Sou...8.75
263Canned Soft Drink1.25285111321Veggie Soft Tacos[Roasted Chili Corn Salsa (Medium), [Black Bea...8.49
28Canned Soda1.0916996881Veggie Soft Tacos[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
34Bottled Water1.0913955671Veggie Soft Tacos[Fresh Tomato Salsa (Mild), [Pinto Beans, Rice...8.49
\n", + "

4622 rows × 5 columns

\n", "
" ], "text/plain": [ - " item_name item_price\n", - "606 Steak Salad Bowl 11.89\n", - "1229 Barbacoa Salad Bowl 11.89\n", - "1132 Carnitas Salad Bowl 11.89\n", - "7 Steak Burrito 11.75\n", - "168 Barbacoa Crispy Tacos 11.75\n", - "39 Barbacoa Bowl 11.75\n", - "738 Veggie Soft Tacos 11.25\n", - "186 Veggie Salad Bowl 11.25\n", - "62 Veggie Bowl 11.25\n", - "57 Veggie Burrito 11.25\n", - "250 Chicken Salad 10.98\n", - "5 Chicken Bowl 10.98\n", - "8 Steak Soft Tacos 9.25\n", - "554 Carnitas Crispy Tacos 9.25\n", - "237 Carnitas Soft Tacos 9.25\n", - "56 Barbacoa Soft Tacos 9.25\n", - "92 Steak Crispy Tacos 9.25\n", - "664 Steak Salad 8.99\n", - "54 Steak Bowl 8.99\n", - "3750 Carnitas Salad 8.99\n", - "21 Barbacoa Burrito 8.99\n", - "27 Carnitas Burrito 8.99\n", - "33 Carnitas Bowl 8.99\n", - "11 Chicken Crispy Tacos 8.75\n", - "12 Chicken Soft Tacos 8.75\n", - "44 Chicken Salad Bowl 8.75\n", - "1653 Veggie Crispy Tacos 8.49\n", - "16 Chicken Burrito 8.49\n", - "1694 Veggie Salad 8.49\n", - "1414 Salad 7.40\n", - "510 Burrito 7.40\n", - "520 Crispy Tacos 7.40\n", - "673 Bowl 7.40\n", - "298 6 Pack Soft Drink 6.49\n", - "10 Chips and Guacamole 4.45\n", - "1 Izze 3.39\n", - "2 Nantucket Nectar 3.39\n", - "674 Chips and Mild Fresh Tomato Salsa 3.00\n", - "111 Chips and Tomatillo Red Chili Salsa 2.95\n", - "233 Chips and Roasted Chili Corn Salsa 2.95\n", - "38 Chips and Tomatillo Green Chili Salsa 2.95\n", - "3 Chips and Tomatillo-Green Chili Salsa 2.39\n", - "300 Chips and Tomatillo-Red Chili Salsa 2.39\n", - "191 Chips and Roasted Chili-Corn Salsa 2.39\n", - "0 Chips and Fresh Tomato Salsa 2.39\n", - "40 Chips 2.15\n", - "6 Side of Chips 1.69\n", - "263 Canned Soft Drink 1.25\n", - "28 Canned Soda 1.09\n", - "34 Bottled Water 1.09" + " order_id quantity item_name \\\n", + "3389 1360 2 6 Pack Soft Drink \n", + "341 148 1 6 Pack Soft Drink \n", + "1849 749 1 6 Pack Soft Drink \n", + "1860 754 1 6 Pack Soft Drink \n", + "2713 1076 1 6 Pack Soft Drink \n", + "3422 1373 1 6 Pack Soft Drink \n", + "553 230 1 6 Pack Soft Drink \n", + "1916 774 1 6 Pack Soft Drink \n", + "1922 776 1 6 Pack Soft Drink \n", + "1937 784 1 6 Pack Soft Drink \n", + "3836 1537 1 6 Pack Soft Drink \n", + "298 129 1 6 Pack Soft Drink \n", + "1976 798 1 6 Pack Soft Drink \n", + "1167 481 1 6 Pack Soft Drink \n", + "3875 1554 1 6 Pack Soft Drink \n", + "1124 465 1 6 Pack Soft Drink \n", + "3886 1558 1 6 Pack Soft Drink \n", + "2108 849 1 6 Pack Soft Drink \n", + "3010 1196 1 6 Pack Soft Drink \n", + "4535 1803 1 6 Pack Soft Drink \n", + "4169 1664 1 6 Pack Soft Drink \n", + "4174 1666 1 6 Pack Soft Drink \n", + "4527 1800 1 6 Pack Soft Drink \n", + "4522 1798 1 6 Pack Soft Drink \n", + "3806 1525 1 6 Pack Soft Drink \n", + "2389 949 1 6 Pack Soft Drink \n", + "3132 1248 1 6 Pack Soft Drink \n", + "3141 1253 1 6 Pack Soft Drink \n", + "639 264 1 6 Pack Soft Drink \n", + "1026 422 1 6 Pack Soft Drink \n", + "... ... ... ... \n", + "2996 1192 1 Veggie Salad \n", + "3163 1263 1 Veggie Salad \n", + "4084 1635 1 Veggie Salad \n", + "1694 686 1 Veggie Salad \n", + "2756 1094 1 Veggie Salad \n", + "4201 1677 1 Veggie Salad Bowl \n", + "1884 760 1 Veggie Salad Bowl \n", + "455 195 1 Veggie Salad Bowl \n", + "3223 1289 1 Veggie Salad Bowl \n", + "2223 896 1 Veggie Salad Bowl \n", + "2269 913 1 Veggie Salad Bowl \n", + "4541 1805 1 Veggie Salad Bowl \n", + "3293 1321 1 Veggie Salad Bowl \n", + "186 83 1 Veggie Salad Bowl \n", + "960 394 1 Veggie Salad Bowl \n", + "1316 536 1 Veggie Salad Bowl \n", + "2156 869 1 Veggie Salad Bowl \n", + "4261 1700 1 Veggie Salad Bowl \n", + "295 128 1 Veggie Salad Bowl \n", + "4573 1818 1 Veggie Salad Bowl \n", + "2683 1066 1 Veggie Salad Bowl \n", + "496 207 1 Veggie Salad Bowl \n", + "4109 1646 1 Veggie Salad Bowl \n", + "738 304 1 Veggie Soft Tacos \n", + "3889 1559 2 Veggie Soft Tacos \n", + "2384 948 1 Veggie Soft Tacos \n", + "781 322 1 Veggie Soft Tacos \n", + "2851 1132 1 Veggie Soft Tacos \n", + "1699 688 1 Veggie Soft Tacos \n", + "1395 567 1 Veggie Soft Tacos \n", + "\n", + " choice_description item_price \n", + "3389 [Diet Coke] 12.98 \n", + "341 [Diet Coke] 6.49 \n", + "1849 [Coke] 6.49 \n", + "1860 [Diet Coke] 6.49 \n", + "2713 [Coke] 6.49 \n", + "3422 [Coke] 6.49 \n", + "553 [Diet Coke] 6.49 \n", + "1916 [Diet Coke] 6.49 \n", + "1922 [Coke] 6.49 \n", + "1937 [Diet Coke] 6.49 \n", + "3836 [Coke] 6.49 \n", + "298 [Sprite] 6.49 \n", + "1976 [Diet Coke] 6.49 \n", + "1167 [Coke] 6.49 \n", + "3875 [Diet Coke] 6.49 \n", + "1124 [Coke] 6.49 \n", + "3886 [Diet Coke] 6.49 \n", + "2108 [Coke] 6.49 \n", + "3010 [Diet Coke] 6.49 \n", + "4535 [Lemonade] 6.49 \n", + "4169 [Diet Coke] 6.49 \n", + "4174 [Coke] 6.49 \n", + "4527 [Diet Coke] 6.49 \n", + "4522 [Diet Coke] 6.49 \n", + "3806 [Sprite] 6.49 \n", + "2389 [Coke] 6.49 \n", + "3132 [Diet Coke] 6.49 \n", + "3141 [Lemonade] 6.49 \n", + "639 [Diet Coke] 6.49 \n", + "1026 [Sprite] 6.49 \n", + "... ... ... \n", + "2996 [Roasted Chili Corn Salsa (Medium), [Black Bea... 8.49 \n", + "3163 [[Fresh Tomato Salsa (Mild), Roasted Chili Cor... 8.49 \n", + "4084 [[Fresh Tomato Salsa (Mild), Roasted Chili Cor... 8.49 \n", + "1694 [[Fresh Tomato Salsa (Mild), Roasted Chili Cor... 8.49 \n", + "2756 [[Tomatillo-Green Chili Salsa (Medium), Roaste... 8.49 \n", + "4201 [Fresh Tomato Salsa, [Fajita Vegetables, Black... 11.25 \n", + "1884 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "455 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "3223 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "2223 [Roasted Chili Corn Salsa, Fajita Vegetables] 8.75 \n", + "2269 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 8.75 \n", + "4541 [Tomatillo Green Chili Salsa, [Fajita Vegetabl... 8.75 \n", + "3293 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 8.75 \n", + "186 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "960 [Fresh Tomato Salsa, [Fajita Vegetables, Lettu... 8.75 \n", + "1316 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 8.75 \n", + "2156 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "4261 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "295 [Fresh Tomato Salsa, [Fajita Vegetables, Lettu... 11.25 \n", + "4573 [Fresh Tomato Salsa, [Fajita Vegetables, Pinto... 8.75 \n", + "2683 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 8.75 \n", + "496 [Fresh Tomato Salsa, [Rice, Lettuce, Guacamole... 11.25 \n", + "4109 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "738 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "3889 [Fresh Tomato Salsa (Mild), [Black Beans, Rice... 16.98 \n", + "2384 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 8.75 \n", + "781 [Fresh Tomato Salsa, [Black Beans, Cheese, Sou... 8.75 \n", + "2851 [Roasted Chili Corn Salsa (Medium), [Black Bea... 8.49 \n", + "1699 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "1395 [Fresh Tomato Salsa (Mild), [Pinto Beans, Rice... 8.49 \n", + "\n", + "[4622 rows x 5 columns]" ] }, - "execution_count": 176, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, "source": [ - "### Step 6. Sort by the name of the item" + "\n", + "\n", + "# OR\n", + "\n" ] }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "3389 6 Pack Soft Drink\n", - "341 6 Pack Soft Drink\n", - "1849 6 Pack Soft Drink\n", - "1860 6 Pack Soft Drink\n", - "2713 6 Pack Soft Drink\n", - "3422 6 Pack Soft Drink\n", - "553 6 Pack Soft Drink\n", - "1916 6 Pack Soft Drink\n", - "1922 6 Pack Soft Drink\n", - "1937 6 Pack Soft Drink\n", - "3836 6 Pack Soft Drink\n", - "298 6 Pack Soft Drink\n", - "1976 6 Pack Soft Drink\n", - "1167 6 Pack Soft Drink\n", - "3875 6 Pack Soft Drink\n", - "1124 6 Pack Soft Drink\n", - "3886 6 Pack Soft Drink\n", - "2108 6 Pack Soft Drink\n", - "3010 6 Pack Soft Drink\n", - "4535 6 Pack Soft Drink\n", - "4169 6 Pack Soft Drink\n", - "4174 6 Pack Soft Drink\n", - "4527 6 Pack Soft Drink\n", - "4522 6 Pack Soft Drink\n", - "3806 6 Pack Soft Drink\n", - "2389 6 Pack Soft Drink\n", - "3132 6 Pack Soft Drink\n", - "3141 6 Pack Soft Drink\n", - "639 6 Pack Soft Drink\n", - "1026 6 Pack Soft Drink\n", - " ... \n", - "2996 Veggie Salad\n", - "3163 Veggie Salad\n", - "4084 Veggie Salad\n", - "1694 Veggie Salad\n", - "2756 Veggie Salad\n", - "4201 Veggie Salad Bowl\n", - "1884 Veggie Salad Bowl\n", - "455 Veggie Salad Bowl\n", - "3223 Veggie Salad Bowl\n", - "2223 Veggie Salad Bowl\n", - "2269 Veggie Salad Bowl\n", - "4541 Veggie Salad Bowl\n", - "3293 Veggie Salad Bowl\n", - "186 Veggie Salad Bowl\n", - "960 Veggie Salad Bowl\n", - "1316 Veggie Salad Bowl\n", - "2156 Veggie Salad Bowl\n", - "4261 Veggie Salad Bowl\n", - "295 Veggie Salad Bowl\n", - "4573 Veggie Salad Bowl\n", - "2683 Veggie Salad Bowl\n", - "496 Veggie Salad Bowl\n", - "4109 Veggie Salad Bowl\n", - "738 Veggie Soft Tacos\n", - "3889 Veggie Soft Tacos\n", - "2384 Veggie Soft Tacos\n", - "781 Veggie Soft Tacos\n", - "2851 Veggie Soft Tacos\n", - "1699 Veggie Soft Tacos\n", - "1395 Veggie Soft Tacos\n", - "Name: item_name, dtype: object" - ] - }, - "execution_count": 156, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, @@ -516,7 +937,7 @@ }, { "cell_type": "code", - "execution_count": 165, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -557,7 +978,7 @@ "3598 44.25 " ] }, - "execution_count": 165, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -573,7 +994,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -584,7 +1005,7 @@ "18" ] }, - "execution_count": 174, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -600,7 +1021,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -611,7 +1032,7 @@ "20" ] }, - "execution_count": 5, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -620,8 +1041,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -635,7 +1057,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, From 4afecb334df3959810f27b32d1997cd25613c6c7 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 11:55:50 +0200 Subject: [PATCH 46/92] changed --- .DS_Store | Bin 8196 -> 10244 bytes .../Exercises_with_solutions.ipynb | 79 ++++++++---------- 2 files changed, 33 insertions(+), 46 deletions(-) diff --git a/.DS_Store b/.DS_Store index fb82229e042b9d31e096108d8281665772eb9ea6..939ff0ba5cbf9eac9fe61e51b1804e0cb413f6d9 100644 GIT binary patch literal 10244 zcmeI1Yitx%6vxjg1@2rZomR9=*QKkafKa3@rIn}K7f=d9Y@sb8%WQXqiQC<>Gur~C zrivOh#&@EiMnn8!AR#d!F~$VnVl)bo_=*~%UyPrOMiXOvoO|!=+Q$|#s2DS|nK^S` zb7#){@A=KW3jo-dj#UGM0D#dhtUjF%IW|!)_HkRDm&3^-wFj`krJoH6*fp-UpW%DJ z_kiyK-vhn}d=LB=JV4AA8=I!AfAl@zd%*WV)&n9wglHEw?Ac*uW$2)ToC1)|r);^= zIn4uPn~-P2o*hpw}~cGZd7)Q@fC? z4j5L}Kl&c1}u^qFh%Jxn>5laprv71gU+clPevKX_p1mP5)9=*1E!9OIY67wVL_)8C|= zlJ`)?DIaB=qVZ|Qx>nv6(Tn@(SvU2$b~52?wNeh*h+gQBe_DHziOnfXly~+d^aZn{=OJl<~ax1285+Utt5ZB8=fHpz++T~9mK^%m8$`>kfG?R436IZ;hV z?dbGNgICU7ShaNd>ZY>=GYWNH%x8A?+m0QLTU!R~n7g~%bb72r%uejuM($0x_D!~x z(u%NB>qwZr*4fKSX6Z($ars28m|o7h(ouU)+IIJ;KFW+MH2nnI9;4gYn2d=l#$<_6 zW>heCgUD}6S#*q@)n^nI%$slU4oBRv$uyZ$xrpyo|Nj!!p@Fc#3FXJotHlD^a>hAI~>fYept!MBP zI=P@BPwMuDd|r1hb(c1`@U<65-5*aEZ?~xUl9`vzE}y@srha8O`|8KM>yet1Qd3%z z8p~)%zVOkaCGi`j0Un%4{98z()?Ow?i$3+NL3%0+m6qy4Y)mHSR8TUH1_KiV$>0l0 zsiw*FNitcwm{&8>vp!js*77=y6tCy2(q()FBVp@PxIM;!OgXl)9DCHCe|FT$* zz)^Ss-XNKtfe+ww_zJ#-pAc~>7GVj_!T?^5vvD3?g$uC~7hxS^mp7G{Q*%%fT&=HMKG&II9k15qm$aBH_KYi{I%ziZU+#{JCXkFjN|DmXs1#}L0k7D+<%@SWl#hi~| z^H^+WVv`JCMR}VjLKLXD6_}`Mme<5?#Zq1t$iZv@=RjE?7qj{NzycA;WH6OD=8O1Z z5xrzgl{tYLUMs?zinS`Mo-Y$IEfaH9=1RU=#?Wl^R@n`Krd-$-PuEfw2%H1kS!!z( z3r1sm-w13UhZAs;u>B6a2d5>rzkqKD+dsoE@aqKFUQV%amBjW2ybd=>Z12FGXi9AF zp*ZMDY~P7@<30GWgf>M$JdV#3vR}p5@O69_-^WjtjI%Luqe^Fv_}O{NI0NS$xnvw{ zS+n*c$#^`R8?vwW?}f91@I+eIrwTeN{Fa4+K@ZMigv_a+ diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb index 331fcfeba..71299d66b 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -51,7 +51,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "//anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (0,3,5,27,36) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "//anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py:2717: DtypeWarning: Columns (0,3,5,19,20,24,25,26,27,28,36,37,38,39,48) have mixed types. Specify dtype option on import or set low_memory=False.\n", " interactivity=interactivity, compiler=compiler, result=result)\n" ] } @@ -69,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -78,19 +78,6 @@ "data": { "text/html": [ "
\n", - "\n", "\n", " \n", " \n", @@ -297,7 +284,7 @@ "[5 rows x 163 columns]" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -315,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -326,7 +313,7 @@ "(356027, 163)" ] }, - "execution_count": 7, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -337,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -348,7 +335,7 @@ "356027" ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -366,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -391,7 +378,7 @@ "\n", "#OR\n", "\n", - "food.info() #Columns: 159 entries" + "food.info() #Columns: 163 entries" ] }, { @@ -403,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -411,19 +398,19 @@ { "data": { "text/plain": [ - "Index(['code', 'url', 'creator', 'created_t', 'created_datetime',\n", - " 'last_modified_t', 'last_modified_datetime', 'product_name',\n", - " 'generic_name', 'quantity',\n", + "Index([u'code', u'url', u'creator', u'created_t', u'created_datetime',\n", + " u'last_modified_t', u'last_modified_datetime', u'product_name',\n", + " u'generic_name', u'quantity',\n", " ...\n", - " 'fruits-vegetables-nuts_100g', 'fruits-vegetables-nuts-estimate_100g',\n", - " 'collagen-meat-protein-ratio_100g', 'cocoa_100g', 'chlorophyl_100g',\n", - " 'carbon-footprint_100g', 'nutrition-score-fr_100g',\n", - " 'nutrition-score-uk_100g', 'glycemic-index_100g',\n", - " 'water-hardness_100g'],\n", + " u'fruits-vegetables-nuts_100g', u'fruits-vegetables-nuts-estimate_100g',\n", + " u'collagen-meat-protein-ratio_100g', u'cocoa_100g', u'chlorophyl_100g',\n", + " u'carbon-footprint_100g', u'nutrition-score-fr_100g',\n", + " u'nutrition-score-uk_100g', u'glycemic-index_100g',\n", + " u'water-hardness_100g'],\n", " dtype='object', length=163)" ] }, - "execution_count": 11, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -441,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -452,7 +439,7 @@ "'-glucose_100g'" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -470,7 +457,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -481,7 +468,7 @@ "dtype('float64')" ] }, - "execution_count": 15, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -499,7 +486,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -510,7 +497,7 @@ "RangeIndex(start=0, stop=356027, step=1)" ] }, - "execution_count": 16, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -528,7 +515,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -539,7 +526,7 @@ "'Lotus Organic Brown Jasmine Rice'" ] }, - "execution_count": 17, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -552,21 +539,21 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python [conda root]", "language": "python", - "name": "python3" + "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.4" + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, From ad8dc3c1de07e4ba5ad354fda9814e956ee01314 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 12:01:44 +0200 Subject: [PATCH 47/92] fix occupations 18 --- .../Occupation/Exercise_with_Solution.ipynb | 36 +++++----- .../Occupation/Solutions.ipynb | 66 ++++++++++--------- 2 files changed, 55 insertions(+), 47 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb index c5bd0b238..ec0c4c520 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb @@ -701,7 +701,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -712,7 +712,7 @@ "21" ] }, - "execution_count": 14, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -730,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -746,7 +746,7 @@ "Name: occupation, dtype: int64" ] }, - "execution_count": 15, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -764,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -829,7 +829,7 @@ "max 73.000000" ] }, - "execution_count": 16, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -847,7 +847,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": { "collapsed": false, "scrolled": true @@ -964,7 +964,7 @@ "max 73.000000 NaN NaN NaN" ] }, - "execution_count": 17, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -982,7 +982,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -997,7 +997,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 18, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1015,7 +1015,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1026,7 +1026,7 @@ "34.0" ] }, - "execution_count": 19, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1044,7 +1044,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -1052,17 +1052,21 @@ { "data": { "text/plain": [ - "7 1\n", + "11 1\n", + "10 1\n", + "73 1\n", + "66 1\n", + "7 1\n", "Name: age, dtype: int64" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "users.age.value_counts().tail(1) #7 years, only 1 occurrence" + "users.age.value_counts().tail() #7, 10, 11, 66 and 73 years -> only 1 occurrence" ] } ], diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb index 73fa4163e..fe7ef3fa8 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": { "collapsed": false, "scrolled": true @@ -295,7 +295,7 @@ "25 39 M engineer 55107" ] }, - "execution_count": 6, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -311,7 +311,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true @@ -428,7 +428,7 @@ "943 22 M student 77841" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -471,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -482,7 +482,7 @@ "4" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -498,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -509,7 +509,7 @@ "Index([u'age', u'gender', u'occupation', u'zip_code'], dtype='object')" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -525,7 +525,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -539,7 +539,7 @@ " dtype='int64', name=u'user_id', length=943)" ] }, - "execution_count": 13, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -555,7 +555,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -570,7 +570,7 @@ "dtype: object" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -586,7 +586,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -659,7 +659,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 17, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -675,7 +675,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -686,7 +686,7 @@ "21" ] }, - "execution_count": 20, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -702,7 +702,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -718,7 +718,7 @@ "Name: occupation, dtype: int64" ] }, - "execution_count": 33, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -734,7 +734,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -799,7 +799,7 @@ "max 73.000000" ] }, - "execution_count": 21, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -815,7 +815,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 14, "metadata": { "collapsed": false, "scrolled": true @@ -932,7 +932,7 @@ "max 73.000000 NaN NaN NaN" ] }, - "execution_count": 22, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -948,7 +948,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -963,7 +963,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 34, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -979,7 +979,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -990,7 +990,7 @@ "34.0" ] }, - "execution_count": 38, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1006,7 +1006,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -1014,11 +1014,15 @@ { "data": { "text/plain": [ - "7 1\n", + "11 1\n", + "10 1\n", + "73 1\n", + "66 1\n", + "7 1\n", "Name: age, dtype: int64" ] }, - "execution_count": 53, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } From caa25f03954e1bd22b3f78700601c802e1c0c343 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 12:14:45 +0200 Subject: [PATCH 48/92] fix occupations again --- .../Occupation/Exercise_with_Solution.ipynb | 68 +++++++++--------- .../Occupation/Solutions.ipynb | 71 ++++++++++--------- 2 files changed, 72 insertions(+), 67 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb index ec0c4c520..ce670abbd 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true @@ -300,7 +300,7 @@ "25 39 M engineer 55107" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -318,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true @@ -435,7 +435,7 @@ "943 22 M student 77841" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -453,7 +453,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -464,7 +464,7 @@ "943" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -482,7 +482,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -493,7 +493,7 @@ "4" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -511,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -522,7 +522,7 @@ "Index([u'age', u'gender', u'occupation', u'zip_code'], dtype='object')" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -540,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -554,7 +554,7 @@ " dtype='int64', name=u'user_id', length=943)" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -573,7 +573,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -588,7 +588,7 @@ "dtype: object" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -606,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -679,7 +679,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -701,7 +701,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -712,7 +712,7 @@ "21" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -730,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -746,7 +746,7 @@ "Name: occupation, dtype: int64" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -764,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -829,13 +829,13 @@ "max 73.000000" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "users.describe() #Notice is only the numeric column" + "users.describe() #Notice: By default, only the numeric columns are returned. " ] }, { @@ -847,7 +847,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true @@ -964,13 +964,13 @@ "max 73.000000 NaN NaN NaN" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "users.describe(include = \"all\") #Notice is only the numeric column" + "users.describe(include = \"all\") #Notice: By default, only the numeric columns are returned." ] }, { @@ -982,7 +982,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -997,7 +997,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1015,7 +1015,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1026,7 +1026,7 @@ "34.0" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1044,7 +1044,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1060,7 +1060,7 @@ "Name: age, dtype: int64" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb index fe7ef3fa8..44aec87b4 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true @@ -295,7 +295,7 @@ "25 39 M engineer 55107" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -311,7 +311,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true @@ -428,7 +428,7 @@ "943 22 M student 77841" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -444,7 +444,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -455,7 +455,7 @@ "943" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -471,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -482,7 +482,7 @@ "4" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -498,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -509,7 +509,7 @@ "Index([u'age', u'gender', u'occupation', u'zip_code'], dtype='object')" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -525,7 +525,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -539,7 +539,7 @@ " dtype='int64', name=u'user_id', length=943)" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -555,7 +555,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -570,7 +570,7 @@ "dtype: object" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -586,7 +586,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -659,12 +659,17 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "\n", + "\n", + "#OR\n", + "\n" + ] }, { "cell_type": "markdown", @@ -675,7 +680,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -686,7 +691,7 @@ "21" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -702,7 +707,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -718,7 +723,7 @@ "Name: occupation, dtype: int64" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -734,7 +739,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -799,7 +804,7 @@ "max 73.000000" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -815,7 +820,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true @@ -932,7 +937,7 @@ "max 73.000000 NaN NaN NaN" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -948,7 +953,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -963,7 +968,7 @@ "Name: occupation, dtype: object" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -979,7 +984,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -990,7 +995,7 @@ "34.0" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1006,7 +1011,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1022,7 +1027,7 @@ "Name: age, dtype: int64" ] }, - "execution_count": 19, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } From b455113c0c1dd72467fc816d4334c8044c53e8c0 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 12:20:52 +0200 Subject: [PATCH 49/92] fix fictional armies --- .../Exercise_with_solutions.ipynb | 83 +++++++++-------- .../Fictional Army/Solutions.ipynb | 91 +++++++++---------- 2 files changed, 86 insertions(+), 88 deletions(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb index 5e4a3cc82..279d939a4 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb @@ -40,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -70,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -305,7 +305,7 @@ "Georgia 1 3 " ] }, - "execution_count": 20, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -324,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -348,7 +348,7 @@ "Name: veterans, dtype: int64" ] }, - "execution_count": 12, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -366,7 +366,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -470,7 +470,7 @@ "Georgia 345 35" ] }, - "execution_count": 13, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -488,7 +488,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -501,7 +501,7 @@ " dtype='object')" ] }, - "execution_count": 16, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -519,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -567,7 +567,7 @@ "Alaska 523 987 24" ] }, - "execution_count": 24, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -586,7 +586,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -648,7 +648,7 @@ "Alaska 8 987 949" ] }, - "execution_count": 26, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -667,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -842,7 +842,7 @@ "Georgia 1 3 " ] }, - "execution_count": 28, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -860,7 +860,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -951,7 +951,7 @@ "Texas 1 31 " ] }, - "execution_count": 30, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -969,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1087,7 +1087,7 @@ "Georgia 1523 345 3" ] }, - "execution_count": 32, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1108,7 +1108,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -1269,7 +1269,7 @@ "Wyoming 0 3 " ] }, - "execution_count": 33, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1287,7 +1287,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -1434,7 +1434,7 @@ "Georgia 1 3 " ] }, - "execution_count": 35, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1452,7 +1452,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -1613,7 +1613,7 @@ "Georgia 1 3 " ] }, - "execution_count": 37, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1631,7 +1631,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1708,13 +1708,13 @@ "Texas 1 31 " ] }, - "execution_count": 38, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "army.loc[['Arizona', 'Texas'], :]" + "army.loc[['Arizona', 'Texas']]" ] }, { @@ -1726,7 +1726,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1734,10 +1734,12 @@ { "data": { "text/plain": [ - "523" + "origin\n", + "Arizona 523\n", + "Name: deaths, dtype: int64" ] }, - "execution_count": 41, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1747,7 +1749,7 @@ "\n", "#OR\n", "\n", - "army.loc[['Arizona'], [army.columns[2]]]" + "army.iloc[[0], army.columns.get_loc('deaths')]" ] }, { @@ -1759,7 +1761,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1767,10 +1769,12 @@ { "data": { "text/plain": [ - "25" + "origin\n", + "Texas 25\n", + "Name: deaths, dtype: int64" ] }, - "execution_count": 43, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1780,13 +1784,14 @@ "\n", "#OR\n", "\n", - "army.iloc[2, army.columns.get_loc('deaths')]\n" + "army.iloc[[2], army.columns.get_loc('deaths')]\n" ] } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -1800,7 +1805,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb index 77998800a..d90d2f5b9 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb @@ -38,24 +38,12 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], - "source": [ - "# Create an example dataframe about a fictional army\n", - "raw_data = {'regiment': ['Nighthawks', 'Nighthawks', 'Nighthawks', 'Nighthawks', 'Dragoons', 'Dragoons', 'Dragoons', 'Dragoons', 'Scouts', 'Scouts', 'Scouts', 'Scouts'],\n", - " 'company': ['1st', '1st', '2nd', '2nd', '1st', '1st', '2nd', '2nd','1st', '1st', '2nd', '2nd'],\n", - " 'deaths': [523, 52, 25, 616, 43, 234, 523, 62, 62, 73, 37, 35],\n", - " 'battles': [5, 42, 2, 2, 4, 7, 8, 3, 4, 7, 8, 9],\n", - " 'size': [1045, 957, 1099, 1400, 1592, 1006, 987, 849, 973, 1005, 1099, 1523],\n", - " 'veterans': [1, 5, 62, 26, 73, 37, 949, 48, 48, 435, 63, 345],\n", - " 'readiness': [1, 2, 3, 3, 2, 1, 2, 3, 2, 1, 2, 3],\n", - " 'armored': [1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1],\n", - " 'deserters': [4, 24, 31, 2, 3, 4, 24, 31, 2, 3, 2, 3],\n", - " 'origin': ['Arizona', 'California', 'Texas', 'Florida', 'Maine', 'Iowa', 'Alaska', 'Washington', 'Oregon', 'Wyoming', 'Louisana', 'Georgia']}" - ] + "source": [] }, { "cell_type": "markdown", @@ -68,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -84,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -301,7 +289,7 @@ "Georgia 1 3 " ] }, - "execution_count": 20, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -317,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -341,7 +329,7 @@ "Name: veterans, dtype: int64" ] }, - "execution_count": 12, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -357,7 +345,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -461,7 +449,7 @@ "Georgia 345 35" ] }, - "execution_count": 13, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -477,7 +465,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -490,7 +478,7 @@ " dtype='object')" ] }, - "execution_count": 16, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -506,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -554,7 +542,7 @@ "Alaska 523 987 24" ] }, - "execution_count": 24, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -570,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -632,7 +620,7 @@ "Alaska 8 987 949" ] }, - "execution_count": 26, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -648,7 +636,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -823,7 +811,7 @@ "Georgia 1 3 " ] }, - "execution_count": 28, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -839,7 +827,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -930,7 +918,7 @@ "Texas 1 31 " ] }, - "execution_count": 30, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -946,7 +934,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1064,7 +1052,7 @@ "Georgia 1523 345 3" ] }, - "execution_count": 32, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1080,7 +1068,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -1241,7 +1229,7 @@ "Wyoming 0 3 " ] }, - "execution_count": 33, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1257,7 +1245,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -1404,7 +1392,7 @@ "Georgia 1 3 " ] }, - "execution_count": 35, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1420,7 +1408,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -1581,7 +1569,7 @@ "Georgia 1 3 " ] }, - "execution_count": 37, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1597,7 +1585,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1674,7 +1662,7 @@ "Texas 1 31 " ] }, - "execution_count": 38, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1690,7 +1678,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1698,10 +1686,12 @@ { "data": { "text/plain": [ - "523" + "origin\n", + "Arizona 523\n", + "Name: deaths, dtype: int64" ] }, - "execution_count": 41, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1717,7 +1707,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1725,10 +1715,12 @@ { "data": { "text/plain": [ - "25" + "origin\n", + "Texas 25\n", + "Name: deaths, dtype: int64" ] }, - "execution_count": 43, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1737,8 +1729,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -1752,7 +1745,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, From 82085a7e6cca000cdf621c8a95e9d1d95260dad6 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 12:29:02 +0200 Subject: [PATCH 50/92] adjusts --- 10_Deleting/Wine/Exercises.ipynb | 19 +- .../Wine/Exercises_code_and_solutions.ipynb | 506 +++++++++--------- 10_Deleting/Wine/Solutions.ipynb | 463 +++++++++------- 3 files changed, 530 insertions(+), 458 deletions(-) diff --git a/10_Deleting/Wine/Exercises.ipynb b/10_Deleting/Wine/Exercises.ipynb index 09cc35c57..9bde6e972 100644 --- a/10_Deleting/Wine/Exercises.ipynb +++ b/10_Deleting/Wine/Exercises.ipynb @@ -176,7 +176,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 11. Set the rows of the random numbers in the column" + "### Step 11. Use random numbers you generated as an index and assign NaN value to each of cell." ] }, { @@ -208,7 +208,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 14. Print only the non-null values in alcohol" + "### Step 13. Delete the rows that contain missing values" ] }, { @@ -224,7 +224,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 13. Delete the rows that contain missing values" + "### Step 14. Print only the non-null values in alcohol" ] }, { @@ -236,6 +236,15 @@ "outputs": [], "source": [] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -271,7 +280,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -285,7 +294,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/10_Deleting/Wine/Exercises_code_and_solutions.ipynb b/10_Deleting/Wine/Exercises_code_and_solutions.ipynb index 8b5c913eb..74c5373c6 100644 --- a/10_Deleting/Wine/Exercises_code_and_solutions.ipynb +++ b/10_Deleting/Wine/Exercises_code_and_solutions.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -182,7 +182,7 @@ "4 1450 " ] }, - "execution_count": 86, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -203,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -289,7 +289,7 @@ "4 14.20 1.76 15.2 112 3.39 1.97 6.75" ] }, - "execution_count": 87, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -318,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -411,7 +411,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 88, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -430,7 +430,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -523,7 +523,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 89, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -542,7 +542,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -635,7 +635,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 90, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -654,7 +654,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -747,7 +747,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 91, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -769,7 +769,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -787,7 +787,7 @@ "dtype: int64" ] }, - "execution_count": 92, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -805,7 +805,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -813,10 +813,10 @@ { "data": { "text/plain": [ - "array([6, 6, 7, 4, 9, 4, 0, 1, 0, 8])" + "array([2, 3, 0, 5, 0, 9, 4, 0, 7, 2])" ] }, - "execution_count": 93, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -830,12 +830,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 11. Set the rows of the random numbers in the column" + "### Step 11. Use random numbers you generated as an index and assign NaN value to each of cell." ] }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -870,7 +870,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -880,7 +880,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -890,7 +890,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -910,7 +910,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -920,7 +920,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -940,7 +940,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -965,14 +965,14 @@ "text/plain": [ " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", "0 NaN 1.78 11.2 100.0 2.76 \n", - "1 NaN 2.36 18.6 101.0 3.24 \n", - "2 10.00 1.95 16.8 100.0 3.49 \n", - "3 13.24 2.59 21.0 100.0 2.69 \n", + "1 10.00 2.36 18.6 101.0 3.24 \n", + "2 NaN 1.95 16.8 100.0 3.49 \n", + "3 NaN 2.59 21.0 100.0 2.69 \n", "4 NaN 1.76 15.2 112.0 3.39 \n", - "5 14.39 1.87 14.6 96.0 2.52 \n", - "6 NaN 2.15 17.6 121.0 2.51 \n", + "5 NaN 1.87 14.6 96.0 2.52 \n", + "6 14.06 2.15 17.6 121.0 2.51 \n", "7 NaN 1.64 14.0 97.0 2.98 \n", - "8 NaN 1.35 16.0 98.0 3.15 \n", + "8 13.86 1.35 16.0 98.0 3.15 \n", "9 NaN 2.16 18.0 105.0 3.32 \n", "\n", " proanthocyanins hue \n", @@ -988,7 +988,7 @@ "9 2.38 5.75 " ] }, - "execution_count": 94, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -1007,7 +1007,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1025,7 +1025,7 @@ "dtype: int64" ] }, - "execution_count": 95, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1034,6 +1034,118 @@ "wine.isnull().sum()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 13. Delete the rows that contain missing values" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
1NaN10.002.3618.6101.0
210.00NaN1.9516.8100.0
313.24NaN2.5921.0100.0
514.39NaN1.8714.696.0
6NaN14.062.1517.6121.0
8NaN13.861.3516.098.0
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
alcoholmalic_acidalcalinity_of_ashmagnesiumflavanoidsproanthocyaninshue
110.002.3618.6101.03.242.815.68
614.062.1517.6121.02.511.255.05
813.861.3516.098.03.151.857.22
1014.121.4816.895.02.431.575.00
1113.751.7316.089.02.761.815.60
\n", + "
" + ], + "text/plain": [ + " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", + "1 10.00 2.36 18.6 101.0 3.24 \n", + "6 14.06 2.15 17.6 121.0 2.51 \n", + "8 13.86 1.35 16.0 98.0 3.15 \n", + "10 14.12 1.48 16.8 95.0 2.43 \n", + "11 13.75 1.73 16.0 89.0 2.76 \n", + "\n", + " proanthocyanins hue \n", + "1 2.81 5.68 \n", + "6 1.25 5.05 \n", + "8 1.85 7.22 \n", + "10 1.57 5.00 \n", + "11 1.81 5.60 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wine = wine.dropna(axis = 0, how = \"any\")\n", + "wine.head()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1043,79 +1155,80 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 14, "metadata": { + "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ - "0 False\n", - "1 False\n", - "2 True\n", - "3 False\n", - "4 False\n", - "5 False\n", - "6 False\n", - "7 False\n", - "8 True\n", - "9 True\n", - "10 True\n", - "11 True\n", - "12 True\n", - "13 True\n", - "14 True\n", - "15 True\n", - "16 True\n", - "17 True\n", - "18 True\n", - "19 True\n", - "20 True\n", - "21 True\n", - "22 True\n", - "23 True\n", - "24 True\n", - "25 True\n", - "26 True\n", - "27 True\n", - "28 True\n", - "29 True\n", - " ... \n", - "140 True\n", - "141 True\n", - "142 True\n", - "143 True\n", - "144 True\n", - "145 True\n", - "146 True\n", - "147 True\n", - "148 True\n", - "149 True\n", - "150 True\n", - "151 True\n", - "152 True\n", - "153 True\n", - "154 True\n", - "155 True\n", - "156 True\n", - "157 True\n", - "158 True\n", - "159 True\n", - "160 True\n", - "161 True\n", - "162 True\n", - "163 True\n", - "164 True\n", - "165 True\n", - "166 True\n", - "167 True\n", - "168 True\n", - "169 True\n", - "Name: alcohol, Length: 170, dtype: bool" + "1 True\n", + "6 True\n", + "8 True\n", + "10 True\n", + "11 True\n", + "12 True\n", + "13 True\n", + "14 True\n", + "15 True\n", + "16 True\n", + "17 True\n", + "18 True\n", + "19 True\n", + "20 True\n", + "21 True\n", + "22 True\n", + "23 True\n", + "24 True\n", + "25 True\n", + "26 True\n", + "27 True\n", + "28 True\n", + "29 True\n", + "30 True\n", + "31 True\n", + "32 True\n", + "33 True\n", + "34 True\n", + "35 True\n", + "36 True\n", + " ... \n", + "147 True\n", + "148 True\n", + "149 True\n", + "150 True\n", + "151 True\n", + "152 True\n", + "153 True\n", + "154 True\n", + "155 True\n", + "156 True\n", + "157 True\n", + "158 True\n", + "159 True\n", + "160 True\n", + "161 True\n", + "162 True\n", + "163 True\n", + "164 True\n", + "165 True\n", + "166 True\n", + "167 True\n", + "168 True\n", + "169 True\n", + "170 True\n", + "171 True\n", + "172 True\n", + "173 True\n", + "174 True\n", + "175 True\n", + "176 True\n", + "Name: alcohol, dtype: bool" ] }, - "execution_count": 20, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1127,17 +1240,18 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "metadata": { + "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ - "2 10.00\n", + "1 10.00\n", + "6 14.06\n", "8 13.86\n", - "9 14.10\n", "10 14.12\n", "11 13.75\n", "12 14.75\n", @@ -1196,10 +1310,10 @@ "174 13.27\n", "175 13.17\n", "176 14.13\n", - "Name: alcohol, Length: 170, dtype: float64" + "Name: alcohol, dtype: float64" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1208,129 +1322,6 @@ "wine.alcohol[mask]" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 13. Delete the rows that contain missing values" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "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", - "
alcoholmalic_acidalcalinity_of_ashmagnesiumflavanoidsproanthocyaninshue
210.001.9516.8100.03.492.187.80
313.242.5921.0100.02.691.824.32
514.391.8714.696.02.521.985.25
1014.121.4816.895.02.431.575.00
1113.751.7316.089.02.761.815.60
\n", - "
" - ], - "text/plain": [ - " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", - "2 10.00 1.95 16.8 100.0 3.49 \n", - "3 13.24 2.59 21.0 100.0 2.69 \n", - "5 14.39 1.87 14.6 96.0 2.52 \n", - "10 14.12 1.48 16.8 95.0 2.43 \n", - "11 13.75 1.73 16.0 89.0 2.76 \n", - "\n", - " proanthocyanins hue \n", - "2 2.18 7.80 \n", - "3 1.82 4.32 \n", - "5 1.98 5.25 \n", - "10 1.57 5.00 \n", - "11 1.81 5.60 " - ] - }, - "execution_count": 109, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wine = wine.dropna(axis = 0, how = \"any\")\n", - "wine.head()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -1340,7 +1331,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1366,32 +1357,32 @@ " \n", " 0\n", " 10.00\n", - " 1.95\n", - " 16.8\n", - " 100.0\n", - " 3.49\n", - " 2.18\n", - " 7.80\n", + " 2.36\n", + " 18.6\n", + " 101.0\n", + " 3.24\n", + " 2.81\n", + " 5.68\n", " \n", " \n", " 1\n", - " 13.24\n", - " 2.59\n", - " 21.0\n", - " 100.0\n", - " 2.69\n", - " 1.82\n", - " 4.32\n", + " 14.06\n", + " 2.15\n", + " 17.6\n", + " 121.0\n", + " 2.51\n", + " 1.25\n", + " 5.05\n", " \n", " \n", " 2\n", - " 14.39\n", - " 1.87\n", - " 14.6\n", - " 96.0\n", - " 2.52\n", - " 1.98\n", - " 5.25\n", + " 13.86\n", + " 1.35\n", + " 16.0\n", + " 98.0\n", + " 3.15\n", + " 1.85\n", + " 7.22\n", " \n", " \n", " 3\n", @@ -1419,21 +1410,21 @@ ], "text/plain": [ " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", - "0 10.00 1.95 16.8 100.0 3.49 \n", - "1 13.24 2.59 21.0 100.0 2.69 \n", - "2 14.39 1.87 14.6 96.0 2.52 \n", + "0 10.00 2.36 18.6 101.0 3.24 \n", + "1 14.06 2.15 17.6 121.0 2.51 \n", + "2 13.86 1.35 16.0 98.0 3.15 \n", "3 14.12 1.48 16.8 95.0 2.43 \n", "4 13.75 1.73 16.0 89.0 2.76 \n", "\n", " proanthocyanins hue \n", - "0 2.18 7.80 \n", - "1 1.82 4.32 \n", - "2 1.98 5.25 \n", + "0 2.81 5.68 \n", + "1 1.25 5.05 \n", + "2 1.85 7.22 \n", "3 1.57 5.00 \n", "4 1.81 5.60 " ] }, - "execution_count": 110, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1461,8 +1452,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -1476,7 +1468,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/10_Deleting/Wine/Solutions.ipynb b/10_Deleting/Wine/Solutions.ipynb index 0e76021c5..df9b41387 100644 --- a/10_Deleting/Wine/Solutions.ipynb +++ b/10_Deleting/Wine/Solutions.ipynb @@ -21,15 +21,12 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np" - ] + "source": [] }, { "cell_type": "markdown", @@ -47,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -182,7 +179,7 @@ "4 1450 " ] }, - "execution_count": 86, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -198,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -284,7 +281,7 @@ "4 14.20 1.76 15.2 112 3.39 1.97 6.75" ] }, - "execution_count": 87, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -309,7 +306,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -402,7 +399,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 88, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -418,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -511,7 +508,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 89, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -527,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -620,7 +617,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 90, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -636,7 +633,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -729,7 +726,7 @@ "4 1.97 6.75 " ] }, - "execution_count": 91, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -745,7 +742,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -763,7 +760,7 @@ "dtype: int64" ] }, - "execution_count": 92, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -779,7 +776,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -787,28 +784,26 @@ { "data": { "text/plain": [ - "array([6, 6, 7, 4, 9, 4, 0, 1, 0, 8])" + "array([2, 3, 0, 5, 0, 9, 4, 0, 7, 2])" ] }, - "execution_count": 93, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# the number will be randoms, so yours will be different" - ] + "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 11. Set the rows of the random numbers in the column" + "### Step 11. Use random numbers you generated as an index and assign NaN value to each of cell." ] }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -843,7 +838,7 @@ " \n", " \n", " 1\n", - " NaN\n", + " 10.00\n", " 2.36\n", " 18.6\n", " 101.0\n", @@ -853,7 +848,7 @@ " \n", " \n", " 2\n", - " 10.00\n", + " NaN\n", " 1.95\n", " 16.8\n", " 100.0\n", @@ -863,7 +858,7 @@ " \n", " \n", " 3\n", - " 13.24\n", + " NaN\n", " 2.59\n", " 21.0\n", " 100.0\n", @@ -883,7 +878,7 @@ " \n", " \n", " 5\n", - " 14.39\n", + " NaN\n", " 1.87\n", " 14.6\n", " 96.0\n", @@ -893,7 +888,7 @@ " \n", " \n", " 6\n", - " NaN\n", + " 14.06\n", " 2.15\n", " 17.6\n", " 121.0\n", @@ -913,7 +908,7 @@ " \n", " \n", " 8\n", - " NaN\n", + " 13.86\n", " 1.35\n", " 16.0\n", " 98.0\n", @@ -938,14 +933,14 @@ "text/plain": [ " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", "0 NaN 1.78 11.2 100.0 2.76 \n", - "1 NaN 2.36 18.6 101.0 3.24 \n", - "2 10.00 1.95 16.8 100.0 3.49 \n", - "3 13.24 2.59 21.0 100.0 2.69 \n", + "1 10.00 2.36 18.6 101.0 3.24 \n", + "2 NaN 1.95 16.8 100.0 3.49 \n", + "3 NaN 2.59 21.0 100.0 2.69 \n", "4 NaN 1.76 15.2 112.0 3.39 \n", - "5 14.39 1.87 14.6 96.0 2.52 \n", - "6 NaN 2.15 17.6 121.0 2.51 \n", + "5 NaN 1.87 14.6 96.0 2.52 \n", + "6 14.06 2.15 17.6 121.0 2.51 \n", "7 NaN 1.64 14.0 97.0 2.98 \n", - "8 NaN 1.35 16.0 98.0 3.15 \n", + "8 13.86 1.35 16.0 98.0 3.15 \n", "9 NaN 2.16 18.0 105.0 3.32 \n", "\n", " proanthocyanins hue \n", @@ -961,14 +956,12 @@ "9 2.38 5.75 " ] }, - "execution_count": 94, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# the number will be randoms, so yours will be different" - ] + "source": [] }, { "cell_type": "markdown", @@ -979,7 +972,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -997,15 +990,122 @@ "dtype: int64" ] }, - "execution_count": 95, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [ - "# the number will be randoms, so yours will be different" + "### Step 13. Delete the rows that contain missing values" ] }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "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", + "
alcoholmalic_acidalcalinity_of_ashmagnesiumflavanoidsproanthocyaninshue
110.002.3618.6101.03.242.815.68
614.062.1517.6121.02.511.255.05
813.861.3516.098.03.151.857.22
1014.121.4816.895.02.431.575.00
1113.751.7316.089.02.761.815.60
\n", + "
" + ], + "text/plain": [ + " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", + "1 10.00 2.36 18.6 101.0 3.24 \n", + "6 14.06 2.15 17.6 121.0 2.51 \n", + "8 13.86 1.35 16.0 98.0 3.15 \n", + "10 14.12 1.48 16.8 95.0 2.43 \n", + "11 13.75 1.73 16.0 89.0 2.76 \n", + "\n", + " proanthocyanins hue \n", + "1 2.81 5.68 \n", + "6 1.25 5.05 \n", + "8 1.85 7.22 \n", + "10 1.57 5.00 \n", + "11 1.81 5.60 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -1015,17 +1115,100 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 14, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1 True\n", + "6 True\n", + "8 True\n", + "10 True\n", + "11 True\n", + "12 True\n", + "13 True\n", + "14 True\n", + "15 True\n", + "16 True\n", + "17 True\n", + "18 True\n", + "19 True\n", + "20 True\n", + "21 True\n", + "22 True\n", + "23 True\n", + "24 True\n", + "25 True\n", + "26 True\n", + "27 True\n", + "28 True\n", + "29 True\n", + "30 True\n", + "31 True\n", + "32 True\n", + "33 True\n", + "34 True\n", + "35 True\n", + "36 True\n", + " ... \n", + "147 True\n", + "148 True\n", + "149 True\n", + "150 True\n", + "151 True\n", + "152 True\n", + "153 True\n", + "154 True\n", + "155 True\n", + "156 True\n", + "157 True\n", + "158 True\n", + "159 True\n", + "160 True\n", + "161 True\n", + "162 True\n", + "163 True\n", + "164 True\n", + "165 True\n", + "166 True\n", + "167 True\n", + "168 True\n", + "169 True\n", + "170 True\n", + "171 True\n", + "172 True\n", + "173 True\n", + "174 True\n", + "175 True\n", + "176 True\n", + "Name: alcohol, dtype: bool" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "scrolled": true }, "outputs": [ { "data": { "text/plain": [ - "2 10.00\n", - "3 13.24\n", - "5 14.39\n", + "1 10.00\n", + "6 14.06\n", + "8 13.86\n", "10 14.12\n", "11 13.75\n", "12 14.75\n", @@ -1087,125 +1270,12 @@ "Name: alcohol, dtype: float64" ] }, - "execution_count": 108, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# the number will be randoms, so yours will be different" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 13. Delete the rows that contain missing values" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "metadata": { - "collapsed": false - }, - "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", - "
alcoholmalic_acidalcalinity_of_ashmagnesiumflavanoidsproanthocyaninshue
210.001.9516.8100.03.492.187.80
313.242.5921.0100.02.691.824.32
514.391.8714.696.02.521.985.25
1014.121.4816.895.02.431.575.00
1113.751.7316.089.02.761.815.60
\n", - "
" - ], - "text/plain": [ - " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", - "2 10.00 1.95 16.8 100.0 3.49 \n", - "3 13.24 2.59 21.0 100.0 2.69 \n", - "5 14.39 1.87 14.6 96.0 2.52 \n", - "10 14.12 1.48 16.8 95.0 2.43 \n", - "11 13.75 1.73 16.0 89.0 2.76 \n", - "\n", - " proanthocyanins hue \n", - "2 2.18 7.80 \n", - "3 1.82 4.32 \n", - "5 1.98 5.25 \n", - "10 1.57 5.00 \n", - "11 1.81 5.60 " - ] - }, - "execution_count": 109, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# the number will be randoms, so yours will be different" - ] + "source": [] }, { "cell_type": "markdown", @@ -1216,7 +1286,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1242,32 +1312,32 @@ " \n", " 0\n", " 10.00\n", - " 1.95\n", - " 16.8\n", - " 100.0\n", - " 3.49\n", - " 2.18\n", - " 7.80\n", + " 2.36\n", + " 18.6\n", + " 101.0\n", + " 3.24\n", + " 2.81\n", + " 5.68\n", " \n", " \n", " 1\n", - " 13.24\n", - " 2.59\n", - " 21.0\n", - " 100.0\n", - " 2.69\n", - " 1.82\n", - " 4.32\n", + " 14.06\n", + " 2.15\n", + " 17.6\n", + " 121.0\n", + " 2.51\n", + " 1.25\n", + " 5.05\n", " \n", " \n", " 2\n", - " 14.39\n", - " 1.87\n", - " 14.6\n", - " 96.0\n", - " 2.52\n", - " 1.98\n", - " 5.25\n", + " 13.86\n", + " 1.35\n", + " 16.0\n", + " 98.0\n", + " 3.15\n", + " 1.85\n", + " 7.22\n", " \n", " \n", " 3\n", @@ -1295,21 +1365,21 @@ ], "text/plain": [ " alcohol malic_acid alcalinity_of_ash magnesium flavanoids \\\n", - "0 10.00 1.95 16.8 100.0 3.49 \n", - "1 13.24 2.59 21.0 100.0 2.69 \n", - "2 14.39 1.87 14.6 96.0 2.52 \n", + "0 10.00 2.36 18.6 101.0 3.24 \n", + "1 14.06 2.15 17.6 121.0 2.51 \n", + "2 13.86 1.35 16.0 98.0 3.15 \n", "3 14.12 1.48 16.8 95.0 2.43 \n", "4 13.75 1.73 16.0 89.0 2.76 \n", "\n", " proanthocyanins hue \n", - "0 2.18 7.80 \n", - "1 1.82 4.32 \n", - "2 1.98 5.25 \n", + "0 2.81 5.68 \n", + "1 1.25 5.05 \n", + "2 1.85 7.22 \n", "3 1.57 5.00 \n", "4 1.81 5.60 " ] }, - "execution_count": 110, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -1334,8 +1404,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -1349,7 +1420,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, From ceec05afde75c3681c7014a3c56dfc7b8835e4d8 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 18 Aug 2018 12:56:26 +0200 Subject: [PATCH 51/92] stat wind --- .DS_Store | Bin 10244 -> 14340 bytes 06_Stats/Wind_Stats/Exercises.ipynb | 20 +- .../Wind_Stats/Exercises_with_solutions.ipynb | 5843 ++++++++--------- 06_Stats/Wind_Stats/Solutions.ipynb | 4665 +++++++------ 4 files changed, 5167 insertions(+), 5361 deletions(-) diff --git a/.DS_Store b/.DS_Store index 939ff0ba5cbf9eac9fe61e51b1804e0cb413f6d9..cdbd81a03bb4ba84dc8599b60d3f55a00c016aff 100644 GIT binary patch delta 1645 zcmeH{O>7%Q6vyA+c9I$FBooI;)`^|EU5BP^LY)+n(lj(_o1_vc1(MRxR1Sg z`@i|v`OTZf`xlD|BEtR!qmL-XUBTwGD#X=uM2XN+Vr$&bA7Bf!abFRgqA4mqJ06*uQDX<+ygTwk=3~Jnj@7 zB$IM%Wy+F8XYEOKbt7##-E_&fp|~&d=*Hq>ov)*M;cY7^sw!ZHMdH6In>g=N$>9M9~>H4sc&dhGAwNs-dRx% zjrFZ2rnY0bxQS-IBBHI=HY^oJ(D#JSJ7hH79mbJ{sZ$S*PdH; zX@>R72b+=ryLOKUU}@CIbX^a zEN_jl+#}@7Y$2aFt#Zlp4Qu;^`a(S7tUQ@6m5&rnix+qPVKk;`4?F%*!!QjYgg(;E z@VMwB&gI~uz?`GhL-)`)9j94lb-qH+(?xoLUZFSXGF9mceMX_TT{5m}7@?;Q?v_#on6ans9cHzbVS4Il2dgCIIyC;pqQWq4vbaPa(8tW- z8~T>MV+KF-`Tt3OA%F(7LPG~)h~sv2V>@=BhfjYHcVmxBVB96}0H$yh4>5<+$iRS! zGbmsVC6uv%r!$iT zZYRmBW!)F8@up4%xgA^kd{yUe`0d7IuXL`(r%sf;H`HODPS(}zcE5_rrG%G3Zf30} Q&a{=zoBu=o&!Fmm1HtD(-T(jq delta 202 zcmZoEXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoZI3MH0wo-~wVspg03VDnkhn zW-{b4q;I@v#y;^u?q+rl77j+P$%={&n|%}%7&l+ln8q|&MbTlhtP02GcI{XY$9D4$ zH3`Pe`~tOXn{UYUF$yw+j0M`p4J2GaHg3H5oq009i7q3\n", " \n", " \n", - " min\n", - " max\n", - " mean\n", - " std\n", + " RPT\n", + " VAL\n", + " ROS\n", + " KIL\n", + " SHA\n", + " BIR\n", + " DUB\n", + " CLA\n", + " MUL\n", + " CLO\n", + " BEL\n", + " MAL\n", " \n", " \n", " \n", " \n", - " RPT\n", - " 0.67\n", - " 35.80\n", - " 12.362987\n", - " 5.618413\n", + " count\n", + " 6568.000000\n", + " 6571.000000\n", + " 6572.000000\n", + " 6569.000000\n", + " 6572.000000\n", + " 6574.000000\n", + " 6571.000000\n", + " 6572.000000\n", + " 6571.000000\n", + " 6573.000000\n", + " 6574.000000\n", + " 6570.000000\n", " \n", " \n", - " VAL\n", - " 0.21\n", - " 33.37\n", + " mean\n", + " 12.362987\n", " 10.644314\n", - " 5.267356\n", - " \n", - " \n", - " ROS\n", - " 1.50\n", - " 33.84\n", " 11.660526\n", - " 5.008450\n", - " \n", - " \n", - " KIL\n", - " 0.00\n", - " 28.46\n", " 6.306468\n", - " 3.605811\n", - " \n", - " \n", - " SHA\n", - " 0.13\n", - " 37.54\n", " 10.455834\n", - " 4.936125\n", - " \n", - " \n", - " BIR\n", - " 0.00\n", - " 26.16\n", " 7.092254\n", - " 3.968683\n", - " \n", - " \n", - " DUB\n", - " 0.00\n", - " 30.37\n", " 9.797343\n", - " 4.977555\n", - " \n", - " \n", - " CLA\n", - " 0.00\n", - " 31.08\n", " 8.495053\n", - " 4.499449\n", - " \n", - " \n", - " MUL\n", - " 0.00\n", - " 25.88\n", " 8.493590\n", - " 4.166872\n", + " 8.707332\n", + " 13.121007\n", + " 15.599079\n", " \n", " \n", - " CLO\n", - " 0.04\n", - " 28.21\n", - " 8.707332\n", + " std\n", + " 5.618413\n", + " 5.267356\n", + " 5.008450\n", + " 3.605811\n", + " 4.936125\n", + " 3.968683\n", + " 4.977555\n", + " 4.499449\n", + " 4.166872\n", " 4.503954\n", + " 5.835037\n", + " 6.699794\n", " \n", " \n", - " BEL\n", - " 0.13\n", - " 42.38\n", - " 13.121007\n", - " 5.835037\n", + " min\n", + " 0.670000\n", + " 0.210000\n", + " 1.500000\n", + " 0.000000\n", + " 0.130000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.040000\n", + " 0.130000\n", + " 0.670000\n", + " \n", + " \n", + " 50%\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 6.830000\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 12.500000\n", + " NaN\n", " \n", " \n", - " MAL\n", - " 0.67\n", - " 42.54\n", - " 15.599079\n", - " 6.699794\n", + " max\n", + " 35.800000\n", + " 33.370000\n", + " 33.840000\n", + " 28.460000\n", + " 37.540000\n", + " 26.160000\n", + " 30.370000\n", + " 31.080000\n", + " 25.880000\n", + " 28.210000\n", + " 42.380000\n", + " 42.540000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " min max mean std\n", - "RPT 0.67 35.80 12.362987 5.618413\n", - "VAL 0.21 33.37 10.644314 5.267356\n", - "ROS 1.50 33.84 11.660526 5.008450\n", - "KIL 0.00 28.46 6.306468 3.605811\n", - "SHA 0.13 37.54 10.455834 4.936125\n", - "BIR 0.00 26.16 7.092254 3.968683\n", - "DUB 0.00 30.37 9.797343 4.977555\n", - "CLA 0.00 31.08 8.495053 4.499449\n", - "MUL 0.00 25.88 8.493590 4.166872\n", - "CLO 0.04 28.21 8.707332 4.503954\n", - "BEL 0.13 42.38 13.121007 5.835037\n", - "MAL 0.67 42.54 15.599079 6.699794" + " RPT VAL ROS KIL SHA \\\n", + "count 6568.000000 6571.000000 6572.000000 6569.000000 6572.000000 \n", + "mean 12.362987 10.644314 11.660526 6.306468 10.455834 \n", + "std 5.618413 5.267356 5.008450 3.605811 4.936125 \n", + "min 0.670000 0.210000 1.500000 0.000000 0.130000 \n", + "50% NaN NaN NaN NaN NaN \n", + "max 35.800000 33.370000 33.840000 28.460000 37.540000 \n", + "\n", + " BIR DUB CLA MUL CLO \\\n", + "count 6574.000000 6571.000000 6572.000000 6571.000000 6573.000000 \n", + "mean 7.092254 9.797343 8.495053 8.493590 8.707332 \n", + "std 3.968683 4.977555 4.499449 4.166872 4.503954 \n", + "min 0.000000 0.000000 0.000000 0.000000 0.040000 \n", + "50% 6.830000 NaN NaN NaN NaN \n", + "max 26.160000 30.370000 31.080000 25.880000 28.210000 \n", + "\n", + " BEL MAL \n", + "count 6574.000000 6570.000000 \n", + "mean 13.121007 15.599079 \n", + "std 5.835037 6.699794 \n", + "min 0.130000 0.670000 \n", + "50% 12.500000 NaN \n", + "max 42.380000 42.540000 " ] }, "execution_count": 9, @@ -821,14 +856,7 @@ } ], "source": [ - "loc_stats = pd.DataFrame()\n", - "\n", - "loc_stats['min'] = data.min() # min\n", - "loc_stats['max'] = data.max() # max \n", - "loc_stats['mean'] = data.mean() # mean\n", - "loc_stats['std'] = data.std() # standard deviations\n", - "\n", - "loc_stats" + "data.describe(percentiles=[])" ] }, { @@ -975,21 +1003,7 @@ } ], "source": [ - "# print \"January windspeeds:\"\n", - "\n", - "# creates a new column 'date' and gets the values from the index\n", - "data['date'] = data.index\n", - "\n", - "# creates a column for each value from date\n", - "data['month'] = data['date'].apply(lambda date: date.month)\n", - "data['year'] = data['date'].apply(lambda date: date.year)\n", - "data['day'] = data['date'].apply(lambda date: date.day)\n", - "\n", - "# gets all value from the month 1 and assign to january_winds\n", - "january_winds = data.query('month == 1')\n", - "\n", - "# gets the mean from january_winds, using .loc to not print the mean of month, year and day\n", - "january_winds.loc[:,'RPT':\"MAL\"].mean()" + "data.loc[data.index.month == 1].mean()" ] }, { @@ -1026,10 +1040,6 @@ " CLO\n", " BEL\n", " MAL\n", - " date\n", - " month\n", - " year\n", - " day\n", " \n", " \n", " Yr_Mo_Dy\n", @@ -1045,401 +1055,325 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " 1961-01-01\n", - " 15.04\n", - " 14.96\n", - " 13.17\n", - " 9.29\n", - " NaN\n", - " 9.87\n", - " 13.67\n", - " 10.25\n", - " 10.83\n", - " 12.58\n", - " 18.50\n", - " 15.04\n", - " 1961-01-01\n", - " 1\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1962-01-01\n", - " 9.29\n", - " 3.42\n", - " 11.54\n", - " 3.50\n", - " 2.21\n", - " 1.96\n", - " 10.41\n", - " 2.79\n", - " 3.54\n", - " 5.17\n", - " 4.38\n", - " 7.92\n", - " 1962-01-01\n", - " 1\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1963-01-01\n", - " 15.59\n", - " 13.62\n", - " 19.79\n", - " 8.38\n", - " 12.25\n", - " 10.00\n", - " 23.45\n", - " 15.71\n", - " 13.59\n", - " 14.37\n", - " 17.58\n", - " 34.13\n", - " 1963-01-01\n", - " 1\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1964-01-01\n", - " 25.80\n", - " 22.13\n", - " 18.21\n", - " 13.25\n", - " 21.29\n", - " 14.79\n", - " 14.12\n", - " 19.58\n", - " 13.25\n", - " 16.75\n", - " 28.96\n", - " 21.00\n", - " 1964-01-01\n", - " 1\n", - " 1964\n", - " 1\n", - " \n", - " \n", - " 1965-01-01\n", - " 9.54\n", - " 11.92\n", - " 9.00\n", - " 4.38\n", - " 6.08\n", - " 5.21\n", - " 10.25\n", - " 6.08\n", - " 5.71\n", - " 8.63\n", - " 12.04\n", - " 17.41\n", - " 1965-01-01\n", - " 1\n", - " 1965\n", - " 1\n", - " \n", - " \n", - " 1966-01-01\n", - " 22.04\n", - " 21.50\n", - " 17.08\n", - " 12.75\n", - " 22.17\n", - " 15.59\n", - " 21.79\n", - " 18.12\n", - " 16.66\n", - " 17.83\n", - " 28.33\n", - " 23.79\n", - " 1966-01-01\n", - " 1\n", - " 1966\n", - " 1\n", - " \n", - " \n", - " 1967-01-01\n", - " 6.46\n", - " 4.46\n", - " 6.50\n", - " 3.21\n", - " 6.67\n", - " 3.79\n", - " 11.38\n", - " 3.83\n", - " 7.71\n", - " 9.08\n", - " 10.67\n", - " 20.91\n", - " 1967-01-01\n", - " 1\n", - " 1967\n", - " 1\n", - " \n", - " \n", - " 1968-01-01\n", - " 30.04\n", - " 17.88\n", - " 16.25\n", - " 16.25\n", - " 21.79\n", - " 12.54\n", - " 18.16\n", - " 16.62\n", - " 18.75\n", - " 17.62\n", - " 22.25\n", - " 27.29\n", - " 1968-01-01\n", - " 1\n", - " 1968\n", - " 1\n", - " \n", - " \n", - " 1969-01-01\n", - " 6.13\n", - " 1.63\n", - " 5.41\n", - " 1.08\n", - " 2.54\n", - " 1.00\n", - " 8.50\n", - " 2.42\n", - " 4.58\n", - " 6.34\n", - " 9.17\n", - " 16.71\n", - " 1969-01-01\n", - " 1\n", - " 1969\n", - " 1\n", - " \n", - " \n", - " 1970-01-01\n", - " 9.59\n", - " 2.96\n", - " 11.79\n", - " 3.42\n", - " 6.13\n", - " 4.08\n", - " 9.00\n", - " 4.46\n", - " 7.29\n", - " 3.50\n", - " 7.33\n", - " 13.00\n", - " 1970-01-01\n", - " 1\n", - " 1970\n", - " 1\n", - " \n", - " \n", - " 1971-01-01\n", - " 3.71\n", - " 0.79\n", - " 4.71\n", - " 0.17\n", - " 1.42\n", - " 1.04\n", - " 4.63\n", - " 0.75\n", - " 1.54\n", - " 1.08\n", - " 4.21\n", - " 9.54\n", - " 1971-01-01\n", - " 1\n", - " 1971\n", - " 1\n", - " \n", - " \n", - " 1972-01-01\n", - " 9.29\n", - " 3.63\n", - " 14.54\n", - " 4.25\n", - " 6.75\n", - " 4.42\n", - " 13.00\n", - " 5.33\n", - " 10.04\n", - " 8.54\n", - " 8.71\n", - " 19.17\n", - " 1972-01-01\n", - " 1\n", - " 1972\n", - " 1\n", - " \n", - " \n", - " 1973-01-01\n", - " 16.50\n", - " 15.92\n", - " 14.62\n", - " 7.41\n", - " 8.29\n", - " 11.21\n", - " 13.54\n", - " 7.79\n", - " 10.46\n", - " 10.79\n", - " 13.37\n", - " 9.71\n", - " 1973-01-01\n", - " 1\n", - " 1973\n", - " 1\n", - " \n", - " \n", - " 1974-01-01\n", - " 23.21\n", - " 16.54\n", - " 16.08\n", - " 9.75\n", - " 15.83\n", - " 11.46\n", - " 9.54\n", - " 13.54\n", - " 13.83\n", - " 16.66\n", - " 17.21\n", - " 25.29\n", - " 1974-01-01\n", - " 1\n", - " 1974\n", - " 1\n", - " \n", - " \n", - " 1975-01-01\n", - " 14.04\n", - " 13.54\n", - " 11.29\n", - " 5.46\n", - " 12.58\n", - " 5.58\n", - " 8.12\n", - " 8.96\n", - " 9.29\n", - " 5.17\n", - " 7.71\n", - " 11.63\n", - " 1975-01-01\n", - " 1\n", - " 1975\n", - " 1\n", - " \n", - " \n", - " 1976-01-01\n", - " 18.34\n", - " 17.67\n", - " 14.83\n", - " 8.00\n", - " 16.62\n", - " 10.13\n", - " 13.17\n", - " 9.04\n", - " 13.13\n", - " 5.75\n", - " 11.38\n", - " 14.96\n", - " 1976-01-01\n", - " 1\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1977-01-01\n", - " 20.04\n", - " 11.92\n", - " 20.25\n", - " 9.13\n", - " 9.29\n", - " 8.04\n", - " 10.75\n", - " 5.88\n", - " 9.00\n", - " 9.00\n", - " 14.88\n", - " 25.70\n", - " 1977-01-01\n", - " 1\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1978-01-01\n", - " 8.33\n", - " 7.12\n", - " 7.71\n", - " 3.54\n", - " 8.50\n", - " 7.50\n", - " 14.71\n", - " 10.00\n", - " 11.83\n", - " 10.00\n", - " 15.09\n", - " 20.46\n", - " 1978-01-01\n", - " 1\n", - " 1978\n", - " 1\n", + " 1961\n", + " 12.299583\n", + " 10.351796\n", + " 11.362369\n", + " 6.958227\n", + " 10.881763\n", + " 7.729726\n", + " 9.733923\n", + " 8.858788\n", + " 8.647652\n", + " 9.835577\n", + " 13.502795\n", + " 13.680773\n", + " \n", + " \n", + " 1962\n", + " 12.246923\n", + " 10.110438\n", + " 11.732712\n", + " 6.960440\n", + " 10.657918\n", + " 7.393068\n", + " 11.020712\n", + " 8.793753\n", + " 8.316822\n", + " 9.676247\n", + " 12.930685\n", + " 14.323956\n", + " \n", + " \n", + " 1963\n", + " 12.813452\n", + " 10.836986\n", + " 12.541151\n", + " 7.330055\n", + " 11.724110\n", + " 8.434712\n", + " 11.075699\n", + " 10.336548\n", + " 8.903589\n", + " 10.224438\n", + " 13.638877\n", + " 14.999014\n", + " \n", + " \n", + " 1964\n", + " 12.363661\n", + " 10.920164\n", + " 12.104372\n", + " 6.787787\n", + " 11.454481\n", + " 7.570874\n", + " 10.259153\n", + " 9.467350\n", + " 7.789016\n", + " 10.207951\n", + " 13.740546\n", + " 14.910301\n", + " \n", + " \n", + " 1965\n", + " 12.451370\n", + " 11.075534\n", + " 11.848767\n", + " 6.858466\n", + " 11.024795\n", + " 7.478110\n", + " 10.618712\n", + " 8.879918\n", + " 7.907425\n", + " 9.918082\n", + " 12.964247\n", + " 15.591644\n", + " \n", + " \n", + " 1966\n", + " 13.461973\n", + " 11.557205\n", + " 12.020630\n", + " 7.345726\n", + " 11.805041\n", + " 7.793671\n", + " 10.579808\n", + " 8.835096\n", + " 8.514438\n", + " 9.768959\n", + " 14.265836\n", + " 16.307260\n", + " \n", + " \n", + " 1967\n", + " 12.737151\n", + " 10.990986\n", + " 11.739397\n", + " 7.143425\n", + " 11.630740\n", + " 7.368164\n", + " 10.652027\n", + " 9.325616\n", + " 8.645014\n", + " 9.547425\n", + " 14.774548\n", + " 17.135945\n", + " \n", + " \n", + " 1968\n", + " 11.835628\n", + " 10.468197\n", + " 11.409754\n", + " 6.477678\n", + " 10.760765\n", + " 6.067322\n", + " 8.859180\n", + " 8.255519\n", + " 7.224945\n", + " 7.832978\n", + " 12.808634\n", + " 15.017486\n", + " \n", + " \n", + " 1969\n", + " 11.166356\n", + " 9.723699\n", + " 10.902000\n", + " 5.767973\n", + " 9.873918\n", + " 6.189973\n", + " 8.564493\n", + " 7.711397\n", + " 7.924521\n", + " 7.754384\n", + " 12.621233\n", + " 15.762904\n", + " \n", + " \n", + " 1970\n", + " 12.600329\n", + " 10.726932\n", + " 11.730247\n", + " 6.217178\n", + " 10.567370\n", + " 7.609452\n", + " 9.609890\n", + " 8.334630\n", + " 9.297616\n", + " 8.289808\n", + " 13.183644\n", + " 16.456027\n", + " \n", + " \n", + " 1971\n", + " 11.273123\n", + " 9.095178\n", + " 11.088329\n", + " 5.241507\n", + " 9.440329\n", + " 6.097151\n", + " 8.385890\n", + " 6.757315\n", + " 7.915370\n", + " 7.229753\n", + " 12.208932\n", + " 15.025233\n", + " \n", + " \n", + " 1972\n", + " 12.463962\n", + " 10.561311\n", + " 12.058333\n", + " 5.929699\n", + " 9.430410\n", + " 6.358825\n", + " 9.704508\n", + " 7.680792\n", + " 8.357295\n", + " 7.515273\n", + " 12.727377\n", + " 15.028716\n", + " \n", + " \n", + " 1973\n", + " 11.828466\n", + " 10.680493\n", + " 10.680493\n", + " 5.547863\n", + " 9.640877\n", + " 6.548740\n", + " 8.482110\n", + " 7.614274\n", + " 8.245534\n", + " 7.812411\n", + " 12.169699\n", + " 15.441096\n", + " \n", + " \n", + " 1974\n", + " 13.643096\n", + " 11.811781\n", + " 12.336356\n", + " 6.427041\n", + " 11.110986\n", + " 6.809781\n", + " 10.084603\n", + " 9.896986\n", + " 9.331753\n", + " 8.736356\n", + " 13.252959\n", + " 16.947671\n", + " \n", + " \n", + " 1975\n", + " 12.008575\n", + " 10.293836\n", + " 11.564712\n", + " 5.269096\n", + " 9.190082\n", + " 5.668521\n", + " 8.562603\n", + " 7.843836\n", + " 8.797945\n", + " 7.382822\n", + " 12.631671\n", + " 15.307863\n", + " \n", + " \n", + " 1976\n", + " 11.737842\n", + " 10.203115\n", + " 10.761230\n", + " 5.109426\n", + " 8.846339\n", + " 6.311038\n", + " 9.149126\n", + " 7.146202\n", + " 8.883716\n", + " 7.883087\n", + " 12.332377\n", + " 15.471448\n", + " \n", + " \n", + " 1977\n", + " 13.099616\n", + " 11.144493\n", + " 12.627836\n", + " 6.073945\n", + " 10.003836\n", + " 8.586438\n", + " 11.523205\n", + " 8.378384\n", + " 9.098192\n", + " 8.821616\n", + " 13.459068\n", + " 16.590849\n", + " \n", + " \n", + " 1978\n", + " 12.504356\n", + " 11.044274\n", + " 11.380000\n", + " 6.082356\n", + " 10.167233\n", + " 7.650658\n", + " 9.489342\n", + " 8.800466\n", + " 9.089753\n", + " 8.301699\n", + " 12.967397\n", + " 16.771370\n", " \n", " \n", "\n", "" ], "text/plain": [ - " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", - "Yr_Mo_Dy \n", - "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", - "1962-01-01 9.29 3.42 11.54 3.50 2.21 1.96 10.41 2.79 3.54 \n", - "1963-01-01 15.59 13.62 19.79 8.38 12.25 10.00 23.45 15.71 13.59 \n", - "1964-01-01 25.80 22.13 18.21 13.25 21.29 14.79 14.12 19.58 13.25 \n", - "1965-01-01 9.54 11.92 9.00 4.38 6.08 5.21 10.25 6.08 5.71 \n", - "1966-01-01 22.04 21.50 17.08 12.75 22.17 15.59 21.79 18.12 16.66 \n", - "1967-01-01 6.46 4.46 6.50 3.21 6.67 3.79 11.38 3.83 7.71 \n", - "1968-01-01 30.04 17.88 16.25 16.25 21.79 12.54 18.16 16.62 18.75 \n", - "1969-01-01 6.13 1.63 5.41 1.08 2.54 1.00 8.50 2.42 4.58 \n", - "1970-01-01 9.59 2.96 11.79 3.42 6.13 4.08 9.00 4.46 7.29 \n", - "1971-01-01 3.71 0.79 4.71 0.17 1.42 1.04 4.63 0.75 1.54 \n", - "1972-01-01 9.29 3.63 14.54 4.25 6.75 4.42 13.00 5.33 10.04 \n", - "1973-01-01 16.50 15.92 14.62 7.41 8.29 11.21 13.54 7.79 10.46 \n", - "1974-01-01 23.21 16.54 16.08 9.75 15.83 11.46 9.54 13.54 13.83 \n", - "1975-01-01 14.04 13.54 11.29 5.46 12.58 5.58 8.12 8.96 9.29 \n", - "1976-01-01 18.34 17.67 14.83 8.00 16.62 10.13 13.17 9.04 13.13 \n", - "1977-01-01 20.04 11.92 20.25 9.13 9.29 8.04 10.75 5.88 9.00 \n", - "1978-01-01 8.33 7.12 7.71 3.54 8.50 7.50 14.71 10.00 11.83 \n", + " RPT VAL ROS KIL SHA BIR \\\n", + "Yr_Mo_Dy \n", + "1961 12.299583 10.351796 11.362369 6.958227 10.881763 7.729726 \n", + "1962 12.246923 10.110438 11.732712 6.960440 10.657918 7.393068 \n", + "1963 12.813452 10.836986 12.541151 7.330055 11.724110 8.434712 \n", + "1964 12.363661 10.920164 12.104372 6.787787 11.454481 7.570874 \n", + "1965 12.451370 11.075534 11.848767 6.858466 11.024795 7.478110 \n", + "1966 13.461973 11.557205 12.020630 7.345726 11.805041 7.793671 \n", + "1967 12.737151 10.990986 11.739397 7.143425 11.630740 7.368164 \n", + "1968 11.835628 10.468197 11.409754 6.477678 10.760765 6.067322 \n", + "1969 11.166356 9.723699 10.902000 5.767973 9.873918 6.189973 \n", + "1970 12.600329 10.726932 11.730247 6.217178 10.567370 7.609452 \n", + "1971 11.273123 9.095178 11.088329 5.241507 9.440329 6.097151 \n", + "1972 12.463962 10.561311 12.058333 5.929699 9.430410 6.358825 \n", + "1973 11.828466 10.680493 10.680493 5.547863 9.640877 6.548740 \n", + "1974 13.643096 11.811781 12.336356 6.427041 11.110986 6.809781 \n", + "1975 12.008575 10.293836 11.564712 5.269096 9.190082 5.668521 \n", + "1976 11.737842 10.203115 10.761230 5.109426 8.846339 6.311038 \n", + "1977 13.099616 11.144493 12.627836 6.073945 10.003836 8.586438 \n", + "1978 12.504356 11.044274 11.380000 6.082356 10.167233 7.650658 \n", "\n", - " CLO BEL MAL date month year day \n", - "Yr_Mo_Dy \n", - "1961-01-01 12.58 18.50 15.04 1961-01-01 1 1961 1 \n", - "1962-01-01 5.17 4.38 7.92 1962-01-01 1 1962 1 \n", - "1963-01-01 14.37 17.58 34.13 1963-01-01 1 1963 1 \n", - "1964-01-01 16.75 28.96 21.00 1964-01-01 1 1964 1 \n", - "1965-01-01 8.63 12.04 17.41 1965-01-01 1 1965 1 \n", - "1966-01-01 17.83 28.33 23.79 1966-01-01 1 1966 1 \n", - "1967-01-01 9.08 10.67 20.91 1967-01-01 1 1967 1 \n", - "1968-01-01 17.62 22.25 27.29 1968-01-01 1 1968 1 \n", - "1969-01-01 6.34 9.17 16.71 1969-01-01 1 1969 1 \n", - "1970-01-01 3.50 7.33 13.00 1970-01-01 1 1970 1 \n", - "1971-01-01 1.08 4.21 9.54 1971-01-01 1 1971 1 \n", - "1972-01-01 8.54 8.71 19.17 1972-01-01 1 1972 1 \n", - "1973-01-01 10.79 13.37 9.71 1973-01-01 1 1973 1 \n", - "1974-01-01 16.66 17.21 25.29 1974-01-01 1 1974 1 \n", - "1975-01-01 5.17 7.71 11.63 1975-01-01 1 1975 1 \n", - "1976-01-01 5.75 11.38 14.96 1976-01-01 1 1976 1 \n", - "1977-01-01 9.00 14.88 25.70 1977-01-01 1 1977 1 \n", - "1978-01-01 10.00 15.09 20.46 1978-01-01 1 1978 1 " + " DUB CLA MUL CLO BEL MAL \n", + "Yr_Mo_Dy \n", + "1961 9.733923 8.858788 8.647652 9.835577 13.502795 13.680773 \n", + "1962 11.020712 8.793753 8.316822 9.676247 12.930685 14.323956 \n", + "1963 11.075699 10.336548 8.903589 10.224438 13.638877 14.999014 \n", + "1964 10.259153 9.467350 7.789016 10.207951 13.740546 14.910301 \n", + "1965 10.618712 8.879918 7.907425 9.918082 12.964247 15.591644 \n", + "1966 10.579808 8.835096 8.514438 9.768959 14.265836 16.307260 \n", + "1967 10.652027 9.325616 8.645014 9.547425 14.774548 17.135945 \n", + "1968 8.859180 8.255519 7.224945 7.832978 12.808634 15.017486 \n", + "1969 8.564493 7.711397 7.924521 7.754384 12.621233 15.762904 \n", + "1970 9.609890 8.334630 9.297616 8.289808 13.183644 16.456027 \n", + "1971 8.385890 6.757315 7.915370 7.229753 12.208932 15.025233 \n", + "1972 9.704508 7.680792 8.357295 7.515273 12.727377 15.028716 \n", + "1973 8.482110 7.614274 8.245534 7.812411 12.169699 15.441096 \n", + "1974 10.084603 9.896986 9.331753 8.736356 13.252959 16.947671 \n", + "1975 8.562603 7.843836 8.797945 7.382822 12.631671 15.307863 \n", + "1976 9.149126 7.146202 8.883716 7.883087 12.332377 15.471448 \n", + "1977 11.523205 8.378384 9.098192 8.821616 13.459068 16.590849 \n", + "1978 9.489342 8.800466 9.089753 8.301699 12.967397 16.771370 " ] }, "execution_count": 12, @@ -1448,7 +1382,7 @@ } ], "source": [ - "data.query('month == 1 and day == 1')" + "data.groupby(data.index.to_period('A')).mean()" ] }, { @@ -1485,10 +1419,6 @@ " CLO\n", " BEL\n", " MAL\n", - " date\n", - " month\n", - " year\n", - " day\n", " \n", " \n", " Yr_Mo_Dy\n", @@ -1504,1307 +1434,1059 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " 1961-01-01\n", - " 15.04\n", - " 14.96\n", - " 13.17\n", - " 9.29\n", - " NaN\n", - " 9.87\n", - " 13.67\n", - " 10.25\n", - " 10.83\n", - " 12.58\n", - " 18.50\n", - " 15.04\n", - " 1961-01-01\n", - " 1\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-02-01\n", - " 14.25\n", - " 15.12\n", - " 9.04\n", - " 5.88\n", - " 12.08\n", - " 7.17\n", - " 10.17\n", - " 3.63\n", - " 6.50\n", - " 5.50\n", - " 9.17\n", - " 8.00\n", - " 1961-02-01\n", - " 2\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-03-01\n", - " 12.67\n", - " 13.13\n", - " 11.79\n", - " 6.42\n", - " 9.79\n", - " 8.54\n", - " 10.25\n", - " 13.29\n", - " NaN\n", - " 12.21\n", - " 20.62\n", - " NaN\n", - " 1961-03-01\n", - " 3\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-04-01\n", - " 8.38\n", - " 6.34\n", - " 8.33\n", - " 6.75\n", - " 9.33\n", - " 9.54\n", - " 11.67\n", - " 8.21\n", - " 11.21\n", - " 6.46\n", - " 11.96\n", - " 7.17\n", - " 1961-04-01\n", - " 4\n", - " 1961\n", - " 1\n", + " 1961-01\n", + " 14.841333\n", + " 11.988333\n", + " 13.431613\n", + " 7.736774\n", + " 11.072759\n", + " 8.588065\n", + " 11.184839\n", + " 9.245333\n", + " 9.085806\n", + " 10.107419\n", + " 13.880968\n", + " 14.703226\n", + " \n", + " \n", + " 1961-02\n", + " 16.269286\n", + " 14.975357\n", + " 14.441481\n", + " 9.230741\n", + " 13.852143\n", + " 10.937500\n", + " 11.890714\n", + " 11.846071\n", + " 11.821429\n", + " 12.714286\n", + " 18.583214\n", + " 15.411786\n", + " \n", + " \n", + " 1961-03\n", + " 10.890000\n", + " 11.296452\n", + " 10.752903\n", + " 7.284000\n", + " 10.509355\n", + " 8.866774\n", + " 9.644194\n", + " 9.829677\n", + " 10.294138\n", + " 11.251935\n", + " 16.410968\n", + " 15.720000\n", + " \n", + " \n", + " 1961-04\n", + " 10.722667\n", + " 9.427667\n", + " 9.998000\n", + " 5.830667\n", + " 8.435000\n", + " 6.495000\n", + " 6.925333\n", + " 7.094667\n", + " 7.342333\n", + " 7.237000\n", + " 11.147333\n", + " 10.278333\n", + " \n", + " \n", + " 1961-05\n", + " 9.860968\n", + " 8.850000\n", + " 10.818065\n", + " 5.905333\n", + " 9.490323\n", + " 6.574839\n", + " 7.604000\n", + " 8.177097\n", + " 8.039355\n", + " 8.499355\n", + " 11.900323\n", + " 12.011613\n", + " \n", + " \n", + " 1961-06\n", + " 9.904138\n", + " 8.520333\n", + " 8.867000\n", + " 6.083000\n", + " 10.824000\n", + " 6.707333\n", + " 9.095667\n", + " 8.849333\n", + " 9.086667\n", + " 9.940333\n", + " 13.995000\n", + " 14.553793\n", + " \n", + " \n", + " 1961-07\n", + " 10.614194\n", + " 8.221613\n", + " 9.110323\n", + " 6.340968\n", + " 10.532581\n", + " 6.198387\n", + " 8.353333\n", + " 8.284194\n", + " 8.077097\n", + " 8.891613\n", + " 11.092581\n", + " 12.312903\n", + " \n", + " \n", + " 1961-08\n", + " 12.035000\n", + " 10.133871\n", + " 10.335806\n", + " 6.845806\n", + " 12.715161\n", + " 8.441935\n", + " 10.093871\n", + " 10.460968\n", + " 9.111613\n", + " 10.544667\n", + " 14.410000\n", + " 14.345333\n", + " \n", + " \n", + " 1961-09\n", + " 12.531000\n", + " 9.656897\n", + " 10.776897\n", + " 7.155517\n", + " 11.003333\n", + " 7.234000\n", + " 8.206000\n", + " 8.936552\n", + " 7.728333\n", + " 9.931333\n", + " 13.718333\n", + " 12.921667\n", + " \n", + " \n", + " 1961-10\n", + " 14.289667\n", + " 10.915806\n", + " 12.236452\n", + " 8.154839\n", + " 11.865484\n", + " 8.333871\n", + " 11.194194\n", + " 9.271935\n", + " 8.942667\n", + " 11.455806\n", + " 14.229355\n", + " 16.793226\n", + " \n", + " \n", + " 1961-11\n", + " 10.896333\n", + " 8.592667\n", + " 11.850333\n", + " 6.045667\n", + " 9.123667\n", + " 6.250667\n", + " 10.869655\n", + " 6.313667\n", + " 6.575000\n", + " 8.383667\n", + " 10.776667\n", + " 12.146000\n", + " \n", + " \n", + " 1961-12\n", + " 14.973548\n", + " 11.903871\n", + " 13.980323\n", + " 7.073871\n", + " 11.323548\n", + " 8.302258\n", + " 11.753548\n", + " 8.163226\n", + " 7.965806\n", + " 9.246774\n", + " 12.239355\n", + " 13.098710\n", + " \n", + " \n", + " 1962-01\n", + " 14.783871\n", + " 13.160323\n", + " 12.591935\n", + " 7.538065\n", + " 11.779677\n", + " 8.720000\n", + " 14.211935\n", + " 9.600000\n", + " 9.670000\n", + " 11.498710\n", + " 16.369355\n", + " 15.661613\n", + " \n", + " \n", + " 1962-02\n", + " 15.844643\n", + " 12.041429\n", + " 15.178929\n", + " 9.262963\n", + " 13.821429\n", + " 9.726786\n", + " 16.916429\n", + " 11.285357\n", + " 12.021071\n", + " 12.126429\n", + " 16.705357\n", + " 18.426786\n", + " \n", + " \n", + " 1962-03\n", + " 11.634333\n", + " 8.602258\n", + " 12.110645\n", + " 6.403226\n", + " 10.352258\n", + " 6.732258\n", + " 10.223226\n", + " 7.641935\n", + " 7.092258\n", + " 8.052581\n", + " 9.690000\n", + " 11.509000\n", + " \n", + " \n", + " 1962-04\n", + " 12.160667\n", + " 9.676667\n", + " 12.088333\n", + " 7.163000\n", + " 10.544000\n", + " 7.558000\n", + " 11.480000\n", + " 8.722000\n", + " 8.703667\n", + " 9.311667\n", + " 12.234333\n", + " 11.780667\n", + " \n", + " \n", + " 1962-05\n", + " 12.745806\n", + " 10.865484\n", + " 11.874839\n", + " 7.471935\n", + " 11.285806\n", + " 7.209032\n", + " 10.105806\n", + " 9.084516\n", + " 7.868065\n", + " 9.293226\n", + " 12.130000\n", + " 12.922581\n", + " \n", + " \n", + " 1962-06\n", + " 10.305667\n", + " 9.677000\n", + " 9.996333\n", + " 6.846667\n", + " 10.711333\n", + " 7.441333\n", + " 10.548667\n", + " 10.306667\n", + " 9.196000\n", + " 10.520333\n", + " 13.757000\n", + " 15.218333\n", + " \n", + " \n", + " 1962-07\n", + " 9.981935\n", + " 8.370645\n", + " 9.753548\n", + " 6.093226\n", + " 9.112903\n", + " 5.877097\n", + " 7.781613\n", + " 8.123226\n", + " 6.829677\n", + " 8.613226\n", + " 10.783871\n", + " 11.326129\n", + " \n", + " \n", + " 1962-08\n", + " 10.964194\n", + " 9.694194\n", + " 10.184516\n", + " 6.701290\n", + " 10.465161\n", + " 7.009032\n", + " 11.136774\n", + " 9.097419\n", + " 8.645484\n", + " 9.511613\n", + " 13.119032\n", + " 15.420968\n", + " \n", + " \n", + " 1962-09\n", + " 11.176333\n", + " 9.507000\n", + " 11.640000\n", + " 6.164333\n", + " 9.722333\n", + " 6.214000\n", + " 8.488000\n", + " 7.020333\n", + " 6.372667\n", + " 8.286000\n", + " 11.483667\n", + " 12.313333\n", + " \n", + " \n", + " 1962-10\n", + " 9.699355\n", + " 8.063548\n", + " 9.357097\n", + " 4.818065\n", + " 8.432258\n", + " 5.730000\n", + " 8.448065\n", + " 7.626774\n", + " 6.630645\n", + " 9.091290\n", + " 13.286774\n", + " 14.090323\n", + " \n", + " \n", + " 1962-11\n", + " 11.071333\n", + " 7.984000\n", + " 12.035667\n", + " 5.740000\n", + " 8.135667\n", + " 6.338333\n", + " 9.615333\n", + " 5.943000\n", + " 6.362333\n", + " 8.084333\n", + " 9.786667\n", + " 13.298333\n", + " \n", + " \n", + " 1962-12\n", + " 16.785484\n", + " 13.753548\n", + " 14.276452\n", + " 9.557419\n", + " 13.724839\n", + " 10.321613\n", + " 13.735806\n", + " 11.212258\n", + " 10.683548\n", + " 11.881935\n", + " 16.043548\n", + " 20.074516\n", + " \n", + " \n", + " 1963-01\n", + " 14.868387\n", + " 11.112903\n", + " 15.121613\n", + " 6.635806\n", + " 11.080645\n", + " 7.835484\n", + " 12.797419\n", + " 9.844839\n", + " 7.841613\n", + " 9.390000\n", + " 11.428710\n", + " 18.822258\n", + " \n", + " \n", + " 1963-02\n", + " 14.418929\n", + " 11.876429\n", + " 15.697500\n", + " 8.611786\n", + " 12.887857\n", + " 9.600357\n", + " 12.729286\n", + " 10.823214\n", + " 8.981786\n", + " 10.355714\n", + " 13.266429\n", + " 17.120714\n", + " \n", + " \n", + " 1963-03\n", + " 14.853871\n", + " 12.271290\n", + " 14.295806\n", + " 9.268387\n", + " 13.112903\n", + " 10.088065\n", + " 12.168387\n", + " 11.340968\n", + " 9.690968\n", + " 11.515484\n", + " 13.982903\n", + " 14.132581\n", + " \n", + " \n", + " 1963-04\n", + " 11.616000\n", + " 10.138000\n", + " 13.233667\n", + " 7.990333\n", + " 11.515333\n", + " 9.727000\n", + " 11.979000\n", + " 11.353000\n", + " 10.341667\n", + " 11.900333\n", + " 13.875667\n", + " 16.333667\n", + " \n", + " \n", + " 1963-05\n", + " 12.879677\n", + " 11.010645\n", + " 12.881290\n", + " 8.411613\n", + " 12.981613\n", + " 9.739677\n", + " 12.280968\n", + " 10.964194\n", + " 10.745161\n", + " 11.394839\n", + " 14.777097\n", + " 14.975161\n", + " \n", + " \n", + " 1963-06\n", + " 10.623333\n", + " 8.434667\n", + " 11.685000\n", + " 6.420333\n", + " 10.142667\n", + " 7.219333\n", + " 9.267333\n", + " 9.589333\n", + " 8.583667\n", + " 9.585333\n", + " 12.098000\n", + " 11.358667\n", " \n", " \n", - " 1961-05-01\n", - " 15.87\n", - " 13.88\n", - " 15.37\n", - " 9.79\n", - " 13.46\n", - " 10.17\n", - " 9.96\n", - " 14.04\n", - " 9.75\n", - " 9.92\n", - " 18.63\n", - " 11.12\n", - " 1961-05-01\n", - " 5\n", - " 1961\n", - " 1\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", - " 1961-06-01\n", - " 15.92\n", - " 9.59\n", - " 12.04\n", - " 8.79\n", - " 11.54\n", - " 6.04\n", - " 9.75\n", - " 8.29\n", - " 9.33\n", - " 10.34\n", - " 10.67\n", - " 12.12\n", - " 1961-06-01\n", - " 6\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-07-01\n", - " 7.21\n", - " 6.83\n", - " 7.71\n", - " 4.42\n", - " 8.46\n", - " 4.79\n", - " 6.71\n", - " 6.00\n", - " 5.79\n", - " 7.96\n", - " 6.96\n", - " 8.71\n", - " 1961-07-01\n", - " 7\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-08-01\n", - " 9.59\n", - " 5.09\n", - " 5.54\n", - " 4.63\n", - " 8.29\n", - " 5.25\n", - " 4.21\n", - " 5.25\n", - " 5.37\n", - " 5.41\n", - " 8.38\n", - " 9.08\n", - " 1961-08-01\n", - " 8\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-09-01\n", - " 5.58\n", - " 1.13\n", - " 4.96\n", - " 3.04\n", - " 4.25\n", - " 2.25\n", - " 4.63\n", - " 2.71\n", - " 3.67\n", - " 6.00\n", - " 4.79\n", - " 5.41\n", - " 1961-09-01\n", - " 9\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-10-01\n", - " 14.25\n", - " 12.87\n", - " 7.87\n", - " 8.00\n", - " 13.00\n", - " 7.75\n", - " 5.83\n", - " 9.00\n", - " 7.08\n", - " 5.29\n", - " 11.79\n", - " 4.04\n", - " 1961-10-01\n", - " 10\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-11-01\n", - " 13.21\n", - " 13.13\n", - " 14.33\n", - " 8.54\n", - " 12.17\n", - " 10.21\n", - " 13.08\n", - " 12.17\n", - " 10.92\n", - " 13.54\n", - " 20.17\n", - " 20.04\n", - " 1961-11-01\n", - " 11\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-12-01\n", - " 9.67\n", - " 7.75\n", - " 8.00\n", - " 3.96\n", - " 6.00\n", - " 2.75\n", - " 7.25\n", - " 2.50\n", - " 5.58\n", - " 5.58\n", - " 7.79\n", - " 11.17\n", - " 1961-12-01\n", - " 12\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1962-01-01\n", - " 9.29\n", - " 3.42\n", - " 11.54\n", - " 3.50\n", - " 2.21\n", - " 1.96\n", - " 10.41\n", - " 2.79\n", - " 3.54\n", - " 5.17\n", - " 4.38\n", - " 7.92\n", - " 1962-01-01\n", - " 1\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-02-01\n", - " 19.12\n", - " 13.96\n", - " 12.21\n", - " 10.58\n", - " 15.71\n", - " 10.63\n", - " 15.71\n", - " 11.08\n", - " 13.17\n", - " 12.62\n", - " 17.67\n", - " 22.71\n", - " 1962-02-01\n", - " 2\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-03-01\n", - " 8.21\n", - " 4.83\n", - " 9.00\n", - " 4.83\n", - " 6.00\n", - " 2.21\n", - " 7.96\n", - " 1.87\n", - " 4.08\n", - " 3.92\n", - " 4.08\n", - " 5.41\n", - " 1962-03-01\n", - " 3\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-04-01\n", - " 14.33\n", - " 12.25\n", - " 11.87\n", - " 10.37\n", - " 14.92\n", - " 11.00\n", - " 19.79\n", - " 11.67\n", - " 14.09\n", - " 15.46\n", - " 16.62\n", - " 23.58\n", - " 1962-04-01\n", - " 4\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-05-01\n", - " 9.62\n", - " 9.54\n", - " 3.58\n", - " 3.33\n", - " 8.75\n", - " 3.75\n", - " 2.25\n", - " 2.58\n", - " 1.67\n", - " 2.37\n", - " 7.29\n", - " 3.25\n", - " 1962-05-01\n", - " 5\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-06-01\n", - " 5.88\n", - " 6.29\n", - " 8.67\n", - " 5.21\n", - " 5.00\n", - " 4.25\n", - " 5.91\n", - " 5.41\n", - " 4.79\n", - " 9.25\n", - " 5.25\n", - " 10.71\n", - " 1962-06-01\n", - " 6\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-07-01\n", - " 8.67\n", - " 4.17\n", - " 6.92\n", - " 6.71\n", - " 8.17\n", - " 5.66\n", - " 11.17\n", - " 9.38\n", - " 8.75\n", - " 11.12\n", - " 10.25\n", - " 17.08\n", - " 1962-07-01\n", - " 7\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-08-01\n", - " 4.58\n", - " 5.37\n", - " 6.04\n", - " 2.29\n", - " 7.87\n", - " 3.71\n", - " 4.46\n", - " 2.58\n", - " 4.00\n", - " 4.79\n", - " 7.21\n", - " 7.46\n", - " 1962-08-01\n", - " 8\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-09-01\n", - " 10.00\n", - " 12.08\n", - " 10.96\n", - " 9.25\n", - " 9.29\n", - " 7.62\n", - " 7.41\n", - " 8.75\n", - " 7.67\n", - " 9.62\n", - " 14.58\n", - " 11.92\n", - " 1962-09-01\n", - " 9\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-10-01\n", - " 14.58\n", - " 7.83\n", - " 19.21\n", - " 10.08\n", - " 11.54\n", - " 8.38\n", - " 13.29\n", - " 10.63\n", - " 8.21\n", - " 12.92\n", - " 18.05\n", - " 18.12\n", - " 1962-10-01\n", - " 10\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-11-01\n", - " 16.88\n", - " 13.25\n", - " 16.00\n", - " 8.96\n", - " 13.46\n", - " 11.46\n", - " 10.46\n", - " 10.17\n", - " 10.37\n", - " 13.21\n", - " 14.83\n", - " 15.16\n", - " 1962-11-01\n", - " 11\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-12-01\n", - " 18.38\n", - " 15.41\n", - " 11.75\n", - " 6.79\n", - " 12.21\n", - " 8.04\n", - " 8.42\n", - " 10.83\n", - " 5.66\n", - " 9.08\n", - " 11.50\n", - " 11.50\n", - " 1962-12-01\n", - " 12\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1963-01-01\n", - " 15.59\n", - " 13.62\n", - " 19.79\n", - " 8.38\n", - " 12.25\n", - " 10.00\n", - " 23.45\n", - " 15.71\n", - " 13.59\n", - " 14.37\n", - " 17.58\n", - " 34.13\n", - " 1963-01-01\n", - " 1\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-02-01\n", - " 15.41\n", - " 7.62\n", - " 24.67\n", - " 11.42\n", - " 9.21\n", - " 8.17\n", - " 14.04\n", - " 7.54\n", - " 7.54\n", - " 10.08\n", - " 10.17\n", - " 17.67\n", - " 1963-02-01\n", - " 2\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-03-01\n", - " 16.75\n", - " 19.67\n", - " 17.67\n", - " 8.87\n", - " 19.08\n", - " 15.37\n", - " 16.21\n", - " 14.29\n", - " 11.29\n", - " 9.21\n", - " 19.92\n", - " 19.79\n", - " 1963-03-01\n", - " 3\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-04-01\n", - " 10.54\n", - " 9.59\n", - " 12.46\n", - " 7.33\n", - " 9.46\n", - " 9.59\n", - " 11.79\n", - " 11.87\n", - " 9.79\n", - " 10.71\n", - " 13.37\n", - " 18.21\n", - " 1963-04-01\n", - " 4\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-05-01\n", - " 18.79\n", - " 14.17\n", - " 13.59\n", - " 11.63\n", - " 14.17\n", - " 11.96\n", - " 14.46\n", - " 12.46\n", - " 12.87\n", - " 13.96\n", - " 15.29\n", - " 21.62\n", - " 1963-05-01\n", - " 5\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-06-01\n", - " 13.37\n", - " 6.87\n", - " 12.00\n", - " 8.50\n", - " 10.04\n", - " 9.42\n", - " 10.92\n", - " 12.96\n", - " 11.79\n", - " 11.04\n", - " 10.92\n", - " 13.67\n", - " 1963-06-01\n", - " 6\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " \n", - " \n", - " 1976-07-01\n", - " 8.50\n", - " 1.75\n", - " 6.58\n", - " 2.13\n", - " 2.75\n", - " 2.21\n", - " 5.37\n", - " 2.04\n", - " 5.88\n", - " 4.50\n", - " 4.96\n", - " 10.63\n", - " 1976-07-01\n", - " 7\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-08-01\n", - " 13.00\n", - " 8.38\n", - " 8.63\n", - " 5.83\n", - " 12.92\n", - " 8.25\n", - " 13.00\n", - " 9.42\n", - " 10.58\n", - " 11.34\n", - " 14.21\n", - " 20.25\n", - " 1976-08-01\n", - " 8\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-09-01\n", - " 11.87\n", - " 11.00\n", - " 7.38\n", - " 6.87\n", - " 7.75\n", - " 8.33\n", - " 10.34\n", - " 6.46\n", - " 10.17\n", - " 9.29\n", - " 12.75\n", - " 19.55\n", - " 1976-09-01\n", - " 9\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-10-01\n", - " 10.96\n", - " 6.71\n", - " 10.41\n", - " 4.63\n", - " 7.58\n", - " 5.04\n", - " 5.04\n", - " 5.54\n", - " 6.50\n", - " 3.92\n", - " 6.79\n", - " 5.00\n", - " 1976-10-01\n", - " 10\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-11-01\n", - " 13.96\n", - " 15.67\n", - " 10.29\n", - " 6.46\n", - " 12.79\n", - " 9.08\n", - " 10.00\n", - " 9.67\n", - " 10.21\n", - " 11.63\n", - " 23.09\n", - " 21.96\n", - " 1976-11-01\n", - " 11\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-12-01\n", - " 13.46\n", - " 16.42\n", - " 9.21\n", - " 4.54\n", - " 10.75\n", - " 8.67\n", - " 10.88\n", - " 4.83\n", - " 8.79\n", - " 5.91\n", - " 8.83\n", - " 13.67\n", - " 1976-12-01\n", - " 12\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1977-01-01\n", - " 20.04\n", - " 11.92\n", - " 20.25\n", - " 9.13\n", - " 9.29\n", - " 8.04\n", - " 10.75\n", - " 5.88\n", - " 9.00\n", - " 9.00\n", - " 14.88\n", - " 25.70\n", - " 1977-01-01\n", - " 1\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-02-01\n", - " 11.83\n", - " 9.71\n", - " 11.00\n", - " 4.25\n", - " 8.58\n", - " 8.71\n", - " 6.17\n", - " 5.66\n", - " 8.29\n", - " 7.58\n", - " 11.71\n", - " 16.50\n", - " 1977-02-01\n", - " 2\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-03-01\n", - " 8.63\n", - " 14.83\n", - " 10.29\n", - " 3.75\n", - " 6.63\n", - " 8.79\n", - " 5.00\n", - " 8.12\n", - " 7.87\n", - " 6.42\n", - " 13.54\n", - " 13.67\n", - " 1977-03-01\n", - " 3\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-04-01\n", - " 21.67\n", - " 16.00\n", - " 17.33\n", - " 13.59\n", - " 20.83\n", - " 15.96\n", - " 25.62\n", - " 17.62\n", - " 19.41\n", - " 20.67\n", - " 24.37\n", - " 30.09\n", - " 1977-04-01\n", - " 4\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-05-01\n", - " 6.42\n", - " 7.12\n", - " 8.67\n", - " 3.58\n", - " 4.58\n", - " 4.00\n", - " 6.75\n", - " 6.13\n", - " 3.33\n", - " 4.50\n", - " 19.21\n", - " 12.38\n", - " 1977-05-01\n", - " 5\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-06-01\n", - " 7.08\n", - " 5.25\n", - " 9.71\n", - " 2.83\n", - " 2.21\n", - " 3.50\n", - " 5.29\n", - " 1.42\n", - " 2.00\n", - " 0.92\n", - " 5.21\n", - " 5.63\n", - " 1977-06-01\n", - " 6\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-07-01\n", - " 15.41\n", - " 16.29\n", - " 17.08\n", - " 6.25\n", - " 11.83\n", - " 11.83\n", - " 12.29\n", - " 10.58\n", - " 10.41\n", - " 7.21\n", - " 17.37\n", - " 7.83\n", - " 1977-07-01\n", - " 7\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-08-01\n", - " 4.33\n", - " 2.96\n", - " 4.42\n", - " 2.33\n", - " 0.96\n", - " 1.08\n", - " 4.96\n", - " 1.87\n", - " 2.33\n", - " 2.04\n", - " 10.50\n", - " 9.83\n", - " 1977-08-01\n", - " 8\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-09-01\n", - " 17.37\n", - " 16.33\n", - " 16.83\n", - " 8.58\n", - " 14.46\n", - " 11.83\n", - " 15.09\n", - " 13.92\n", - " 13.29\n", - " 13.88\n", - " 23.29\n", - " 25.17\n", - " 1977-09-01\n", - " 9\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-10-01\n", - " 16.75\n", - " 15.34\n", - " 12.25\n", - " 9.42\n", - " 16.38\n", - " 11.38\n", - " 18.50\n", - " 13.92\n", - " 14.09\n", - " 14.46\n", - " 22.34\n", - " 29.67\n", - " 1977-10-01\n", - " 10\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-11-01\n", - " 16.71\n", - " 11.54\n", - " 12.17\n", - " 4.17\n", - " 8.54\n", - " 7.17\n", - " 11.12\n", - " 6.46\n", - " 8.25\n", - " 6.21\n", - " 11.04\n", - " 15.63\n", - " 1977-11-01\n", - " 11\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-12-01\n", - " 13.37\n", - " 10.92\n", - " 12.42\n", - " 2.37\n", - " 5.79\n", - " 6.13\n", - " 8.96\n", - " 7.38\n", - " 6.29\n", - " 5.71\n", - " 8.54\n", - " 12.42\n", - " 1977-12-01\n", - " 12\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1978-01-01\n", - " 8.33\n", - " 7.12\n", - " 7.71\n", - " 3.54\n", - " 8.50\n", - " 7.50\n", - " 14.71\n", - " 10.00\n", - " 11.83\n", - " 10.00\n", - " 15.09\n", - " 20.46\n", - " 1978-01-01\n", - " 1\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-02-01\n", - " 27.25\n", - " 24.21\n", - " 18.16\n", - " 17.46\n", - " 27.54\n", - " 18.05\n", - " 20.96\n", - " 25.04\n", - " 20.04\n", - " 17.50\n", - " 27.71\n", - " 21.12\n", - " 1978-02-01\n", - " 2\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-03-01\n", - " 15.04\n", - " 6.21\n", - " 16.04\n", - " 7.87\n", - " 6.42\n", - " 6.67\n", - " 12.29\n", - " 8.00\n", - " 10.58\n", - " 9.33\n", - " 5.41\n", - " 17.00\n", - " 1978-03-01\n", - " 3\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-04-01\n", - " 3.42\n", - " 7.58\n", - " 2.71\n", - " 1.38\n", - " 3.46\n", - " 2.08\n", - " 2.67\n", - " 4.75\n", - " 4.83\n", - " 1.67\n", - " 7.33\n", - " 13.67\n", - " 1978-04-01\n", - " 4\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-05-01\n", - " 10.54\n", - " 12.21\n", - " 9.08\n", - " 5.29\n", - " 11.00\n", - " 10.08\n", - " 11.17\n", - " 13.75\n", - " 11.87\n", - " 11.79\n", - " 12.87\n", - " 27.16\n", - " 1978-05-01\n", - " 5\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-06-01\n", - " 10.37\n", - " 11.42\n", - " 6.46\n", - " 6.04\n", - " 11.25\n", - " 7.50\n", - " 6.46\n", - " 5.96\n", - " 7.79\n", - " 5.46\n", - " 5.50\n", - " 10.41\n", - " 1978-06-01\n", - " 6\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-07-01\n", - " 12.46\n", - " 10.63\n", - " 11.17\n", - " 6.75\n", - " 12.92\n", - " 9.04\n", - " 12.42\n", - " 9.62\n", - " 12.08\n", - " 8.04\n", - " 14.04\n", - " 16.17\n", - " 1978-07-01\n", - " 7\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-08-01\n", - " 19.33\n", - " 15.09\n", - " 20.17\n", - " 8.83\n", - " 12.62\n", - " 10.41\n", - " 9.33\n", - " 12.33\n", - " 9.50\n", - " 9.92\n", - " 15.75\n", - " 18.00\n", - " 1978-08-01\n", - " 8\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-09-01\n", - " 8.42\n", - " 6.13\n", - " 9.87\n", - " 5.25\n", - " 3.21\n", - " 5.71\n", - " 7.25\n", - " 3.50\n", - " 7.33\n", - " 6.50\n", - " 7.62\n", - " 15.96\n", - " 1978-09-01\n", - " 9\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-10-01\n", - " 9.50\n", - " 6.83\n", - " 10.50\n", - " 3.88\n", - " 6.13\n", - " 4.58\n", - " 4.21\n", - " 6.50\n", - " 6.38\n", - " 6.54\n", - " 10.63\n", - " 14.09\n", - " 1978-10-01\n", - " 10\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-11-01\n", - " 13.59\n", - " 16.75\n", - " 11.25\n", - " 7.08\n", - " 11.04\n", - " 8.33\n", - " 8.17\n", - " 11.29\n", - " 10.75\n", - " 11.25\n", - " 23.13\n", - " 25.00\n", - " 1978-11-01\n", - " 11\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-12-01\n", - " 21.29\n", - " 16.29\n", - " 24.04\n", - " 12.79\n", - " 18.21\n", - " 19.29\n", - " 21.54\n", - " 17.21\n", - " 16.71\n", - " 17.83\n", - " 17.75\n", - " 25.70\n", - " 1978-12-01\n", - " 12\n", - " 1978\n", - " 1\n", + " 1976-07\n", + " 9.687742\n", + " 7.980968\n", + " 8.267742\n", + " 4.631613\n", + " 7.576774\n", + " 4.927419\n", + " 6.994839\n", + " 5.135806\n", + " 7.941290\n", + " 6.491290\n", + " 10.264194\n", + " 11.912258\n", + " \n", + " \n", + " 1976-08\n", + " 7.640645\n", + " 5.366129\n", + " 9.000645\n", + " 3.142258\n", + " 4.695484\n", + " 3.847742\n", + " 5.437097\n", + " 3.362581\n", + " 5.946452\n", + " 4.496452\n", + " 7.079677\n", + " 9.438387\n", + " \n", + " \n", + " 1976-09\n", + " 11.703667\n", + " 10.515333\n", + " 10.466333\n", + " 5.313333\n", + " 8.761333\n", + " 7.062333\n", + " 8.617667\n", + " 6.415333\n", + " 8.953333\n", + " 7.263333\n", + " 11.587000\n", + " 17.634000\n", + " \n", + " \n", + " 1976-10\n", + " 12.427097\n", + " 9.572258\n", + " 10.640000\n", + " 4.885484\n", + " 9.393548\n", + " 6.906452\n", + " 6.380323\n", + " 6.933226\n", + " 7.552258\n", + " 7.449032\n", + " 11.837742\n", + " 15.078065\n", + " \n", + " \n", + " 1976-11\n", + " 10.962667\n", + " 9.443667\n", + " 9.202000\n", + " 3.696000\n", + " 7.459333\n", + " 7.026333\n", + " 9.058333\n", + " 5.791000\n", + " 6.577000\n", + " 7.512333\n", + " 12.568333\n", + " 15.685333\n", + " \n", + " \n", + " 1976-12\n", + " 11.962258\n", + " 10.086774\n", + " 10.474516\n", + " 3.383871\n", + " 7.645484\n", + " 6.148387\n", + " 8.034516\n", + " 4.500000\n", + " 5.952258\n", + " 6.147742\n", + " 7.814839\n", + " 14.346774\n", + " \n", + " \n", + " 1977-01\n", + " 13.404516\n", + " 10.377742\n", + " 12.764839\n", + " 5.884516\n", + " 9.159677\n", + " 8.005161\n", + " 10.107419\n", + " 7.211613\n", + " 8.280000\n", + " 9.328387\n", + " 12.131935\n", + " 18.830000\n", + " \n", + " \n", + " 1977-02\n", + " 12.336786\n", + " 11.898929\n", + " 12.016786\n", + " 5.317500\n", + " 10.134643\n", + " 9.423929\n", + " 10.949643\n", + " 7.965357\n", + " 9.320000\n", + " 8.711429\n", + " 11.435357\n", + " 17.561429\n", + " \n", + " \n", + " 1977-03\n", + " 16.750000\n", + " 14.499677\n", + " 16.118387\n", + " 8.414516\n", + " 13.293871\n", + " 11.562258\n", + " 14.283226\n", + " 11.361613\n", + " 12.102581\n", + " 11.906452\n", + " 15.863226\n", + " 19.133548\n", + " \n", + " \n", + " 1977-04\n", + " 14.955333\n", + " 12.293000\n", + " 12.689667\n", + " 7.422333\n", + " 11.740000\n", + " 10.137000\n", + " 13.887667\n", + " 9.574000\n", + " 10.342333\n", + " 11.419667\n", + " 15.593667\n", + " 18.274667\n", + " \n", + " \n", + " 1977-05\n", + " 9.441290\n", + " 7.173871\n", + " 12.455806\n", + " 4.507742\n", + " 6.198387\n", + " 6.689677\n", + " 9.226452\n", + " 5.638387\n", + " 6.699355\n", + " 6.045484\n", + " 10.213548\n", + " 11.936129\n", + " \n", + " \n", + " 1977-06\n", + " 11.040000\n", + " 8.353000\n", + " 12.228000\n", + " 4.864000\n", + " 8.790333\n", + " 7.209667\n", + " 8.799667\n", + " 5.931000\n", + " 7.065333\n", + " 6.583333\n", + " 11.321333\n", + " 11.175333\n", + " \n", + " \n", + " 1977-07\n", + " 10.881935\n", + " 8.663548\n", + " 10.816452\n", + " 5.419677\n", + " 9.014839\n", + " 7.600000\n", + " 9.961935\n", + " 6.526129\n", + " 7.980968\n", + " 7.620000\n", + " 12.924194\n", + " 12.186774\n", + " \n", + " \n", + " 1977-08\n", + " 9.233548\n", + " 7.727742\n", + " 10.679032\n", + " 4.453871\n", + " 6.620645\n", + " 5.961290\n", + " 8.943548\n", + " 4.543226\n", + " 6.384839\n", + " 5.694839\n", + " 9.825161\n", + " 11.659355\n", + " \n", + " \n", + " 1977-09\n", + " 12.472333\n", + " 10.742667\n", + " 11.849333\n", + " 5.638667\n", + " 10.077333\n", + " 8.242667\n", + " 11.939333\n", + " 7.923000\n", + " 8.828000\n", + " 8.506333\n", + " 14.051000\n", + " 17.030333\n", + " \n", + " \n", + " 1977-10\n", + " 15.004516\n", + " 13.960000\n", + " 12.819677\n", + " 6.754194\n", + " 11.779032\n", + " 9.671613\n", + " 12.924839\n", + " 11.875161\n", + " 11.481290\n", + " 10.340323\n", + " 17.640968\n", + " 19.842903\n", + " \n", + " \n", + " 1977-11\n", + " 16.946667\n", + " 15.444667\n", + " 13.561333\n", + " 7.584000\n", + " 12.088667\n", + " 9.161333\n", + " 14.051000\n", + " 11.286000\n", + " 10.318667\n", + " 10.327000\n", + " 17.215333\n", + " 22.333000\n", + " \n", + " \n", + " 1977-12\n", + " 14.751935\n", + " 12.744839\n", + " 13.469677\n", + " 6.592258\n", + " 11.247742\n", + " 9.466774\n", + " 13.231613\n", + " 10.703871\n", + " 10.401613\n", + " 9.415484\n", + " 13.237419\n", + " 19.299677\n", + " \n", + " \n", + " 1978-01\n", + " 14.291935\n", + " 11.872258\n", + " 12.014194\n", + " 6.463226\n", + " 11.402903\n", + " 7.517097\n", + " 12.207097\n", + " 10.206452\n", + " 9.549032\n", + " 9.247419\n", + " 15.101613\n", + " 20.715806\n", + " \n", + " \n", + " 1978-02\n", + " 14.143571\n", + " 12.153214\n", + " 13.803214\n", + " 6.828929\n", + " 11.196786\n", + " 7.858929\n", + " 11.903214\n", + " 11.068929\n", + " 10.052143\n", + " 8.093929\n", + " 10.353929\n", + " 17.298571\n", + " \n", + " \n", + " 1978-03\n", + " 14.717097\n", + " 14.601935\n", + " 13.334194\n", + " 8.231290\n", + " 12.783226\n", + " 9.488710\n", + " 12.129355\n", + " 11.665161\n", + " 11.656452\n", + " 9.657097\n", + " 14.234194\n", + " 18.611290\n", + " \n", + " \n", + " 1978-04\n", + " 11.805000\n", + " 11.255667\n", + " 12.516333\n", + " 5.920333\n", + " 10.218000\n", + " 7.301667\n", + " 8.586333\n", + " 8.306667\n", + " 8.537000\n", + " 6.999000\n", + " 11.190667\n", + " 14.152000\n", + " \n", + " \n", + " 1978-05\n", + " 8.270645\n", + " 7.226774\n", + " 6.901613\n", + " 3.740645\n", + " 6.973871\n", + " 4.449677\n", + " 5.420968\n", + " 6.130645\n", + " 5.742581\n", + " 5.926452\n", + " 9.263548\n", + " 10.756452\n", + " \n", + " \n", + " 1978-06\n", + " 11.386667\n", + " 9.474333\n", + " 10.253333\n", + " 6.053000\n", + " 10.395333\n", + " 7.490333\n", + " 7.928000\n", + " 7.802000\n", + " 8.220333\n", + " 7.550000\n", + " 11.501000\n", + " 15.078667\n", + " \n", + " \n", + " 1978-07\n", + " 12.820000\n", + " 9.750968\n", + " 9.910323\n", + " 6.483871\n", + " 10.055161\n", + " 7.820645\n", + " 7.831935\n", + " 8.459355\n", + " 8.523871\n", + " 7.732903\n", + " 12.648710\n", + " 14.077419\n", + " \n", + " \n", + " 1978-08\n", + " 9.645161\n", + " 8.259355\n", + " 9.032258\n", + " 4.502903\n", + " 7.368065\n", + " 5.935161\n", + " 5.650323\n", + " 5.417742\n", + " 7.241290\n", + " 5.536774\n", + " 10.466774\n", + " 12.054194\n", + " \n", + " \n", + " 1978-09\n", + " 10.913667\n", + " 10.895000\n", + " 10.635000\n", + " 5.725000\n", + " 10.372000\n", + " 9.278333\n", + " 10.790333\n", + " 9.583000\n", + " 10.069333\n", + " 8.939000\n", + " 15.680333\n", + " 19.391333\n", + " \n", + " \n", + " 1978-10\n", + " 9.897742\n", + " 8.670968\n", + " 9.295806\n", + " 4.721290\n", + " 8.525161\n", + " 6.774194\n", + " 8.115484\n", + " 7.337742\n", + " 8.297742\n", + " 8.243871\n", + " 13.776774\n", + " 17.150000\n", + " \n", + " \n", + " 1978-11\n", + " 16.151667\n", + " 14.802667\n", + " 13.508000\n", + " 7.317333\n", + " 11.475000\n", + " 8.743000\n", + " 11.492333\n", + " 9.657333\n", + " 10.701333\n", + " 10.676000\n", + " 17.404667\n", + " 20.723000\n", + " \n", + " \n", + " 1978-12\n", + " 16.175484\n", + " 13.748065\n", + " 15.635161\n", + " 7.094839\n", + " 11.398710\n", + " 9.241613\n", + " 12.077419\n", + " 10.194839\n", + " 10.616774\n", + " 11.028710\n", + " 13.859677\n", + " 21.371613\n", " \n", " \n", "\n", - "

216 rows × 16 columns

\n", + "

216 rows × 12 columns

\n", "" ], "text/plain": [ - " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", + " RPT VAL ROS KIL SHA BIR \\\n", "Yr_Mo_Dy \n", - "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", - "1961-02-01 14.25 15.12 9.04 5.88 12.08 7.17 10.17 3.63 6.50 \n", - "1961-03-01 12.67 13.13 11.79 6.42 9.79 8.54 10.25 13.29 NaN \n", - "1961-04-01 8.38 6.34 8.33 6.75 9.33 9.54 11.67 8.21 11.21 \n", - "1961-05-01 15.87 13.88 15.37 9.79 13.46 10.17 9.96 14.04 9.75 \n", - "1961-06-01 15.92 9.59 12.04 8.79 11.54 6.04 9.75 8.29 9.33 \n", - "1961-07-01 7.21 6.83 7.71 4.42 8.46 4.79 6.71 6.00 5.79 \n", - "1961-08-01 9.59 5.09 5.54 4.63 8.29 5.25 4.21 5.25 5.37 \n", - "1961-09-01 5.58 1.13 4.96 3.04 4.25 2.25 4.63 2.71 3.67 \n", - "1961-10-01 14.25 12.87 7.87 8.00 13.00 7.75 5.83 9.00 7.08 \n", - "1961-11-01 13.21 13.13 14.33 8.54 12.17 10.21 13.08 12.17 10.92 \n", - "1961-12-01 9.67 7.75 8.00 3.96 6.00 2.75 7.25 2.50 5.58 \n", - "1962-01-01 9.29 3.42 11.54 3.50 2.21 1.96 10.41 2.79 3.54 \n", - "1962-02-01 19.12 13.96 12.21 10.58 15.71 10.63 15.71 11.08 13.17 \n", - "1962-03-01 8.21 4.83 9.00 4.83 6.00 2.21 7.96 1.87 4.08 \n", - "1962-04-01 14.33 12.25 11.87 10.37 14.92 11.00 19.79 11.67 14.09 \n", - "1962-05-01 9.62 9.54 3.58 3.33 8.75 3.75 2.25 2.58 1.67 \n", - "1962-06-01 5.88 6.29 8.67 5.21 5.00 4.25 5.91 5.41 4.79 \n", - "1962-07-01 8.67 4.17 6.92 6.71 8.17 5.66 11.17 9.38 8.75 \n", - "1962-08-01 4.58 5.37 6.04 2.29 7.87 3.71 4.46 2.58 4.00 \n", - "1962-09-01 10.00 12.08 10.96 9.25 9.29 7.62 7.41 8.75 7.67 \n", - "1962-10-01 14.58 7.83 19.21 10.08 11.54 8.38 13.29 10.63 8.21 \n", - "1962-11-01 16.88 13.25 16.00 8.96 13.46 11.46 10.46 10.17 10.37 \n", - "1962-12-01 18.38 15.41 11.75 6.79 12.21 8.04 8.42 10.83 5.66 \n", - "1963-01-01 15.59 13.62 19.79 8.38 12.25 10.00 23.45 15.71 13.59 \n", - "1963-02-01 15.41 7.62 24.67 11.42 9.21 8.17 14.04 7.54 7.54 \n", - "1963-03-01 16.75 19.67 17.67 8.87 19.08 15.37 16.21 14.29 11.29 \n", - "1963-04-01 10.54 9.59 12.46 7.33 9.46 9.59 11.79 11.87 9.79 \n", - "1963-05-01 18.79 14.17 13.59 11.63 14.17 11.96 14.46 12.46 12.87 \n", - "1963-06-01 13.37 6.87 12.00 8.50 10.04 9.42 10.92 12.96 11.79 \n", - "... ... ... ... ... ... ... ... ... ... \n", - "1976-07-01 8.50 1.75 6.58 2.13 2.75 2.21 5.37 2.04 5.88 \n", - "1976-08-01 13.00 8.38 8.63 5.83 12.92 8.25 13.00 9.42 10.58 \n", - "1976-09-01 11.87 11.00 7.38 6.87 7.75 8.33 10.34 6.46 10.17 \n", - "1976-10-01 10.96 6.71 10.41 4.63 7.58 5.04 5.04 5.54 6.50 \n", - "1976-11-01 13.96 15.67 10.29 6.46 12.79 9.08 10.00 9.67 10.21 \n", - "1976-12-01 13.46 16.42 9.21 4.54 10.75 8.67 10.88 4.83 8.79 \n", - "1977-01-01 20.04 11.92 20.25 9.13 9.29 8.04 10.75 5.88 9.00 \n", - "1977-02-01 11.83 9.71 11.00 4.25 8.58 8.71 6.17 5.66 8.29 \n", - "1977-03-01 8.63 14.83 10.29 3.75 6.63 8.79 5.00 8.12 7.87 \n", - "1977-04-01 21.67 16.00 17.33 13.59 20.83 15.96 25.62 17.62 19.41 \n", - "1977-05-01 6.42 7.12 8.67 3.58 4.58 4.00 6.75 6.13 3.33 \n", - "1977-06-01 7.08 5.25 9.71 2.83 2.21 3.50 5.29 1.42 2.00 \n", - "1977-07-01 15.41 16.29 17.08 6.25 11.83 11.83 12.29 10.58 10.41 \n", - "1977-08-01 4.33 2.96 4.42 2.33 0.96 1.08 4.96 1.87 2.33 \n", - "1977-09-01 17.37 16.33 16.83 8.58 14.46 11.83 15.09 13.92 13.29 \n", - "1977-10-01 16.75 15.34 12.25 9.42 16.38 11.38 18.50 13.92 14.09 \n", - "1977-11-01 16.71 11.54 12.17 4.17 8.54 7.17 11.12 6.46 8.25 \n", - "1977-12-01 13.37 10.92 12.42 2.37 5.79 6.13 8.96 7.38 6.29 \n", - "1978-01-01 8.33 7.12 7.71 3.54 8.50 7.50 14.71 10.00 11.83 \n", - "1978-02-01 27.25 24.21 18.16 17.46 27.54 18.05 20.96 25.04 20.04 \n", - "1978-03-01 15.04 6.21 16.04 7.87 6.42 6.67 12.29 8.00 10.58 \n", - "1978-04-01 3.42 7.58 2.71 1.38 3.46 2.08 2.67 4.75 4.83 \n", - "1978-05-01 10.54 12.21 9.08 5.29 11.00 10.08 11.17 13.75 11.87 \n", - "1978-06-01 10.37 11.42 6.46 6.04 11.25 7.50 6.46 5.96 7.79 \n", - "1978-07-01 12.46 10.63 11.17 6.75 12.92 9.04 12.42 9.62 12.08 \n", - "1978-08-01 19.33 15.09 20.17 8.83 12.62 10.41 9.33 12.33 9.50 \n", - "1978-09-01 8.42 6.13 9.87 5.25 3.21 5.71 7.25 3.50 7.33 \n", - "1978-10-01 9.50 6.83 10.50 3.88 6.13 4.58 4.21 6.50 6.38 \n", - "1978-11-01 13.59 16.75 11.25 7.08 11.04 8.33 8.17 11.29 10.75 \n", - "1978-12-01 21.29 16.29 24.04 12.79 18.21 19.29 21.54 17.21 16.71 \n", + "1961-01 14.841333 11.988333 13.431613 7.736774 11.072759 8.588065 \n", + "1961-02 16.269286 14.975357 14.441481 9.230741 13.852143 10.937500 \n", + "1961-03 10.890000 11.296452 10.752903 7.284000 10.509355 8.866774 \n", + "1961-04 10.722667 9.427667 9.998000 5.830667 8.435000 6.495000 \n", + "1961-05 9.860968 8.850000 10.818065 5.905333 9.490323 6.574839 \n", + "1961-06 9.904138 8.520333 8.867000 6.083000 10.824000 6.707333 \n", + "1961-07 10.614194 8.221613 9.110323 6.340968 10.532581 6.198387 \n", + "1961-08 12.035000 10.133871 10.335806 6.845806 12.715161 8.441935 \n", + "1961-09 12.531000 9.656897 10.776897 7.155517 11.003333 7.234000 \n", + "1961-10 14.289667 10.915806 12.236452 8.154839 11.865484 8.333871 \n", + "1961-11 10.896333 8.592667 11.850333 6.045667 9.123667 6.250667 \n", + "1961-12 14.973548 11.903871 13.980323 7.073871 11.323548 8.302258 \n", + "1962-01 14.783871 13.160323 12.591935 7.538065 11.779677 8.720000 \n", + "1962-02 15.844643 12.041429 15.178929 9.262963 13.821429 9.726786 \n", + "1962-03 11.634333 8.602258 12.110645 6.403226 10.352258 6.732258 \n", + "1962-04 12.160667 9.676667 12.088333 7.163000 10.544000 7.558000 \n", + "1962-05 12.745806 10.865484 11.874839 7.471935 11.285806 7.209032 \n", + "1962-06 10.305667 9.677000 9.996333 6.846667 10.711333 7.441333 \n", + "1962-07 9.981935 8.370645 9.753548 6.093226 9.112903 5.877097 \n", + "1962-08 10.964194 9.694194 10.184516 6.701290 10.465161 7.009032 \n", + "1962-09 11.176333 9.507000 11.640000 6.164333 9.722333 6.214000 \n", + "1962-10 9.699355 8.063548 9.357097 4.818065 8.432258 5.730000 \n", + "1962-11 11.071333 7.984000 12.035667 5.740000 8.135667 6.338333 \n", + "1962-12 16.785484 13.753548 14.276452 9.557419 13.724839 10.321613 \n", + "1963-01 14.868387 11.112903 15.121613 6.635806 11.080645 7.835484 \n", + "1963-02 14.418929 11.876429 15.697500 8.611786 12.887857 9.600357 \n", + "1963-03 14.853871 12.271290 14.295806 9.268387 13.112903 10.088065 \n", + "1963-04 11.616000 10.138000 13.233667 7.990333 11.515333 9.727000 \n", + "1963-05 12.879677 11.010645 12.881290 8.411613 12.981613 9.739677 \n", + "1963-06 10.623333 8.434667 11.685000 6.420333 10.142667 7.219333 \n", + "... ... ... ... ... ... ... \n", + "1976-07 9.687742 7.980968 8.267742 4.631613 7.576774 4.927419 \n", + "1976-08 7.640645 5.366129 9.000645 3.142258 4.695484 3.847742 \n", + "1976-09 11.703667 10.515333 10.466333 5.313333 8.761333 7.062333 \n", + "1976-10 12.427097 9.572258 10.640000 4.885484 9.393548 6.906452 \n", + "1976-11 10.962667 9.443667 9.202000 3.696000 7.459333 7.026333 \n", + "1976-12 11.962258 10.086774 10.474516 3.383871 7.645484 6.148387 \n", + "1977-01 13.404516 10.377742 12.764839 5.884516 9.159677 8.005161 \n", + "1977-02 12.336786 11.898929 12.016786 5.317500 10.134643 9.423929 \n", + "1977-03 16.750000 14.499677 16.118387 8.414516 13.293871 11.562258 \n", + "1977-04 14.955333 12.293000 12.689667 7.422333 11.740000 10.137000 \n", + "1977-05 9.441290 7.173871 12.455806 4.507742 6.198387 6.689677 \n", + "1977-06 11.040000 8.353000 12.228000 4.864000 8.790333 7.209667 \n", + "1977-07 10.881935 8.663548 10.816452 5.419677 9.014839 7.600000 \n", + "1977-08 9.233548 7.727742 10.679032 4.453871 6.620645 5.961290 \n", + "1977-09 12.472333 10.742667 11.849333 5.638667 10.077333 8.242667 \n", + "1977-10 15.004516 13.960000 12.819677 6.754194 11.779032 9.671613 \n", + "1977-11 16.946667 15.444667 13.561333 7.584000 12.088667 9.161333 \n", + "1977-12 14.751935 12.744839 13.469677 6.592258 11.247742 9.466774 \n", + "1978-01 14.291935 11.872258 12.014194 6.463226 11.402903 7.517097 \n", + "1978-02 14.143571 12.153214 13.803214 6.828929 11.196786 7.858929 \n", + "1978-03 14.717097 14.601935 13.334194 8.231290 12.783226 9.488710 \n", + "1978-04 11.805000 11.255667 12.516333 5.920333 10.218000 7.301667 \n", + "1978-05 8.270645 7.226774 6.901613 3.740645 6.973871 4.449677 \n", + "1978-06 11.386667 9.474333 10.253333 6.053000 10.395333 7.490333 \n", + "1978-07 12.820000 9.750968 9.910323 6.483871 10.055161 7.820645 \n", + "1978-08 9.645161 8.259355 9.032258 4.502903 7.368065 5.935161 \n", + "1978-09 10.913667 10.895000 10.635000 5.725000 10.372000 9.278333 \n", + "1978-10 9.897742 8.670968 9.295806 4.721290 8.525161 6.774194 \n", + "1978-11 16.151667 14.802667 13.508000 7.317333 11.475000 8.743000 \n", + "1978-12 16.175484 13.748065 15.635161 7.094839 11.398710 9.241613 \n", "\n", - " CLO BEL MAL date month year day \n", - "Yr_Mo_Dy \n", - "1961-01-01 12.58 18.50 15.04 1961-01-01 1 1961 1 \n", - "1961-02-01 5.50 9.17 8.00 1961-02-01 2 1961 1 \n", - "1961-03-01 12.21 20.62 NaN 1961-03-01 3 1961 1 \n", - "1961-04-01 6.46 11.96 7.17 1961-04-01 4 1961 1 \n", - "1961-05-01 9.92 18.63 11.12 1961-05-01 5 1961 1 \n", - "1961-06-01 10.34 10.67 12.12 1961-06-01 6 1961 1 \n", - "1961-07-01 7.96 6.96 8.71 1961-07-01 7 1961 1 \n", - "1961-08-01 5.41 8.38 9.08 1961-08-01 8 1961 1 \n", - "1961-09-01 6.00 4.79 5.41 1961-09-01 9 1961 1 \n", - "1961-10-01 5.29 11.79 4.04 1961-10-01 10 1961 1 \n", - "1961-11-01 13.54 20.17 20.04 1961-11-01 11 1961 1 \n", - "1961-12-01 5.58 7.79 11.17 1961-12-01 12 1961 1 \n", - "1962-01-01 5.17 4.38 7.92 1962-01-01 1 1962 1 \n", - "1962-02-01 12.62 17.67 22.71 1962-02-01 2 1962 1 \n", - "1962-03-01 3.92 4.08 5.41 1962-03-01 3 1962 1 \n", - "1962-04-01 15.46 16.62 23.58 1962-04-01 4 1962 1 \n", - "1962-05-01 2.37 7.29 3.25 1962-05-01 5 1962 1 \n", - "1962-06-01 9.25 5.25 10.71 1962-06-01 6 1962 1 \n", - "1962-07-01 11.12 10.25 17.08 1962-07-01 7 1962 1 \n", - "1962-08-01 4.79 7.21 7.46 1962-08-01 8 1962 1 \n", - "1962-09-01 9.62 14.58 11.92 1962-09-01 9 1962 1 \n", - "1962-10-01 12.92 18.05 18.12 1962-10-01 10 1962 1 \n", - "1962-11-01 13.21 14.83 15.16 1962-11-01 11 1962 1 \n", - "1962-12-01 9.08 11.50 11.50 1962-12-01 12 1962 1 \n", - "1963-01-01 14.37 17.58 34.13 1963-01-01 1 1963 1 \n", - "1963-02-01 10.08 10.17 17.67 1963-02-01 2 1963 1 \n", - "1963-03-01 9.21 19.92 19.79 1963-03-01 3 1963 1 \n", - "1963-04-01 10.71 13.37 18.21 1963-04-01 4 1963 1 \n", - "1963-05-01 13.96 15.29 21.62 1963-05-01 5 1963 1 \n", - "1963-06-01 11.04 10.92 13.67 1963-06-01 6 1963 1 \n", - "... ... ... ... ... ... ... ... \n", - "1976-07-01 4.50 4.96 10.63 1976-07-01 7 1976 1 \n", - "1976-08-01 11.34 14.21 20.25 1976-08-01 8 1976 1 \n", - "1976-09-01 9.29 12.75 19.55 1976-09-01 9 1976 1 \n", - "1976-10-01 3.92 6.79 5.00 1976-10-01 10 1976 1 \n", - "1976-11-01 11.63 23.09 21.96 1976-11-01 11 1976 1 \n", - "1976-12-01 5.91 8.83 13.67 1976-12-01 12 1976 1 \n", - "1977-01-01 9.00 14.88 25.70 1977-01-01 1 1977 1 \n", - "1977-02-01 7.58 11.71 16.50 1977-02-01 2 1977 1 \n", - "1977-03-01 6.42 13.54 13.67 1977-03-01 3 1977 1 \n", - "1977-04-01 20.67 24.37 30.09 1977-04-01 4 1977 1 \n", - "1977-05-01 4.50 19.21 12.38 1977-05-01 5 1977 1 \n", - "1977-06-01 0.92 5.21 5.63 1977-06-01 6 1977 1 \n", - "1977-07-01 7.21 17.37 7.83 1977-07-01 7 1977 1 \n", - "1977-08-01 2.04 10.50 9.83 1977-08-01 8 1977 1 \n", - "1977-09-01 13.88 23.29 25.17 1977-09-01 9 1977 1 \n", - "1977-10-01 14.46 22.34 29.67 1977-10-01 10 1977 1 \n", - "1977-11-01 6.21 11.04 15.63 1977-11-01 11 1977 1 \n", - "1977-12-01 5.71 8.54 12.42 1977-12-01 12 1977 1 \n", - "1978-01-01 10.00 15.09 20.46 1978-01-01 1 1978 1 \n", - "1978-02-01 17.50 27.71 21.12 1978-02-01 2 1978 1 \n", - "1978-03-01 9.33 5.41 17.00 1978-03-01 3 1978 1 \n", - "1978-04-01 1.67 7.33 13.67 1978-04-01 4 1978 1 \n", - "1978-05-01 11.79 12.87 27.16 1978-05-01 5 1978 1 \n", - "1978-06-01 5.46 5.50 10.41 1978-06-01 6 1978 1 \n", - "1978-07-01 8.04 14.04 16.17 1978-07-01 7 1978 1 \n", - "1978-08-01 9.92 15.75 18.00 1978-08-01 8 1978 1 \n", - "1978-09-01 6.50 7.62 15.96 1978-09-01 9 1978 1 \n", - "1978-10-01 6.54 10.63 14.09 1978-10-01 10 1978 1 \n", - "1978-11-01 11.25 23.13 25.00 1978-11-01 11 1978 1 \n", - "1978-12-01 17.83 17.75 25.70 1978-12-01 12 1978 1 \n", + " DUB CLA MUL CLO BEL MAL \n", + "Yr_Mo_Dy \n", + "1961-01 11.184839 9.245333 9.085806 10.107419 13.880968 14.703226 \n", + "1961-02 11.890714 11.846071 11.821429 12.714286 18.583214 15.411786 \n", + "1961-03 9.644194 9.829677 10.294138 11.251935 16.410968 15.720000 \n", + "1961-04 6.925333 7.094667 7.342333 7.237000 11.147333 10.278333 \n", + "1961-05 7.604000 8.177097 8.039355 8.499355 11.900323 12.011613 \n", + "1961-06 9.095667 8.849333 9.086667 9.940333 13.995000 14.553793 \n", + "1961-07 8.353333 8.284194 8.077097 8.891613 11.092581 12.312903 \n", + "1961-08 10.093871 10.460968 9.111613 10.544667 14.410000 14.345333 \n", + "1961-09 8.206000 8.936552 7.728333 9.931333 13.718333 12.921667 \n", + "1961-10 11.194194 9.271935 8.942667 11.455806 14.229355 16.793226 \n", + "1961-11 10.869655 6.313667 6.575000 8.383667 10.776667 12.146000 \n", + "1961-12 11.753548 8.163226 7.965806 9.246774 12.239355 13.098710 \n", + "1962-01 14.211935 9.600000 9.670000 11.498710 16.369355 15.661613 \n", + "1962-02 16.916429 11.285357 12.021071 12.126429 16.705357 18.426786 \n", + "1962-03 10.223226 7.641935 7.092258 8.052581 9.690000 11.509000 \n", + "1962-04 11.480000 8.722000 8.703667 9.311667 12.234333 11.780667 \n", + "1962-05 10.105806 9.084516 7.868065 9.293226 12.130000 12.922581 \n", + "1962-06 10.548667 10.306667 9.196000 10.520333 13.757000 15.218333 \n", + "1962-07 7.781613 8.123226 6.829677 8.613226 10.783871 11.326129 \n", + "1962-08 11.136774 9.097419 8.645484 9.511613 13.119032 15.420968 \n", + "1962-09 8.488000 7.020333 6.372667 8.286000 11.483667 12.313333 \n", + "1962-10 8.448065 7.626774 6.630645 9.091290 13.286774 14.090323 \n", + "1962-11 9.615333 5.943000 6.362333 8.084333 9.786667 13.298333 \n", + "1962-12 13.735806 11.212258 10.683548 11.881935 16.043548 20.074516 \n", + "1963-01 12.797419 9.844839 7.841613 9.390000 11.428710 18.822258 \n", + "1963-02 12.729286 10.823214 8.981786 10.355714 13.266429 17.120714 \n", + "1963-03 12.168387 11.340968 9.690968 11.515484 13.982903 14.132581 \n", + "1963-04 11.979000 11.353000 10.341667 11.900333 13.875667 16.333667 \n", + "1963-05 12.280968 10.964194 10.745161 11.394839 14.777097 14.975161 \n", + "1963-06 9.267333 9.589333 8.583667 9.585333 12.098000 11.358667 \n", + "... ... ... ... ... ... ... \n", + "1976-07 6.994839 5.135806 7.941290 6.491290 10.264194 11.912258 \n", + "1976-08 5.437097 3.362581 5.946452 4.496452 7.079677 9.438387 \n", + "1976-09 8.617667 6.415333 8.953333 7.263333 11.587000 17.634000 \n", + "1976-10 6.380323 6.933226 7.552258 7.449032 11.837742 15.078065 \n", + "1976-11 9.058333 5.791000 6.577000 7.512333 12.568333 15.685333 \n", + "1976-12 8.034516 4.500000 5.952258 6.147742 7.814839 14.346774 \n", + "1977-01 10.107419 7.211613 8.280000 9.328387 12.131935 18.830000 \n", + "1977-02 10.949643 7.965357 9.320000 8.711429 11.435357 17.561429 \n", + "1977-03 14.283226 11.361613 12.102581 11.906452 15.863226 19.133548 \n", + "1977-04 13.887667 9.574000 10.342333 11.419667 15.593667 18.274667 \n", + "1977-05 9.226452 5.638387 6.699355 6.045484 10.213548 11.936129 \n", + "1977-06 8.799667 5.931000 7.065333 6.583333 11.321333 11.175333 \n", + "1977-07 9.961935 6.526129 7.980968 7.620000 12.924194 12.186774 \n", + "1977-08 8.943548 4.543226 6.384839 5.694839 9.825161 11.659355 \n", + "1977-09 11.939333 7.923000 8.828000 8.506333 14.051000 17.030333 \n", + "1977-10 12.924839 11.875161 11.481290 10.340323 17.640968 19.842903 \n", + "1977-11 14.051000 11.286000 10.318667 10.327000 17.215333 22.333000 \n", + "1977-12 13.231613 10.703871 10.401613 9.415484 13.237419 19.299677 \n", + "1978-01 12.207097 10.206452 9.549032 9.247419 15.101613 20.715806 \n", + "1978-02 11.903214 11.068929 10.052143 8.093929 10.353929 17.298571 \n", + "1978-03 12.129355 11.665161 11.656452 9.657097 14.234194 18.611290 \n", + "1978-04 8.586333 8.306667 8.537000 6.999000 11.190667 14.152000 \n", + "1978-05 5.420968 6.130645 5.742581 5.926452 9.263548 10.756452 \n", + "1978-06 7.928000 7.802000 8.220333 7.550000 11.501000 15.078667 \n", + "1978-07 7.831935 8.459355 8.523871 7.732903 12.648710 14.077419 \n", + "1978-08 5.650323 5.417742 7.241290 5.536774 10.466774 12.054194 \n", + "1978-09 10.790333 9.583000 10.069333 8.939000 15.680333 19.391333 \n", + "1978-10 8.115484 7.337742 8.297742 8.243871 13.776774 17.150000 \n", + "1978-11 11.492333 9.657333 10.701333 10.676000 17.404667 20.723000 \n", + "1978-12 12.077419 10.194839 10.616774 11.028710 13.859677 21.371613 \n", "\n", - "[216 rows x 16 columns]" + "[216 rows x 12 columns]" ] }, "execution_count": 13, @@ -2813,7 +2495,7 @@ } ], "source": [ - "data.query('day == 1')" + "data.groupby(data.index.to_period('M')).mean()" ] }, { @@ -2838,782 +2520,485 @@ " \n", " \n", " \n", - " RPT\n", - " VAL\n", - " ROS\n", - " KIL\n", - " SHA\n", - " BIR\n", - " DUB\n", - " CLA\n", - " MUL\n", - " CLO\n", - " BEL\n", - " MAL\n", - " date\n", - " month\n", - " year\n", - " day\n", - " \n", - " \n", - " Yr_Mo_Dy\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " 1961-01-01\n", - " 15.04\n", - " 14.96\n", - " 13.17\n", - " 9.29\n", - " NaN\n", - " 9.87\n", - " 13.67\n", - " 10.25\n", - " 10.83\n", - " 12.58\n", - " 18.50\n", - " 15.04\n", - " 1961-01-01\n", - " 1\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-01-08\n", - " 10.96\n", - " 9.75\n", - " 7.62\n", - " 5.91\n", - " 9.62\n", - " 7.29\n", - " 14.29\n", - " 7.62\n", - " 9.25\n", - " 10.46\n", - " 16.62\n", - " 16.46\n", - " 1961-01-08\n", - " 1\n", - " 1961\n", - " 8\n", - " \n", - " \n", - " 1961-01-15\n", - " 12.04\n", - " 9.67\n", - " 11.75\n", - " 2.37\n", - " 7.38\n", - " 3.13\n", - " 2.50\n", - " 6.83\n", - " 4.75\n", - " 5.63\n", - " 7.54\n", - " 6.75\n", - " 1961-01-15\n", - " 1\n", - " 1961\n", - " 15\n", - " \n", - " \n", - " 1961-01-22\n", - " 9.59\n", - " 5.88\n", - " 9.92\n", - " 2.17\n", - " 6.87\n", - " 5.50\n", - " 9.38\n", - " 7.04\n", - " 6.34\n", - " 7.50\n", - " 10.88\n", - " 9.92\n", - " 1961-01-22\n", - " 1\n", - " 1961\n", - " 22\n", - " \n", - " \n", - " 1961-01-29\n", - " NaN\n", - " 23.91\n", - " 22.29\n", - " 17.54\n", - " 24.08\n", - " 19.70\n", - " 22.00\n", - " 20.25\n", - " 21.46\n", - " 19.95\n", - " 27.71\n", - " 23.38\n", - " 1961-01-29\n", - " 1\n", - " 1961\n", - " 29\n", - " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", - "Yr_Mo_Dy \n", - "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", - "1961-01-08 10.96 9.75 7.62 5.91 9.62 7.29 14.29 7.62 9.25 \n", - "1961-01-15 12.04 9.67 11.75 2.37 7.38 3.13 2.50 6.83 4.75 \n", - "1961-01-22 9.59 5.88 9.92 2.17 6.87 5.50 9.38 7.04 6.34 \n", - "1961-01-29 NaN 23.91 22.29 17.54 24.08 19.70 22.00 20.25 21.46 \n", - "\n", - " CLO BEL MAL date month year day \n", - "Yr_Mo_Dy \n", - "1961-01-01 12.58 18.50 15.04 1961-01-01 1 1961 1 \n", - "1961-01-08 10.46 16.62 16.46 1961-01-08 1 1961 8 \n", - "1961-01-15 5.63 7.54 6.75 1961-01-15 1 1961 15 \n", - "1961-01-22 7.50 10.88 9.92 1961-01-22 1 1961 22 \n", - "1961-01-29 19.95 27.71 23.38 1961-01-29 1 1961 29 " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data[::7].head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 15. Calculate the mean windspeed for each month in the dataset. \n", - "#### Treat January 1961 and January 1962 as *different* months.\n", - "#### (hint: first find a way to create an identifier unique for each month.)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "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", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -3629,747 +3014,677 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
YrMoDyRPTVALROSKILSHABIRDUBCLAMULCLOBELMALmonths_num
0611115.0414.9613.179.29NaN9.8713.6710.2510.8312.5818.5015.041
1611214.71NaN10.836.5012.627.6711.5010.049.799.6717.5413.831
2611318.5016.8812.3310.1311.176.1711.25NaN8.507.6712.7512.711
3611410.586.6311.754.584.542.888.631.795.835.885.4610.881
4611513.3313.2511.426.1710.718.2111.926.5410.9210.3412.9211.831
5611613.218.129.966.675.374.5010.674.427.177.508.1213.171
6611713.5014.299.504.9612.298.339.179.297.587.9613.9613.791
7611810.969.757.625.919.627.2914.297.629.2510.4616.6216.461
8611912.5810.8310.004.7510.376.798.0410.137.799.0813.0415.371
96111013.3711.1219.508.339.716.5411.427.798.549.008.5811.831
106111110.589.878.422.798.717.257.548.335.718.6720.7116.921
116111219.7512.0818.5010.5410.299.4615.5411.5010.3714.5815.5914.091
12611139.923.548.462.962.290.964.630.582.333.375.257.041
13611149.045.667.080.672.711.383.082.580.502.677.175.171RPTVALROSKILSHABIRDUBCLAMULCLOBELMAL
146111512.049.6711.752.377.383.132.506.834.755.637.546.751Yr_Mo_Dy
156111616.4211.2515.674.7111.346.929.258.798.217.3313.049.0411960-12-26/1961-01-0115.04000014.96000013.1700009.290000NaN9.87000013.67000010.25000010.83000012.58000018.50000015.040000
166111717.7514.3717.3310.1313.9613.3713.4211.048.7111.3815.9216.0811961-01-02/1961-01-0813.54142911.48666710.4871436.4171439.4742866.43571411.0614296.6166678.4342868.49714312.48142913.238571
176111819.8312.0420.7918.54NaN10.2917.8311.3814.6716.718.7917.9611961-01-09/1961-01-1512.4685718.96714311.9585714.6300007.3514295.0728577.5357146.8200005.7128577.57142911.12571411.024286
18611194.923.427.291.043.673.173.712.791.922.716.877.831
19611209.5911.837.961.587.925.003.174.923.133.376.506.7911961-01-16/1961-01-2213.2042869.86285712.9828576.3285718.9666677.4171439.2571437.8757147.1457148.1242869.82142911.434286
206112114.3310.2511.926.1310.047.678.049.177.047.876.7512.4211961-01-23/1961-01-2919.88000016.14142918.22571412.72000017.43285714.82857115.52857115.16000014.48000015.64000020.93000022.530000
21611229.595.889.922.176.875.509.387.046.347.5010.889.9211961-01-30/1961-02-0516.82714315.46000012.6185718.24714313.3614299.10714312.2042868.5485719.8214299.46000014.01285711.935714
226112316.549.9618.5410.4613.5012.6713.7013.7510.7513.1714.7920.5811961-02-06/1961-02-1219.68428616.41714317.30428610.77428614.71857112.52285714.93428614.85000014.06428614.44000021.83285719.155714
236112425.0414.8325.8415.6721.4618.5820.3819.3815.3715.1223.0925.251
246112513.6211.1712.676.0410.009.429.258.717.1212.0414.0417.5011961-02-13/1961-02-1915.13000015.09142913.79714310.08333313.41000011.8685719.54285712.12857112.37571413.54285721.16714316.584286
256112624.3718.7917.5014.2518.9115.6714.3315.1616.0819.0820.5025.251
266112722.0420.7917.4116.2119.0416.1316.7918.2918.6619.0826.0827.6311961-02-20/1961-02-2615.22142913.62571414.3342868.52428613.65571410.11428611.15000010.87571410.39285712.73000016.30428614.322857
276112817.6713.5413.338.8715.0411.6312.2510.5811.9211.0420.3018.1211961-02-27/1961-03-0512.10142912.95142911.0633337.83428612.1014299.23857110.23285711.13000010.38333312.37000017.84285713.951667
2861129NaN23.9122.2917.5424.0819.7022.0020.2521.4619.9527.7123.3811961-03-06/1961-03-129.37666711.57857110.8457147.13714310.9400009.4885716.8814299.6371439.88571410.45857116.70142914.420000
296113012.2111.4210.927.9213.089.6214.5010.219.9211.9618.8819.2511961-03-13/1961-03-1911.91142913.50142911.6071437.08428610.7514298.65285710.04142910.22000010.10142911.62714319.35000016.227143
1961-03-20/1961-03-269.5671438.3871439.6957146.6485718.9642867.98285710.7742868.97714310.90428611.48142914.03714318.134286
1961-03-27/1961-04-0210.7571438.8528579.5014297.3000009.9757149.16571411.1257149.06142910.4783339.63142913.47142913.900000
1961-04-03/1961-04-0911.96428610.65428613.6071435.9585719.4942867.6371437.1071438.0414298.1614297.23857111.71285711.371429
1961-04-10/1961-04-168.9657148.0000008.7871434.9714296.4057144.9471435.0057144.9942865.7185716.1785719.4828578.690000
1961-04-17/1961-04-2312.62142910.43857110.2557147.76857110.3571437.7985719.0000009.1114298.7671439.55142913.62000012.470000
1961-04-24/1961-04-3010.1171439.7985718.2814294.8014297.8928575.1971436.1500006.3771436.2428576.1242869.7200008.637143
1961-05-01/1961-05-0715.36714313.97000013.8342869.95285714.91714310.86428611.43571412.24428611.67714311.58571417.54857114.571429
1961-05-08/1961-05-147.7728578.7128578.1728575.2957149.1500006.3914298.0133337.0528577.5285717.82285710.42142910.382857
1961-05-15/1961-05-218.2257145.63166712.0428574.2585717.5971435.0228575.6957146.9700006.8471437.1142869.62428610.612857
1961-05-22/1961-05-288.1557147.3885718.5128573.7483336.9414294.1128575.1428576.2728576.1085717.53571410.51857111.697143
1961-05-29/1961-06-0410.3214297.40714310.0657146.3100009.7542866.4514298.3442868.6357148.7142869.03571412.29857113.597143
1961-06-05/1961-06-1110.9171438.9928578.0957145.21428610.0300005.4600007.0842866.8842868.0342868.39714310.14857112.250000
1961-06-12/1961-06-1810.5714299.56571410.8757146.52000010.2600006.9471439.2785719.1028578.9928579.59428615.35142915.025714
1961-06-19/1961-06-257.3457146.1085718.0842865.47857111.4771437.49285711.8685719.44714310.45857111.25714314.37000017.410000
1961-06-26/1961-07-0210.2366679.4828578.6485716.77285710.9757146.5071437.6428579.2371437.90428610.26857114.53571412.133333
1961-07-03/1961-07-0911.7157147.2200009.3200007.54428612.4942867.98285711.8883339.30857110.73285710.54714312.22000015.987143
1961-07-10/1961-07-1616.68000013.51857111.1714299.27714314.5242868.41285710.17142910.5071439.53000010.15714313.52000012.524286
1961-07-17/1961-07-234.2028574.2557146.7385713.3000006.1128572.7157143.9642865.6428575.2971436.0414297.5242868.415714
........................
65447812213.7012.7114.295.139.218.0412.336.349.2111.219.5919.95216
65457812321.2121.3417.7511.5816.7514.4617.4615.2915.7917.5021.4225.75216
6546781249.9213.507.211.7111.007.508.387.4610.7910.2117.8817.96216
65477812522.7520.1718.588.5015.9614.2913.9212.9212.9612.2917.0819.83216
65487812629.3323.8725.3716.0424.4619.5024.5418.5821.0020.5821.6734.46216
65497812726.6324.7924.7918.1623.1319.5819.9219.0419.7521.5023.0434.59216
65507812812.9212.5411.253.376.505.9610.346.176.636.759.5417.33216
65517812918.7116.9215.506.0410.379.5910.759.139.7511.0814.3315.34216
655278121024.9222.5416.5414.6215.5913.0013.2114.1216.2116.1726.0821.92216
655378121120.2519.1717.8311.6317.7913.3714.8313.8815.5416.2918.3422.83216
655478121223.1318.6318.058.2914.3311.0410.5410.1311.4210.5011.2513.50216
655578121318.8424.0414.378.3318.1212.1713.0013.7514.1715.0921.5021.37216
655678121417.2119.7512.715.8313.797.338.835.717.963.375.216.92216
655778121513.138.9216.546.926.004.0012.675.887.676.085.5017.16216
655878121614.889.1317.375.216.712.469.134.966.135.9610.9218.08216
65597812179.873.218.042.213.040.542.461.461.292.675.009.08216
65607812189.8310.888.501.009.086.002.428.254.425.8819.7919.79216
656178121913.8811.4210.132.338.126.754.755.886.218.178.3318.25216
65627812209.923.6312.383.083.500.424.542.502.134.713.2110.29216
656378122112.963.8313.794.797.126.5411.679.258.679.0011.2520.30216
65647812226.217.3813.082.547.585.332.468.385.095.049.9211.00216
656578122316.6213.2922.219.5014.2913.0816.5017.1612.7112.0018.5021.50216
65667812248.675.6312.124.795.095.9112.259.2510.8311.7111.9231.71216
65677812257.216.587.832.674.794.588.710.755.215.251.2113.96216
656878122613.8311.8710.342.376.964.291.963.793.043.084.7911.96216
656978122717.5816.9617.628.0813.2111.6714.4615.5914.0414.0017.2140.08216
657078122813.215.4613.465.008.129.4214.3316.2515.2518.0521.7941.46216
657178122914.0010.2914.428.719.7110.5419.1712.4614.5016.4218.8829.58216
657278123018.5014.0421.299.1312.759.7118.0812.8712.4612.1214.6728.79216
657378123120.3317.4127.299.5912.0810.1319.2511.6311.5811.3812.0822.082161978-06-05/1978-06-1112.0228579.1542869.4885715.97142910.6371438.0300008.6785718.2271439.1728579.64285711.63285717.778571
1978-06-12/1978-06-189.4100008.77000014.1357146.4571438.5642866.8985717.2971437.4642867.0542866.22571411.39857112.957143
1978-06-19/1978-06-2512.70714310.2442868.9128575.87857110.3728576.8528577.6485717.8757147.8657147.08428613.03000016.678571
1978-06-26/1978-07-0212.2085719.64000010.4828577.01142912.7728579.00571411.0557148.9171439.9942867.49857112.26857115.287143
1978-07-03/1978-07-0918.05285712.63000011.9842869.22000013.41428610.76285711.36857111.21857111.27285711.08285714.75428618.215714
1978-07-10/1978-07-165.8828573.2442865.3585712.2500004.6185712.6314292.4942863.5400003.3971433.2142867.1985717.578571
1978-07-17/1978-07-2313.65428610.0071439.9157146.57714310.7571438.2828578.1471439.3014298.9528578.40285713.84714314.785714
1978-07-24/1978-07-3012.17285711.85428611.0942866.6314299.9185718.7071437.4585719.1171439.3042868.14857115.19285714.584286
1978-07-31/1978-08-0612.4757149.48857110.5842865.4571438.7242865.8557147.0657145.4100006.6314294.9628579.08428611.405714
1978-08-07/1978-08-1310.1142869.6000007.6357144.7900008.1014296.7028575.4528575.9642867.5185715.66142910.69142911.927143
1978-08-14/1978-08-2011.10000011.23714310.5057145.6971439.9100008.0342867.2671438.5171439.8157147.94142915.00000014.405714
1978-08-21/1978-08-276.2085715.0600008.5657143.1214294.6385714.0771433.2914293.5000005.8771434.4471438.13142910.661429
1978-08-28/1978-09-038.2328574.8885717.7671433.5885713.8928575.0900006.1842863.0000006.2028574.7457148.10571413.150000
1978-09-04/1978-09-1011.48714312.74285711.1242865.70285710.72142910.9271439.1571439.45857110.5885718.27428614.56000016.752857
1978-09-11/1978-09-1712.06714310.64857111.6100006.86428612.25285711.86857113.01714312.44714311.90857110.95714318.42285723.441429
1978-09-18/1978-09-245.8457148.3171439.3057142.5542865.6257145.1714297.0471436.7500006.8700006.29142913.44714315.324286
1978-09-25/1978-10-0116.25285714.13142912.0985718.83285715.81000010.33857115.12428612.37857112.27571411.97000019.16000024.158571
1978-10-02/1978-10-0812.86571413.30285711.6714296.53142911.7314298.8814299.7071439.70857111.39142910.16142916.49857120.618571
1978-10-09/1978-10-159.6114296.3271439.2500004.1671436.8214296.2371435.5771436.3485717.2328577.28571412.19714314.177143
1978-10-16/1978-10-229.8042867.8171437.6428575.3142869.1242866.8628579.3914297.4285717.7657148.04857112.70857117.868571
1978-10-23/1978-10-297.5042867.7028578.1028573.2042867.4642865.9057148.7271436.6528577.6057148.12000014.48714316.915714
1978-10-30/1978-11-0513.06000013.46571412.1371436.6828579.8914298.3142869.7757149.63857110.18571410.42285718.45142918.721429
1978-11-06/1978-11-1214.85714315.23714312.0071437.68428612.4600009.35285710.22428610.55428611.16857112.23285719.30714322.522857
1978-11-13/1978-11-1920.59000018.99857117.27285710.41714314.22000011.20857116.08142912.91571413.29714313.24285720.35714323.905714
1978-11-20/1978-11-2616.49857113.97142913.5442866.36142910.4385717.40428612.7971437.5714299.9985718.91571415.20714319.491429
1978-11-27/1978-12-0314.93428611.23285713.9414295.56571410.2157148.6185719.6428577.6857149.0114299.54714311.83571418.728571
1978-12-04/1978-12-1020.74000019.19000017.0342869.77714315.28714312.77428614.43714312.48857113.87000014.08285718.51714323.061429
1978-12-11/1978-12-1716.75857114.69285714.9871436.91714311.3971437.27285710.2085717.9671439.1685718.56571411.10285715.562857
1978-12-18/1978-12-2411.1557148.00857113.1728574.0042867.8257146.2900007.7985718.6671437.1514298.07285711.84571418.977143
1978-12-25/1978-12-3114.95142911.80142916.0357146.5071439.6600008.62000013.70857110.47714310.86857111.47142912.94714326.844286
\n", - "

6574 rows × 16 columns

\n", + "

940 rows × 12 columns

\n", "
" ], "text/plain": [ - " Yr Mo Dy RPT VAL ROS KIL SHA BIR DUB CLA \\\n", - "0 61 1 1 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 \n", - "1 61 1 2 14.71 NaN 10.83 6.50 12.62 7.67 11.50 10.04 \n", - "2 61 1 3 18.50 16.88 12.33 10.13 11.17 6.17 11.25 NaN \n", - "3 61 1 4 10.58 6.63 11.75 4.58 4.54 2.88 8.63 1.79 \n", - "4 61 1 5 13.33 13.25 11.42 6.17 10.71 8.21 11.92 6.54 \n", - "5 61 1 6 13.21 8.12 9.96 6.67 5.37 4.50 10.67 4.42 \n", - "6 61 1 7 13.50 14.29 9.50 4.96 12.29 8.33 9.17 9.29 \n", - "7 61 1 8 10.96 9.75 7.62 5.91 9.62 7.29 14.29 7.62 \n", - "8 61 1 9 12.58 10.83 10.00 4.75 10.37 6.79 8.04 10.13 \n", - "9 61 1 10 13.37 11.12 19.50 8.33 9.71 6.54 11.42 7.79 \n", - "10 61 1 11 10.58 9.87 8.42 2.79 8.71 7.25 7.54 8.33 \n", - "11 61 1 12 19.75 12.08 18.50 10.54 10.29 9.46 15.54 11.50 \n", - "12 61 1 13 9.92 3.54 8.46 2.96 2.29 0.96 4.63 0.58 \n", - "13 61 1 14 9.04 5.66 7.08 0.67 2.71 1.38 3.08 2.58 \n", - "14 61 1 15 12.04 9.67 11.75 2.37 7.38 3.13 2.50 6.83 \n", - "15 61 1 16 16.42 11.25 15.67 4.71 11.34 6.92 9.25 8.79 \n", - "16 61 1 17 17.75 14.37 17.33 10.13 13.96 13.37 13.42 11.04 \n", - "17 61 1 18 19.83 12.04 20.79 18.54 NaN 10.29 17.83 11.38 \n", - "18 61 1 19 4.92 3.42 7.29 1.04 3.67 3.17 3.71 2.79 \n", - "19 61 1 20 9.59 11.83 7.96 1.58 7.92 5.00 3.17 4.92 \n", - "20 61 1 21 14.33 10.25 11.92 6.13 10.04 7.67 8.04 9.17 \n", - "21 61 1 22 9.59 5.88 9.92 2.17 6.87 5.50 9.38 7.04 \n", - "22 61 1 23 16.54 9.96 18.54 10.46 13.50 12.67 13.70 13.75 \n", - "23 61 1 24 25.04 14.83 25.84 15.67 21.46 18.58 20.38 19.38 \n", - "24 61 1 25 13.62 11.17 12.67 6.04 10.00 9.42 9.25 8.71 \n", - "25 61 1 26 24.37 18.79 17.50 14.25 18.91 15.67 14.33 15.16 \n", - "26 61 1 27 22.04 20.79 17.41 16.21 19.04 16.13 16.79 18.29 \n", - "27 61 1 28 17.67 13.54 13.33 8.87 15.04 11.63 12.25 10.58 \n", - "28 61 1 29 NaN 23.91 22.29 17.54 24.08 19.70 22.00 20.25 \n", - "29 61 1 30 12.21 11.42 10.92 7.92 13.08 9.62 14.50 10.21 \n", - "... .. .. .. ... ... ... ... ... ... ... ... \n", - "6544 78 12 2 13.70 12.71 14.29 5.13 9.21 8.04 12.33 6.34 \n", - "6545 78 12 3 21.21 21.34 17.75 11.58 16.75 14.46 17.46 15.29 \n", - "6546 78 12 4 9.92 13.50 7.21 1.71 11.00 7.50 8.38 7.46 \n", - "6547 78 12 5 22.75 20.17 18.58 8.50 15.96 14.29 13.92 12.92 \n", - "6548 78 12 6 29.33 23.87 25.37 16.04 24.46 19.50 24.54 18.58 \n", - "6549 78 12 7 26.63 24.79 24.79 18.16 23.13 19.58 19.92 19.04 \n", - "6550 78 12 8 12.92 12.54 11.25 3.37 6.50 5.96 10.34 6.17 \n", - "6551 78 12 9 18.71 16.92 15.50 6.04 10.37 9.59 10.75 9.13 \n", - "6552 78 12 10 24.92 22.54 16.54 14.62 15.59 13.00 13.21 14.12 \n", - "6553 78 12 11 20.25 19.17 17.83 11.63 17.79 13.37 14.83 13.88 \n", - "6554 78 12 12 23.13 18.63 18.05 8.29 14.33 11.04 10.54 10.13 \n", - "6555 78 12 13 18.84 24.04 14.37 8.33 18.12 12.17 13.00 13.75 \n", - "6556 78 12 14 17.21 19.75 12.71 5.83 13.79 7.33 8.83 5.71 \n", - "6557 78 12 15 13.13 8.92 16.54 6.92 6.00 4.00 12.67 5.88 \n", - "6558 78 12 16 14.88 9.13 17.37 5.21 6.71 2.46 9.13 4.96 \n", - "6559 78 12 17 9.87 3.21 8.04 2.21 3.04 0.54 2.46 1.46 \n", - "6560 78 12 18 9.83 10.88 8.50 1.00 9.08 6.00 2.42 8.25 \n", - "6561 78 12 19 13.88 11.42 10.13 2.33 8.12 6.75 4.75 5.88 \n", - "6562 78 12 20 9.92 3.63 12.38 3.08 3.50 0.42 4.54 2.50 \n", - "6563 78 12 21 12.96 3.83 13.79 4.79 7.12 6.54 11.67 9.25 \n", - "6564 78 12 22 6.21 7.38 13.08 2.54 7.58 5.33 2.46 8.38 \n", - "6565 78 12 23 16.62 13.29 22.21 9.50 14.29 13.08 16.50 17.16 \n", - "6566 78 12 24 8.67 5.63 12.12 4.79 5.09 5.91 12.25 9.25 \n", - "6567 78 12 25 7.21 6.58 7.83 2.67 4.79 4.58 8.71 0.75 \n", - "6568 78 12 26 13.83 11.87 10.34 2.37 6.96 4.29 1.96 3.79 \n", - "6569 78 12 27 17.58 16.96 17.62 8.08 13.21 11.67 14.46 15.59 \n", - "6570 78 12 28 13.21 5.46 13.46 5.00 8.12 9.42 14.33 16.25 \n", - "6571 78 12 29 14.00 10.29 14.42 8.71 9.71 10.54 19.17 12.46 \n", - "6572 78 12 30 18.50 14.04 21.29 9.13 12.75 9.71 18.08 12.87 \n", - "6573 78 12 31 20.33 17.41 27.29 9.59 12.08 10.13 19.25 11.63 \n", + " RPT VAL ROS KIL SHA \\\n", + "Yr_Mo_Dy \n", + "1960-12-26/1961-01-01 15.040000 14.960000 13.170000 9.290000 NaN \n", + "1961-01-02/1961-01-08 13.541429 11.486667 10.487143 6.417143 9.474286 \n", + "1961-01-09/1961-01-15 12.468571 8.967143 11.958571 4.630000 7.351429 \n", + "1961-01-16/1961-01-22 13.204286 9.862857 12.982857 6.328571 8.966667 \n", + "1961-01-23/1961-01-29 19.880000 16.141429 18.225714 12.720000 17.432857 \n", + "1961-01-30/1961-02-05 16.827143 15.460000 12.618571 8.247143 13.361429 \n", + "1961-02-06/1961-02-12 19.684286 16.417143 17.304286 10.774286 14.718571 \n", + "1961-02-13/1961-02-19 15.130000 15.091429 13.797143 10.083333 13.410000 \n", + "1961-02-20/1961-02-26 15.221429 13.625714 14.334286 8.524286 13.655714 \n", + "1961-02-27/1961-03-05 12.101429 12.951429 11.063333 7.834286 12.101429 \n", + "1961-03-06/1961-03-12 9.376667 11.578571 10.845714 7.137143 10.940000 \n", + "1961-03-13/1961-03-19 11.911429 13.501429 11.607143 7.084286 10.751429 \n", + "1961-03-20/1961-03-26 9.567143 8.387143 9.695714 6.648571 8.964286 \n", + "1961-03-27/1961-04-02 10.757143 8.852857 9.501429 7.300000 9.975714 \n", + "1961-04-03/1961-04-09 11.964286 10.654286 13.607143 5.958571 9.494286 \n", + "1961-04-10/1961-04-16 8.965714 8.000000 8.787143 4.971429 6.405714 \n", + "1961-04-17/1961-04-23 12.621429 10.438571 10.255714 7.768571 10.357143 \n", + "1961-04-24/1961-04-30 10.117143 9.798571 8.281429 4.801429 7.892857 \n", + "1961-05-01/1961-05-07 15.367143 13.970000 13.834286 9.952857 14.917143 \n", + "1961-05-08/1961-05-14 7.772857 8.712857 8.172857 5.295714 9.150000 \n", + "1961-05-15/1961-05-21 8.225714 5.631667 12.042857 4.258571 7.597143 \n", + "1961-05-22/1961-05-28 8.155714 7.388571 8.512857 3.748333 6.941429 \n", + "1961-05-29/1961-06-04 10.321429 7.407143 10.065714 6.310000 9.754286 \n", + "1961-06-05/1961-06-11 10.917143 8.992857 8.095714 5.214286 10.030000 \n", + "1961-06-12/1961-06-18 10.571429 9.565714 10.875714 6.520000 10.260000 \n", + "1961-06-19/1961-06-25 7.345714 6.108571 8.084286 5.478571 11.477143 \n", + "1961-06-26/1961-07-02 10.236667 9.482857 8.648571 6.772857 10.975714 \n", + "1961-07-03/1961-07-09 11.715714 7.220000 9.320000 7.544286 12.494286 \n", + "1961-07-10/1961-07-16 16.680000 13.518571 11.171429 9.277143 14.524286 \n", + "1961-07-17/1961-07-23 4.202857 4.255714 6.738571 3.300000 6.112857 \n", + "... ... ... ... ... ... \n", + "1978-06-05/1978-06-11 12.022857 9.154286 9.488571 5.971429 10.637143 \n", + "1978-06-12/1978-06-18 9.410000 8.770000 14.135714 6.457143 8.564286 \n", + "1978-06-19/1978-06-25 12.707143 10.244286 8.912857 5.878571 10.372857 \n", + "1978-06-26/1978-07-02 12.208571 9.640000 10.482857 7.011429 12.772857 \n", + "1978-07-03/1978-07-09 18.052857 12.630000 11.984286 9.220000 13.414286 \n", + "1978-07-10/1978-07-16 5.882857 3.244286 5.358571 2.250000 4.618571 \n", + "1978-07-17/1978-07-23 13.654286 10.007143 9.915714 6.577143 10.757143 \n", + "1978-07-24/1978-07-30 12.172857 11.854286 11.094286 6.631429 9.918571 \n", + "1978-07-31/1978-08-06 12.475714 9.488571 10.584286 5.457143 8.724286 \n", + "1978-08-07/1978-08-13 10.114286 9.600000 7.635714 4.790000 8.101429 \n", + "1978-08-14/1978-08-20 11.100000 11.237143 10.505714 5.697143 9.910000 \n", + "1978-08-21/1978-08-27 6.208571 5.060000 8.565714 3.121429 4.638571 \n", + "1978-08-28/1978-09-03 8.232857 4.888571 7.767143 3.588571 3.892857 \n", + "1978-09-04/1978-09-10 11.487143 12.742857 11.124286 5.702857 10.721429 \n", + "1978-09-11/1978-09-17 12.067143 10.648571 11.610000 6.864286 12.252857 \n", + "1978-09-18/1978-09-24 5.845714 8.317143 9.305714 2.554286 5.625714 \n", + "1978-09-25/1978-10-01 16.252857 14.131429 12.098571 8.832857 15.810000 \n", + "1978-10-02/1978-10-08 12.865714 13.302857 11.671429 6.531429 11.731429 \n", + "1978-10-09/1978-10-15 9.611429 6.327143 9.250000 4.167143 6.821429 \n", + "1978-10-16/1978-10-22 9.804286 7.817143 7.642857 5.314286 9.124286 \n", + "1978-10-23/1978-10-29 7.504286 7.702857 8.102857 3.204286 7.464286 \n", + "1978-10-30/1978-11-05 13.060000 13.465714 12.137143 6.682857 9.891429 \n", + "1978-11-06/1978-11-12 14.857143 15.237143 12.007143 7.684286 12.460000 \n", + "1978-11-13/1978-11-19 20.590000 18.998571 17.272857 10.417143 14.220000 \n", + "1978-11-20/1978-11-26 16.498571 13.971429 13.544286 6.361429 10.438571 \n", + "1978-11-27/1978-12-03 14.934286 11.232857 13.941429 5.565714 10.215714 \n", + "1978-12-04/1978-12-10 20.740000 19.190000 17.034286 9.777143 15.287143 \n", + "1978-12-11/1978-12-17 16.758571 14.692857 14.987143 6.917143 11.397143 \n", + "1978-12-18/1978-12-24 11.155714 8.008571 13.172857 4.004286 7.825714 \n", + "1978-12-25/1978-12-31 14.951429 11.801429 16.035714 6.507143 9.660000 \n", "\n", - " MUL CLO BEL MAL months_num \n", - "0 10.83 12.58 18.50 15.04 1 \n", - "1 9.79 9.67 17.54 13.83 1 \n", - "2 8.50 7.67 12.75 12.71 1 \n", - "3 5.83 5.88 5.46 10.88 1 \n", - "4 10.92 10.34 12.92 11.83 1 \n", - "5 7.17 7.50 8.12 13.17 1 \n", - "6 7.58 7.96 13.96 13.79 1 \n", - "7 9.25 10.46 16.62 16.46 1 \n", - "8 7.79 9.08 13.04 15.37 1 \n", - "9 8.54 9.00 8.58 11.83 1 \n", - "10 5.71 8.67 20.71 16.92 1 \n", - "11 10.37 14.58 15.59 14.09 1 \n", - "12 2.33 3.37 5.25 7.04 1 \n", - "13 0.50 2.67 7.17 5.17 1 \n", - "14 4.75 5.63 7.54 6.75 1 \n", - "15 8.21 7.33 13.04 9.04 1 \n", - "16 8.71 11.38 15.92 16.08 1 \n", - "17 14.67 16.71 8.79 17.96 1 \n", - "18 1.92 2.71 6.87 7.83 1 \n", - "19 3.13 3.37 6.50 6.79 1 \n", - "20 7.04 7.87 6.75 12.42 1 \n", - "21 6.34 7.50 10.88 9.92 1 \n", - "22 10.75 13.17 14.79 20.58 1 \n", - "23 15.37 15.12 23.09 25.25 1 \n", - "24 7.12 12.04 14.04 17.50 1 \n", - "25 16.08 19.08 20.50 25.25 1 \n", - "26 18.66 19.08 26.08 27.63 1 \n", - "27 11.92 11.04 20.30 18.12 1 \n", - "28 21.46 19.95 27.71 23.38 1 \n", - "29 9.92 11.96 18.88 19.25 1 \n", - "... ... ... ... ... ... \n", - "6544 9.21 11.21 9.59 19.95 216 \n", - "6545 15.79 17.50 21.42 25.75 216 \n", - "6546 10.79 10.21 17.88 17.96 216 \n", - "6547 12.96 12.29 17.08 19.83 216 \n", - "6548 21.00 20.58 21.67 34.46 216 \n", - "6549 19.75 21.50 23.04 34.59 216 \n", - "6550 6.63 6.75 9.54 17.33 216 \n", - "6551 9.75 11.08 14.33 15.34 216 \n", - "6552 16.21 16.17 26.08 21.92 216 \n", - "6553 15.54 16.29 18.34 22.83 216 \n", - "6554 11.42 10.50 11.25 13.50 216 \n", - "6555 14.17 15.09 21.50 21.37 216 \n", - "6556 7.96 3.37 5.21 6.92 216 \n", - "6557 7.67 6.08 5.50 17.16 216 \n", - "6558 6.13 5.96 10.92 18.08 216 \n", - "6559 1.29 2.67 5.00 9.08 216 \n", - "6560 4.42 5.88 19.79 19.79 216 \n", - "6561 6.21 8.17 8.33 18.25 216 \n", - "6562 2.13 4.71 3.21 10.29 216 \n", - "6563 8.67 9.00 11.25 20.30 216 \n", - "6564 5.09 5.04 9.92 11.00 216 \n", - "6565 12.71 12.00 18.50 21.50 216 \n", - "6566 10.83 11.71 11.92 31.71 216 \n", - "6567 5.21 5.25 1.21 13.96 216 \n", - "6568 3.04 3.08 4.79 11.96 216 \n", - "6569 14.04 14.00 17.21 40.08 216 \n", - "6570 15.25 18.05 21.79 41.46 216 \n", - "6571 14.50 16.42 18.88 29.58 216 \n", - "6572 12.46 12.12 14.67 28.79 216 \n", - "6573 11.58 11.38 12.08 22.08 216 \n", + " BIR DUB CLA MUL CLO \\\n", + "Yr_Mo_Dy \n", + "1960-12-26/1961-01-01 9.870000 13.670000 10.250000 10.830000 12.580000 \n", + "1961-01-02/1961-01-08 6.435714 11.061429 6.616667 8.434286 8.497143 \n", + "1961-01-09/1961-01-15 5.072857 7.535714 6.820000 5.712857 7.571429 \n", + "1961-01-16/1961-01-22 7.417143 9.257143 7.875714 7.145714 8.124286 \n", + "1961-01-23/1961-01-29 14.828571 15.528571 15.160000 14.480000 15.640000 \n", + "1961-01-30/1961-02-05 9.107143 12.204286 8.548571 9.821429 9.460000 \n", + "1961-02-06/1961-02-12 12.522857 14.934286 14.850000 14.064286 14.440000 \n", + "1961-02-13/1961-02-19 11.868571 9.542857 12.128571 12.375714 13.542857 \n", + "1961-02-20/1961-02-26 10.114286 11.150000 10.875714 10.392857 12.730000 \n", + "1961-02-27/1961-03-05 9.238571 10.232857 11.130000 10.383333 12.370000 \n", + "1961-03-06/1961-03-12 9.488571 6.881429 9.637143 9.885714 10.458571 \n", + "1961-03-13/1961-03-19 8.652857 10.041429 10.220000 10.101429 11.627143 \n", + "1961-03-20/1961-03-26 7.982857 10.774286 8.977143 10.904286 11.481429 \n", + "1961-03-27/1961-04-02 9.165714 11.125714 9.061429 10.478333 9.631429 \n", + "1961-04-03/1961-04-09 7.637143 7.107143 8.041429 8.161429 7.238571 \n", + "1961-04-10/1961-04-16 4.947143 5.005714 4.994286 5.718571 6.178571 \n", + "1961-04-17/1961-04-23 7.798571 9.000000 9.111429 8.767143 9.551429 \n", + "1961-04-24/1961-04-30 5.197143 6.150000 6.377143 6.242857 6.124286 \n", + "1961-05-01/1961-05-07 10.864286 11.435714 12.244286 11.677143 11.585714 \n", + "1961-05-08/1961-05-14 6.391429 8.013333 7.052857 7.528571 7.822857 \n", + "1961-05-15/1961-05-21 5.022857 5.695714 6.970000 6.847143 7.114286 \n", + "1961-05-22/1961-05-28 4.112857 5.142857 6.272857 6.108571 7.535714 \n", + "1961-05-29/1961-06-04 6.451429 8.344286 8.635714 8.714286 9.035714 \n", + "1961-06-05/1961-06-11 5.460000 7.084286 6.884286 8.034286 8.397143 \n", + "1961-06-12/1961-06-18 6.947143 9.278571 9.102857 8.992857 9.594286 \n", + "1961-06-19/1961-06-25 7.492857 11.868571 9.447143 10.458571 11.257143 \n", + "1961-06-26/1961-07-02 6.507143 7.642857 9.237143 7.904286 10.268571 \n", + "1961-07-03/1961-07-09 7.982857 11.888333 9.308571 10.732857 10.547143 \n", + "1961-07-10/1961-07-16 8.412857 10.171429 10.507143 9.530000 10.157143 \n", + "1961-07-17/1961-07-23 2.715714 3.964286 5.642857 5.297143 6.041429 \n", + "... ... ... ... ... ... \n", + "1978-06-05/1978-06-11 8.030000 8.678571 8.227143 9.172857 9.642857 \n", + "1978-06-12/1978-06-18 6.898571 7.297143 7.464286 7.054286 6.225714 \n", + "1978-06-19/1978-06-25 6.852857 7.648571 7.875714 7.865714 7.084286 \n", + "1978-06-26/1978-07-02 9.005714 11.055714 8.917143 9.994286 7.498571 \n", + "1978-07-03/1978-07-09 10.762857 11.368571 11.218571 11.272857 11.082857 \n", + "1978-07-10/1978-07-16 2.631429 2.494286 3.540000 3.397143 3.214286 \n", + "1978-07-17/1978-07-23 8.282857 8.147143 9.301429 8.952857 8.402857 \n", + "1978-07-24/1978-07-30 8.707143 7.458571 9.117143 9.304286 8.148571 \n", + "1978-07-31/1978-08-06 5.855714 7.065714 5.410000 6.631429 4.962857 \n", + "1978-08-07/1978-08-13 6.702857 5.452857 5.964286 7.518571 5.661429 \n", + "1978-08-14/1978-08-20 8.034286 7.267143 8.517143 9.815714 7.941429 \n", + "1978-08-21/1978-08-27 4.077143 3.291429 3.500000 5.877143 4.447143 \n", + "1978-08-28/1978-09-03 5.090000 6.184286 3.000000 6.202857 4.745714 \n", + "1978-09-04/1978-09-10 10.927143 9.157143 9.458571 10.588571 8.274286 \n", + "1978-09-11/1978-09-17 11.868571 13.017143 12.447143 11.908571 10.957143 \n", + "1978-09-18/1978-09-24 5.171429 7.047143 6.750000 6.870000 6.291429 \n", + "1978-09-25/1978-10-01 10.338571 15.124286 12.378571 12.275714 11.970000 \n", + "1978-10-02/1978-10-08 8.881429 9.707143 9.708571 11.391429 10.161429 \n", + "1978-10-09/1978-10-15 6.237143 5.577143 6.348571 7.232857 7.285714 \n", + "1978-10-16/1978-10-22 6.862857 9.391429 7.428571 7.765714 8.048571 \n", + "1978-10-23/1978-10-29 5.905714 8.727143 6.652857 7.605714 8.120000 \n", + "1978-10-30/1978-11-05 8.314286 9.775714 9.638571 10.185714 10.422857 \n", + "1978-11-06/1978-11-12 9.352857 10.224286 10.554286 11.168571 12.232857 \n", + "1978-11-13/1978-11-19 11.208571 16.081429 12.915714 13.297143 13.242857 \n", + "1978-11-20/1978-11-26 7.404286 12.797143 7.571429 9.998571 8.915714 \n", + "1978-11-27/1978-12-03 8.618571 9.642857 7.685714 9.011429 9.547143 \n", + "1978-12-04/1978-12-10 12.774286 14.437143 12.488571 13.870000 14.082857 \n", + "1978-12-11/1978-12-17 7.272857 10.208571 7.967143 9.168571 8.565714 \n", + "1978-12-18/1978-12-24 6.290000 7.798571 8.667143 7.151429 8.072857 \n", + "1978-12-25/1978-12-31 8.620000 13.708571 10.477143 10.868571 11.471429 \n", "\n", - "[6574 rows x 16 columns]" + " BEL MAL \n", + "Yr_Mo_Dy \n", + "1960-12-26/1961-01-01 18.500000 15.040000 \n", + "1961-01-02/1961-01-08 12.481429 13.238571 \n", + "1961-01-09/1961-01-15 11.125714 11.024286 \n", + "1961-01-16/1961-01-22 9.821429 11.434286 \n", + "1961-01-23/1961-01-29 20.930000 22.530000 \n", + "1961-01-30/1961-02-05 14.012857 11.935714 \n", + "1961-02-06/1961-02-12 21.832857 19.155714 \n", + "1961-02-13/1961-02-19 21.167143 16.584286 \n", + "1961-02-20/1961-02-26 16.304286 14.322857 \n", + "1961-02-27/1961-03-05 17.842857 13.951667 \n", + "1961-03-06/1961-03-12 16.701429 14.420000 \n", + "1961-03-13/1961-03-19 19.350000 16.227143 \n", + "1961-03-20/1961-03-26 14.037143 18.134286 \n", + "1961-03-27/1961-04-02 13.471429 13.900000 \n", + "1961-04-03/1961-04-09 11.712857 11.371429 \n", + "1961-04-10/1961-04-16 9.482857 8.690000 \n", + "1961-04-17/1961-04-23 13.620000 12.470000 \n", + "1961-04-24/1961-04-30 9.720000 8.637143 \n", + "1961-05-01/1961-05-07 17.548571 14.571429 \n", + "1961-05-08/1961-05-14 10.421429 10.382857 \n", + "1961-05-15/1961-05-21 9.624286 10.612857 \n", + "1961-05-22/1961-05-28 10.518571 11.697143 \n", + "1961-05-29/1961-06-04 12.298571 13.597143 \n", + "1961-06-05/1961-06-11 10.148571 12.250000 \n", + "1961-06-12/1961-06-18 15.351429 15.025714 \n", + "1961-06-19/1961-06-25 14.370000 17.410000 \n", + "1961-06-26/1961-07-02 14.535714 12.133333 \n", + "1961-07-03/1961-07-09 12.220000 15.987143 \n", + "1961-07-10/1961-07-16 13.520000 12.524286 \n", + "1961-07-17/1961-07-23 7.524286 8.415714 \n", + "... ... ... \n", + "1978-06-05/1978-06-11 11.632857 17.778571 \n", + "1978-06-12/1978-06-18 11.398571 12.957143 \n", + "1978-06-19/1978-06-25 13.030000 16.678571 \n", + "1978-06-26/1978-07-02 12.268571 15.287143 \n", + "1978-07-03/1978-07-09 14.754286 18.215714 \n", + "1978-07-10/1978-07-16 7.198571 7.578571 \n", + "1978-07-17/1978-07-23 13.847143 14.785714 \n", + "1978-07-24/1978-07-30 15.192857 14.584286 \n", + "1978-07-31/1978-08-06 9.084286 11.405714 \n", + "1978-08-07/1978-08-13 10.691429 11.927143 \n", + "1978-08-14/1978-08-20 15.000000 14.405714 \n", + "1978-08-21/1978-08-27 8.131429 10.661429 \n", + "1978-08-28/1978-09-03 8.105714 13.150000 \n", + "1978-09-04/1978-09-10 14.560000 16.752857 \n", + "1978-09-11/1978-09-17 18.422857 23.441429 \n", + "1978-09-18/1978-09-24 13.447143 15.324286 \n", + "1978-09-25/1978-10-01 19.160000 24.158571 \n", + "1978-10-02/1978-10-08 16.498571 20.618571 \n", + "1978-10-09/1978-10-15 12.197143 14.177143 \n", + "1978-10-16/1978-10-22 12.708571 17.868571 \n", + "1978-10-23/1978-10-29 14.487143 16.915714 \n", + "1978-10-30/1978-11-05 18.451429 18.721429 \n", + "1978-11-06/1978-11-12 19.307143 22.522857 \n", + "1978-11-13/1978-11-19 20.357143 23.905714 \n", + "1978-11-20/1978-11-26 15.207143 19.491429 \n", + "1978-11-27/1978-12-03 11.835714 18.728571 \n", + "1978-12-04/1978-12-10 18.517143 23.061429 \n", + "1978-12-11/1978-12-17 11.102857 15.562857 \n", + "1978-12-18/1978-12-24 11.845714 18.977143 \n", + "1978-12-25/1978-12-31 12.947143 26.844286 \n", + "\n", + "[940 rows x 12 columns]" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# call data again but this time don't use parse_dates\n", - "data_url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/Wind_Stats/wind.data'\n", - "wind_data = pd.read_table(data_url, sep = \"\\s+\") \n", - "\n", - "# compute the month number for each day in the dataset, there are in total 216 months\n", - "wind_data['months_num'] = (wind_data.iloc[:, 0] - 61) * 12 + wind_data.iloc[:, 1]\n", - "\n", - "wind_data\n", - "\n", - "# group the data according to the months_num and get the mean\n", - "# monthly_data = wind_data.groupby(['months_num']).mean()\n", - "\n", - "# monthly_data.head()" + "data.groupby(data.index.to_period('W')).mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 16. Calculate the min, max and mean windspeeds and standard deviations of the windspeeds across all locations for each week (assume that the first week starts on January 2 1961) for the first 52 weeks." + "### Step 15. Calculate the min, max and mean windspeeds and standard deviations of the windspeeds across all locations for each week (assume that the first week starts on January 2 1961) for the first 52 weeks." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -4731,7 +4046,7 @@ "[10 rows x 48 columns]" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } diff --git a/06_Stats/Wind_Stats/Solutions.ipynb b/06_Stats/Wind_Stats/Solutions.ipynb index 53151490b..9df3caa2b 100644 --- a/06_Stats/Wind_Stats/Solutions.ipynb +++ b/06_Stats/Wind_Stats/Solutions.ipynb @@ -78,10 +78,7 @@ "collapsed": false }, "outputs": [], - "source": [ - "import pandas as pd\n", - "import datetime" - ] + "source": [] }, { "cell_type": "markdown", @@ -546,7 +543,7 @@ }, { "cell_type": "code", - "execution_count": 423, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -569,7 +566,7 @@ "dtype: int64" ] }, - "execution_count": 423, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -585,7 +582,7 @@ }, { "cell_type": "code", - "execution_count": 424, + "execution_count": 7, "metadata": { "collapsed": false, "scrolled": true @@ -594,22 +591,22 @@ { "data": { "text/plain": [ - "RPT 6\n", - "VAL 9\n", - "ROS 10\n", - "KIL 7\n", - "SHA 10\n", - "BIR 12\n", - "DUB 9\n", - "CLA 10\n", - "MUL 9\n", - "CLO 11\n", - "BEL 12\n", - "MAL 8\n", + "RPT 6568\n", + "VAL 6571\n", + "ROS 6572\n", + "KIL 6569\n", + "SHA 6572\n", + "BIR 6574\n", + "DUB 6571\n", + "CLA 6572\n", + "MUL 6571\n", + "CLO 6573\n", + "BEL 6574\n", + "MAL 6570\n", "dtype: int64" ] }, - "execution_count": 424, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -626,7 +623,7 @@ }, { "cell_type": "code", - "execution_count": 426, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -634,10 +631,10 @@ { "data": { "text/plain": [ - "10.227982360836924" + "10.223864592840483" ] }, - "execution_count": 426, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -655,11 +652,19 @@ }, { "cell_type": "code", - "execution_count": 264, + "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "//anaconda/lib/python2.7/site-packages/numpy/lib/function_base.py:4291: RuntimeWarning: Invalid value encountered in percentile\n", + " interpolation=interpolation)\n" + ] + }, { "data": { "text/html": [ @@ -668,118 +673,142 @@ " \n", " \n", " \n", - " min\n", - " max\n", - " mean\n", - " std\n", + " RPT\n", + " VAL\n", + " ROS\n", + " KIL\n", + " SHA\n", + " BIR\n", + " DUB\n", + " CLA\n", + " MUL\n", + " CLO\n", + " BEL\n", + " MAL\n", " \n", " \n", " \n", " \n", - " RPT\n", - " 0.67\n", - " 35.80\n", - " 12.362987\n", - " 5.618413\n", + " count\n", + " 6568.000000\n", + " 6571.000000\n", + " 6572.000000\n", + " 6569.000000\n", + " 6572.000000\n", + " 6574.000000\n", + " 6571.000000\n", + " 6572.000000\n", + " 6571.000000\n", + " 6573.000000\n", + " 6574.000000\n", + " 6570.000000\n", " \n", " \n", - " VAL\n", - " 0.21\n", - " 33.37\n", + " mean\n", + " 12.362987\n", " 10.644314\n", - " 5.267356\n", - " \n", - " \n", - " ROS\n", - " 1.50\n", - " 33.84\n", " 11.660526\n", - " 5.008450\n", - " \n", - " \n", - " KIL\n", - " 0.00\n", - " 28.46\n", " 6.306468\n", - " 3.605811\n", - " \n", - " \n", - " SHA\n", - " 0.13\n", - " 37.54\n", " 10.455834\n", - " 4.936125\n", - " \n", - " \n", - " BIR\n", - " 0.00\n", - " 26.16\n", " 7.092254\n", - " 3.968683\n", - " \n", - " \n", - " DUB\n", - " 0.00\n", - " 30.37\n", " 9.797343\n", - " 4.977555\n", - " \n", - " \n", - " CLA\n", - " 0.00\n", - " 31.08\n", " 8.495053\n", - " 4.499449\n", - " \n", - " \n", - " MUL\n", - " 0.00\n", - " 25.88\n", " 8.493590\n", - " 4.166872\n", + " 8.707332\n", + " 13.121007\n", + " 15.599079\n", " \n", " \n", - " CLO\n", - " 0.04\n", - " 28.21\n", - " 8.707332\n", + " std\n", + " 5.618413\n", + " 5.267356\n", + " 5.008450\n", + " 3.605811\n", + " 4.936125\n", + " 3.968683\n", + " 4.977555\n", + " 4.499449\n", + " 4.166872\n", " 4.503954\n", + " 5.835037\n", + " 6.699794\n", " \n", " \n", - " BEL\n", - " 0.13\n", - " 42.38\n", - " 13.121007\n", - " 5.835037\n", + " min\n", + " 0.670000\n", + " 0.210000\n", + " 1.500000\n", + " 0.000000\n", + " 0.130000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.000000\n", + " 0.040000\n", + " 0.130000\n", + " 0.670000\n", + " \n", + " \n", + " 50%\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 6.830000\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 12.500000\n", + " NaN\n", " \n", " \n", - " MAL\n", - " 0.67\n", - " 42.54\n", - " 15.599079\n", - " 6.699794\n", + " max\n", + " 35.800000\n", + " 33.370000\n", + " 33.840000\n", + " 28.460000\n", + " 37.540000\n", + " 26.160000\n", + " 30.370000\n", + " 31.080000\n", + " 25.880000\n", + " 28.210000\n", + " 42.380000\n", + " 42.540000\n", " \n", " \n", "\n", "" ], "text/plain": [ - " min max mean std\n", - "RPT 0.67 35.80 12.362987 5.618413\n", - "VAL 0.21 33.37 10.644314 5.267356\n", - "ROS 1.50 33.84 11.660526 5.008450\n", - "KIL 0.00 28.46 6.306468 3.605811\n", - "SHA 0.13 37.54 10.455834 4.936125\n", - "BIR 0.00 26.16 7.092254 3.968683\n", - "DUB 0.00 30.37 9.797343 4.977555\n", - "CLA 0.00 31.08 8.495053 4.499449\n", - "MUL 0.00 25.88 8.493590 4.166872\n", - "CLO 0.04 28.21 8.707332 4.503954\n", - "BEL 0.13 42.38 13.121007 5.835037\n", - "MAL 0.67 42.54 15.599079 6.699794" + " RPT VAL ROS KIL SHA \\\n", + "count 6568.000000 6571.000000 6572.000000 6569.000000 6572.000000 \n", + "mean 12.362987 10.644314 11.660526 6.306468 10.455834 \n", + "std 5.618413 5.267356 5.008450 3.605811 4.936125 \n", + "min 0.670000 0.210000 1.500000 0.000000 0.130000 \n", + "50% NaN NaN NaN NaN NaN \n", + "max 35.800000 33.370000 33.840000 28.460000 37.540000 \n", + "\n", + " BIR DUB CLA MUL CLO \\\n", + "count 6574.000000 6571.000000 6572.000000 6571.000000 6573.000000 \n", + "mean 7.092254 9.797343 8.495053 8.493590 8.707332 \n", + "std 3.968683 4.977555 4.499449 4.166872 4.503954 \n", + "min 0.000000 0.000000 0.000000 0.000000 0.040000 \n", + "50% 6.830000 NaN NaN NaN NaN \n", + "max 26.160000 30.370000 31.080000 25.880000 28.210000 \n", + "\n", + " BEL MAL \n", + "count 6574.000000 6570.000000 \n", + "mean 13.121007 15.599079 \n", + "std 5.835037 6.699794 \n", + "min 0.130000 0.670000 \n", + "50% 12.500000 NaN \n", + "max 42.380000 42.540000 " ] }, - "execution_count": 264, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -797,7 +826,7 @@ }, { "cell_type": "code", - "execution_count": 404, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -815,57 +844,65 @@ " mean\n", " std\n", " \n", + " \n", + " Yr_Mo_Dy\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " 0\n", - " 1.0\n", + " 1961-01-01\n", + " 9.29\n", " 18.50\n", - " 12.016667\n", - " 4.382798\n", + " 13.018182\n", + " 2.808875\n", " \n", " \n", - " 1\n", - " 1.0\n", + " 1961-01-02\n", + " 6.50\n", " 17.54\n", - " 10.475000\n", - " 4.260110\n", + " 11.336364\n", + " 3.188994\n", " \n", " \n", - " 2\n", - " 1.0\n", + " 1961-01-03\n", + " 6.17\n", " 18.50\n", - " 10.755000\n", - " 4.664914\n", + " 11.641818\n", + " 3.681912\n", " \n", " \n", - " 3\n", - " 1.0\n", + " 1961-01-04\n", + " 1.79\n", " 11.75\n", - " 6.186923\n", - " 3.435771\n", + " 6.619167\n", + " 3.198126\n", " \n", " \n", - " 4\n", - " 1.0\n", + " 1961-01-05\n", + " 6.17\n", " 13.33\n", - " 9.889231\n", - " 3.551768\n", + " 10.630000\n", + " 2.445356\n", " \n", " \n", "\n", "" ], "text/plain": [ - " min max mean std\n", - "0 1.0 18.50 12.016667 4.382798\n", - "1 1.0 17.54 10.475000 4.260110\n", - "2 1.0 18.50 10.755000 4.664914\n", - "3 1.0 11.75 6.186923 3.435771\n", - "4 1.0 13.33 9.889231 3.551768" + " min max mean std\n", + "Yr_Mo_Dy \n", + "1961-01-01 9.29 18.50 13.018182 2.808875\n", + "1961-01-02 6.50 17.54 11.336364 3.188994\n", + "1961-01-03 6.17 18.50 11.641818 3.681912\n", + "1961-01-04 1.79 11.75 6.619167 3.198126\n", + "1961-01-05 6.17 13.33 10.630000 2.445356" ] }, - "execution_count": 404, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -882,7 +919,7 @@ }, { "cell_type": "code", - "execution_count": 427, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -905,7 +942,7 @@ "dtype: float64" ] }, - "execution_count": 427, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -921,7 +958,7 @@ }, { "cell_type": "code", - "execution_count": 428, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -946,10 +983,6 @@ " CLO\n", " BEL\n", " MAL\n", - " date\n", - " month\n", - " year\n", - " day\n", " \n", " \n", " Yr_Mo_Dy\n", @@ -965,404 +998,328 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " 1961-01-01\n", - " 15.04\n", - " 14.96\n", - " 13.17\n", - " 9.29\n", - " NaN\n", - " 9.87\n", - " 13.67\n", - " 10.25\n", - " 10.83\n", - " 12.58\n", - " 18.50\n", - " 15.04\n", - " 1961-01-01\n", - " 1\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1962-01-01\n", - " 9.29\n", - " 3.42\n", - " 11.54\n", - " 3.50\n", - " 2.21\n", - " 1.96\n", - " 10.41\n", - " 2.79\n", - " 3.54\n", - " 5.17\n", - " 4.38\n", - " 7.92\n", - " 1962-01-01\n", - " 1\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1963-01-01\n", - " 15.59\n", - " 13.62\n", - " 19.79\n", - " 8.38\n", - " 12.25\n", - " 10.00\n", - " 23.45\n", - " 15.71\n", - " 13.59\n", - " 14.37\n", - " 17.58\n", - " 34.13\n", - " 1963-01-01\n", - " 1\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1964-01-01\n", - " 25.80\n", - " 22.13\n", - " 18.21\n", - " 13.25\n", - " 21.29\n", - " 14.79\n", - " 14.12\n", - " 19.58\n", - " 13.25\n", - " 16.75\n", - " 28.96\n", - " 21.00\n", - " 1964-01-01\n", - " 1\n", - " 1964\n", - " 1\n", - " \n", - " \n", - " 1965-01-01\n", - " 9.54\n", - " 11.92\n", - " 9.00\n", - " 4.38\n", - " 6.08\n", - " 5.21\n", - " 10.25\n", - " 6.08\n", - " 5.71\n", - " 8.63\n", - " 12.04\n", - " 17.41\n", - " 1965-01-01\n", - " 1\n", - " 1965\n", - " 1\n", - " \n", - " \n", - " 1966-01-01\n", - " 22.04\n", - " 21.50\n", - " 17.08\n", - " 12.75\n", - " 22.17\n", - " 15.59\n", - " 21.79\n", - " 18.12\n", - " 16.66\n", - " 17.83\n", - " 28.33\n", - " 23.79\n", - " 1966-01-01\n", - " 1\n", - " 1966\n", - " 1\n", - " \n", - " \n", - " 1967-01-01\n", - " 6.46\n", - " 4.46\n", - " 6.50\n", - " 3.21\n", - " 6.67\n", - " 3.79\n", - " 11.38\n", - " 3.83\n", - " 7.71\n", - " 9.08\n", - " 10.67\n", - " 20.91\n", - " 1967-01-01\n", - " 1\n", - " 1967\n", - " 1\n", - " \n", - " \n", - " 1968-01-01\n", - " 30.04\n", - " 17.88\n", - " 16.25\n", - " 16.25\n", - " 21.79\n", - " 12.54\n", - " 18.16\n", - " 16.62\n", - " 18.75\n", - " 17.62\n", - " 22.25\n", - " 27.29\n", - " 1968-01-01\n", - " 1\n", - " 1968\n", - " 1\n", - " \n", - " \n", - " 1969-01-01\n", - " 6.13\n", - " 1.63\n", - " 5.41\n", - " 1.08\n", - " 2.54\n", - " 1.00\n", - " 8.50\n", - " 2.42\n", - " 4.58\n", - " 6.34\n", - " 9.17\n", - " 16.71\n", - " 1969-01-01\n", - " 1\n", - " 1969\n", - " 1\n", - " \n", - " \n", - " 1970-01-01\n", - " 9.59\n", - " 2.96\n", - " 11.79\n", - " 3.42\n", - " 6.13\n", - " 4.08\n", - " 9.00\n", - " 4.46\n", - " 7.29\n", - " 3.50\n", - " 7.33\n", - " 13.00\n", - " 1970-01-01\n", - " 1\n", - " 1970\n", - " 1\n", - " \n", - " \n", - " 1971-01-01\n", - " 3.71\n", - " 0.79\n", - " 4.71\n", - " 0.17\n", - " 1.42\n", - " 1.04\n", - " 4.63\n", - " 0.75\n", - " 1.54\n", - " 1.08\n", - " 4.21\n", - " 9.54\n", - " 1971-01-01\n", - " 1\n", - " 1971\n", - " 1\n", - " \n", - " \n", - " 1972-01-01\n", - " 9.29\n", - " 3.63\n", - " 14.54\n", - " 4.25\n", - " 6.75\n", - " 4.42\n", - " 13.00\n", - " 5.33\n", - " 10.04\n", - " 8.54\n", - " 8.71\n", - " 19.17\n", - " 1972-01-01\n", - " 1\n", - " 1972\n", - " 1\n", - " \n", - " \n", - " 1973-01-01\n", - " 16.50\n", - " 15.92\n", - " 14.62\n", - " 7.41\n", - " 8.29\n", - " 11.21\n", - " 13.54\n", - " 7.79\n", - " 10.46\n", - " 10.79\n", - " 13.37\n", - " 9.71\n", - " 1973-01-01\n", - " 1\n", - " 1973\n", - " 1\n", - " \n", - " \n", - " 1974-01-01\n", - " 23.21\n", - " 16.54\n", - " 16.08\n", - " 9.75\n", - " 15.83\n", - " 11.46\n", - " 9.54\n", - " 13.54\n", - " 13.83\n", - " 16.66\n", - " 17.21\n", - " 25.29\n", - " 1974-01-01\n", - " 1\n", - " 1974\n", - " 1\n", - " \n", - " \n", - " 1975-01-01\n", - " 14.04\n", - " 13.54\n", - " 11.29\n", - " 5.46\n", - " 12.58\n", - " 5.58\n", - " 8.12\n", - " 8.96\n", - " 9.29\n", - " 5.17\n", - " 7.71\n", - " 11.63\n", - " 1975-01-01\n", - " 1\n", - " 1975\n", - " 1\n", - " \n", - " \n", - " 1976-01-01\n", - " 18.34\n", - " 17.67\n", - " 14.83\n", - " 8.00\n", - " 16.62\n", - " 10.13\n", - " 13.17\n", - " 9.04\n", - " 13.13\n", - " 5.75\n", - " 11.38\n", - " 14.96\n", - " 1976-01-01\n", - " 1\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1977-01-01\n", - " 20.04\n", - " 11.92\n", - " 20.25\n", - " 9.13\n", - " 9.29\n", - " 8.04\n", - " 10.75\n", - " 5.88\n", - " 9.00\n", - " 9.00\n", - " 14.88\n", - " 25.70\n", - " 1977-01-01\n", - " 1\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1978-01-01\n", - " 8.33\n", - " 7.12\n", - " 7.71\n", - " 3.54\n", - " 8.50\n", - " 7.50\n", - " 14.71\n", - " 10.00\n", - " 11.83\n", - " 10.00\n", - " 15.09\n", - " 20.46\n", - " 1978-01-01\n", - " 1\n", - " 1978\n", - " 1\n", + " 1961\n", + " 12.299583\n", + " 10.351796\n", + " 11.362369\n", + " 6.958227\n", + " 10.881763\n", + " 7.729726\n", + " 9.733923\n", + " 8.858788\n", + " 8.647652\n", + " 9.835577\n", + " 13.502795\n", + " 13.680773\n", + " \n", + " \n", + " 1962\n", + " 12.246923\n", + " 10.110438\n", + " 11.732712\n", + " 6.960440\n", + " 10.657918\n", + " 7.393068\n", + " 11.020712\n", + " 8.793753\n", + " 8.316822\n", + " 9.676247\n", + " 12.930685\n", + " 14.323956\n", + " \n", + " \n", + " 1963\n", + " 12.813452\n", + " 10.836986\n", + " 12.541151\n", + " 7.330055\n", + " 11.724110\n", + " 8.434712\n", + " 11.075699\n", + " 10.336548\n", + " 8.903589\n", + " 10.224438\n", + " 13.638877\n", + " 14.999014\n", + " \n", + " \n", + " 1964\n", + " 12.363661\n", + " 10.920164\n", + " 12.104372\n", + " 6.787787\n", + " 11.454481\n", + " 7.570874\n", + " 10.259153\n", + " 9.467350\n", + " 7.789016\n", + " 10.207951\n", + " 13.740546\n", + " 14.910301\n", + " \n", + " \n", + " 1965\n", + " 12.451370\n", + " 11.075534\n", + " 11.848767\n", + " 6.858466\n", + " 11.024795\n", + " 7.478110\n", + " 10.618712\n", + " 8.879918\n", + " 7.907425\n", + " 9.918082\n", + " 12.964247\n", + " 15.591644\n", + " \n", + " \n", + " 1966\n", + " 13.461973\n", + " 11.557205\n", + " 12.020630\n", + " 7.345726\n", + " 11.805041\n", + " 7.793671\n", + " 10.579808\n", + " 8.835096\n", + " 8.514438\n", + " 9.768959\n", + " 14.265836\n", + " 16.307260\n", + " \n", + " \n", + " 1967\n", + " 12.737151\n", + " 10.990986\n", + " 11.739397\n", + " 7.143425\n", + " 11.630740\n", + " 7.368164\n", + " 10.652027\n", + " 9.325616\n", + " 8.645014\n", + " 9.547425\n", + " 14.774548\n", + " 17.135945\n", + " \n", + " \n", + " 1968\n", + " 11.835628\n", + " 10.468197\n", + " 11.409754\n", + " 6.477678\n", + " 10.760765\n", + " 6.067322\n", + " 8.859180\n", + " 8.255519\n", + " 7.224945\n", + " 7.832978\n", + " 12.808634\n", + " 15.017486\n", + " \n", + " \n", + " 1969\n", + " 11.166356\n", + " 9.723699\n", + " 10.902000\n", + " 5.767973\n", + " 9.873918\n", + " 6.189973\n", + " 8.564493\n", + " 7.711397\n", + " 7.924521\n", + " 7.754384\n", + " 12.621233\n", + " 15.762904\n", + " \n", + " \n", + " 1970\n", + " 12.600329\n", + " 10.726932\n", + " 11.730247\n", + " 6.217178\n", + " 10.567370\n", + " 7.609452\n", + " 9.609890\n", + " 8.334630\n", + " 9.297616\n", + " 8.289808\n", + " 13.183644\n", + " 16.456027\n", + " \n", + " \n", + " 1971\n", + " 11.273123\n", + " 9.095178\n", + " 11.088329\n", + " 5.241507\n", + " 9.440329\n", + " 6.097151\n", + " 8.385890\n", + " 6.757315\n", + " 7.915370\n", + " 7.229753\n", + " 12.208932\n", + " 15.025233\n", + " \n", + " \n", + " 1972\n", + " 12.463962\n", + " 10.561311\n", + " 12.058333\n", + " 5.929699\n", + " 9.430410\n", + " 6.358825\n", + " 9.704508\n", + " 7.680792\n", + " 8.357295\n", + " 7.515273\n", + " 12.727377\n", + " 15.028716\n", + " \n", + " \n", + " 1973\n", + " 11.828466\n", + " 10.680493\n", + " 10.680493\n", + " 5.547863\n", + " 9.640877\n", + " 6.548740\n", + " 8.482110\n", + " 7.614274\n", + " 8.245534\n", + " 7.812411\n", + " 12.169699\n", + " 15.441096\n", + " \n", + " \n", + " 1974\n", + " 13.643096\n", + " 11.811781\n", + " 12.336356\n", + " 6.427041\n", + " 11.110986\n", + " 6.809781\n", + " 10.084603\n", + " 9.896986\n", + " 9.331753\n", + " 8.736356\n", + " 13.252959\n", + " 16.947671\n", + " \n", + " \n", + " 1975\n", + " 12.008575\n", + " 10.293836\n", + " 11.564712\n", + " 5.269096\n", + " 9.190082\n", + " 5.668521\n", + " 8.562603\n", + " 7.843836\n", + " 8.797945\n", + " 7.382822\n", + " 12.631671\n", + " 15.307863\n", + " \n", + " \n", + " 1976\n", + " 11.737842\n", + " 10.203115\n", + " 10.761230\n", + " 5.109426\n", + " 8.846339\n", + " 6.311038\n", + " 9.149126\n", + " 7.146202\n", + " 8.883716\n", + " 7.883087\n", + " 12.332377\n", + " 15.471448\n", + " \n", + " \n", + " 1977\n", + " 13.099616\n", + " 11.144493\n", + " 12.627836\n", + " 6.073945\n", + " 10.003836\n", + " 8.586438\n", + " 11.523205\n", + " 8.378384\n", + " 9.098192\n", + " 8.821616\n", + " 13.459068\n", + " 16.590849\n", + " \n", + " \n", + " 1978\n", + " 12.504356\n", + " 11.044274\n", + " 11.380000\n", + " 6.082356\n", + " 10.167233\n", + " 7.650658\n", + " 9.489342\n", + " 8.800466\n", + " 9.089753\n", + " 8.301699\n", + " 12.967397\n", + " 16.771370\n", " \n", " \n", "\n", "" ], "text/plain": [ - " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", - "Yr_Mo_Dy \n", - "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", - "1962-01-01 9.29 3.42 11.54 3.50 2.21 1.96 10.41 2.79 3.54 \n", - "1963-01-01 15.59 13.62 19.79 8.38 12.25 10.00 23.45 15.71 13.59 \n", - "1964-01-01 25.80 22.13 18.21 13.25 21.29 14.79 14.12 19.58 13.25 \n", - "1965-01-01 9.54 11.92 9.00 4.38 6.08 5.21 10.25 6.08 5.71 \n", - "1966-01-01 22.04 21.50 17.08 12.75 22.17 15.59 21.79 18.12 16.66 \n", - "1967-01-01 6.46 4.46 6.50 3.21 6.67 3.79 11.38 3.83 7.71 \n", - "1968-01-01 30.04 17.88 16.25 16.25 21.79 12.54 18.16 16.62 18.75 \n", - "1969-01-01 6.13 1.63 5.41 1.08 2.54 1.00 8.50 2.42 4.58 \n", - "1970-01-01 9.59 2.96 11.79 3.42 6.13 4.08 9.00 4.46 7.29 \n", - "1971-01-01 3.71 0.79 4.71 0.17 1.42 1.04 4.63 0.75 1.54 \n", - "1972-01-01 9.29 3.63 14.54 4.25 6.75 4.42 13.00 5.33 10.04 \n", - "1973-01-01 16.50 15.92 14.62 7.41 8.29 11.21 13.54 7.79 10.46 \n", - "1974-01-01 23.21 16.54 16.08 9.75 15.83 11.46 9.54 13.54 13.83 \n", - "1975-01-01 14.04 13.54 11.29 5.46 12.58 5.58 8.12 8.96 9.29 \n", - "1976-01-01 18.34 17.67 14.83 8.00 16.62 10.13 13.17 9.04 13.13 \n", - "1977-01-01 20.04 11.92 20.25 9.13 9.29 8.04 10.75 5.88 9.00 \n", - "1978-01-01 8.33 7.12 7.71 3.54 8.50 7.50 14.71 10.00 11.83 \n", + " RPT VAL ROS KIL SHA BIR \\\n", + "Yr_Mo_Dy \n", + "1961 12.299583 10.351796 11.362369 6.958227 10.881763 7.729726 \n", + "1962 12.246923 10.110438 11.732712 6.960440 10.657918 7.393068 \n", + "1963 12.813452 10.836986 12.541151 7.330055 11.724110 8.434712 \n", + "1964 12.363661 10.920164 12.104372 6.787787 11.454481 7.570874 \n", + "1965 12.451370 11.075534 11.848767 6.858466 11.024795 7.478110 \n", + "1966 13.461973 11.557205 12.020630 7.345726 11.805041 7.793671 \n", + "1967 12.737151 10.990986 11.739397 7.143425 11.630740 7.368164 \n", + "1968 11.835628 10.468197 11.409754 6.477678 10.760765 6.067322 \n", + "1969 11.166356 9.723699 10.902000 5.767973 9.873918 6.189973 \n", + "1970 12.600329 10.726932 11.730247 6.217178 10.567370 7.609452 \n", + "1971 11.273123 9.095178 11.088329 5.241507 9.440329 6.097151 \n", + "1972 12.463962 10.561311 12.058333 5.929699 9.430410 6.358825 \n", + "1973 11.828466 10.680493 10.680493 5.547863 9.640877 6.548740 \n", + "1974 13.643096 11.811781 12.336356 6.427041 11.110986 6.809781 \n", + "1975 12.008575 10.293836 11.564712 5.269096 9.190082 5.668521 \n", + "1976 11.737842 10.203115 10.761230 5.109426 8.846339 6.311038 \n", + "1977 13.099616 11.144493 12.627836 6.073945 10.003836 8.586438 \n", + "1978 12.504356 11.044274 11.380000 6.082356 10.167233 7.650658 \n", "\n", - " CLO BEL MAL date month year day \n", - "Yr_Mo_Dy \n", - "1961-01-01 12.58 18.50 15.04 1961-01-01 1 1961 1 \n", - "1962-01-01 5.17 4.38 7.92 1962-01-01 1 1962 1 \n", - "1963-01-01 14.37 17.58 34.13 1963-01-01 1 1963 1 \n", - "1964-01-01 16.75 28.96 21.00 1964-01-01 1 1964 1 \n", - "1965-01-01 8.63 12.04 17.41 1965-01-01 1 1965 1 \n", - "1966-01-01 17.83 28.33 23.79 1966-01-01 1 1966 1 \n", - "1967-01-01 9.08 10.67 20.91 1967-01-01 1 1967 1 \n", - "1968-01-01 17.62 22.25 27.29 1968-01-01 1 1968 1 \n", - "1969-01-01 6.34 9.17 16.71 1969-01-01 1 1969 1 \n", - "1970-01-01 3.50 7.33 13.00 1970-01-01 1 1970 1 \n", - "1971-01-01 1.08 4.21 9.54 1971-01-01 1 1971 1 \n", - "1972-01-01 8.54 8.71 19.17 1972-01-01 1 1972 1 \n", - "1973-01-01 10.79 13.37 9.71 1973-01-01 1 1973 1 \n", - "1974-01-01 16.66 17.21 25.29 1974-01-01 1 1974 1 \n", - "1975-01-01 5.17 7.71 11.63 1975-01-01 1 1975 1 \n", - "1976-01-01 5.75 11.38 14.96 1976-01-01 1 1976 1 \n", - "1977-01-01 9.00 14.88 25.70 1977-01-01 1 1977 1 \n", - "1978-01-01 10.00 15.09 20.46 1978-01-01 1 1978 1 " + " DUB CLA MUL CLO BEL MAL \n", + "Yr_Mo_Dy \n", + "1961 9.733923 8.858788 8.647652 9.835577 13.502795 13.680773 \n", + "1962 11.020712 8.793753 8.316822 9.676247 12.930685 14.323956 \n", + "1963 11.075699 10.336548 8.903589 10.224438 13.638877 14.999014 \n", + "1964 10.259153 9.467350 7.789016 10.207951 13.740546 14.910301 \n", + "1965 10.618712 8.879918 7.907425 9.918082 12.964247 15.591644 \n", + "1966 10.579808 8.835096 8.514438 9.768959 14.265836 16.307260 \n", + "1967 10.652027 9.325616 8.645014 9.547425 14.774548 17.135945 \n", + "1968 8.859180 8.255519 7.224945 7.832978 12.808634 15.017486 \n", + "1969 8.564493 7.711397 7.924521 7.754384 12.621233 15.762904 \n", + "1970 9.609890 8.334630 9.297616 8.289808 13.183644 16.456027 \n", + "1971 8.385890 6.757315 7.915370 7.229753 12.208932 15.025233 \n", + "1972 9.704508 7.680792 8.357295 7.515273 12.727377 15.028716 \n", + "1973 8.482110 7.614274 8.245534 7.812411 12.169699 15.441096 \n", + "1974 10.084603 9.896986 9.331753 8.736356 13.252959 16.947671 \n", + "1975 8.562603 7.843836 8.797945 7.382822 12.631671 15.307863 \n", + "1976 9.149126 7.146202 8.883716 7.883087 12.332377 15.471448 \n", + "1977 11.523205 8.378384 9.098192 8.821616 13.459068 16.590849 \n", + "1978 9.489342 8.800466 9.089753 8.301699 12.967397 16.771370 " ] }, - "execution_count": 428, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1378,7 +1335,7 @@ }, { "cell_type": "code", - "execution_count": 429, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -1403,10 +1360,6 @@ " CLO\n", " BEL\n", " MAL\n", - " date\n", - " month\n", - " year\n", - " day\n", " \n", " \n", " Yr_Mo_Dy\n", @@ -1422,582 +1375,458 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " 1961-01-01\n", - " 15.04\n", - " 14.96\n", - " 13.17\n", - " 9.29\n", - " NaN\n", - " 9.87\n", - " 13.67\n", - " 10.25\n", - " 10.83\n", - " 12.58\n", - " 18.50\n", - " 15.04\n", - " 1961-01-01\n", - " 1\n", - " 1961\n", - " 1\n", + " 1961-01\n", + " 14.841333\n", + " 11.988333\n", + " 13.431613\n", + " 7.736774\n", + " 11.072759\n", + " 8.588065\n", + " 11.184839\n", + " 9.245333\n", + " 9.085806\n", + " 10.107419\n", + " 13.880968\n", + " 14.703226\n", " \n", " \n", - " 1961-02-01\n", - " 14.25\n", - " 15.12\n", - " 9.04\n", - " 5.88\n", - " 12.08\n", - " 7.17\n", - " 10.17\n", - " 3.63\n", - " 6.50\n", - " 5.50\n", - " 9.17\n", - " 8.00\n", - " 1961-02-01\n", - " 2\n", - " 1961\n", - " 1\n", + " 1961-02\n", + " 16.269286\n", + " 14.975357\n", + " 14.441481\n", + " 9.230741\n", + " 13.852143\n", + " 10.937500\n", + " 11.890714\n", + " 11.846071\n", + " 11.821429\n", + " 12.714286\n", + " 18.583214\n", + " 15.411786\n", " \n", " \n", - " 1961-03-01\n", - " 12.67\n", - " 13.13\n", - " 11.79\n", - " 6.42\n", - " 9.79\n", - " 8.54\n", - " 10.25\n", - " 13.29\n", - " NaN\n", - " 12.21\n", - " 20.62\n", - " NaN\n", - " 1961-03-01\n", - " 3\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-04-01\n", - " 8.38\n", - " 6.34\n", - " 8.33\n", - " 6.75\n", - " 9.33\n", - " 9.54\n", - " 11.67\n", - " 8.21\n", - " 11.21\n", - " 6.46\n", - " 11.96\n", - " 7.17\n", - " 1961-04-01\n", - " 4\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-05-01\n", - " 15.87\n", - " 13.88\n", - " 15.37\n", - " 9.79\n", - " 13.46\n", - " 10.17\n", - " 9.96\n", - " 14.04\n", - " 9.75\n", - " 9.92\n", - " 18.63\n", - " 11.12\n", - " 1961-05-01\n", - " 5\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-06-01\n", - " 15.92\n", - " 9.59\n", - " 12.04\n", - " 8.79\n", - " 11.54\n", - " 6.04\n", - " 9.75\n", - " 8.29\n", - " 9.33\n", - " 10.34\n", - " 10.67\n", - " 12.12\n", - " 1961-06-01\n", - " 6\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-07-01\n", - " 7.21\n", - " 6.83\n", - " 7.71\n", - " 4.42\n", - " 8.46\n", - " 4.79\n", - " 6.71\n", - " 6.00\n", - " 5.79\n", - " 7.96\n", - " 6.96\n", - " 8.71\n", - " 1961-07-01\n", - " 7\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-08-01\n", - " 9.59\n", - " 5.09\n", - " 5.54\n", - " 4.63\n", - " 8.29\n", - " 5.25\n", - " 4.21\n", - " 5.25\n", - " 5.37\n", - " 5.41\n", - " 8.38\n", - " 9.08\n", - " 1961-08-01\n", - " 8\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-09-01\n", - " 5.58\n", - " 1.13\n", - " 4.96\n", - " 3.04\n", - " 4.25\n", - " 2.25\n", - " 4.63\n", - " 2.71\n", - " 3.67\n", - " 6.00\n", - " 4.79\n", - " 5.41\n", - " 1961-09-01\n", - " 9\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-10-01\n", - " 14.25\n", - " 12.87\n", - " 7.87\n", - " 8.00\n", - " 13.00\n", - " 7.75\n", - " 5.83\n", - " 9.00\n", - " 7.08\n", - " 5.29\n", - " 11.79\n", - " 4.04\n", - " 1961-10-01\n", - " 10\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-11-01\n", - " 13.21\n", - " 13.13\n", - " 14.33\n", - " 8.54\n", - " 12.17\n", - " 10.21\n", - " 13.08\n", - " 12.17\n", - " 10.92\n", - " 13.54\n", - " 20.17\n", - " 20.04\n", - " 1961-11-01\n", - " 11\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1961-12-01\n", - " 9.67\n", - " 7.75\n", - " 8.00\n", - " 3.96\n", - " 6.00\n", - " 2.75\n", - " 7.25\n", - " 2.50\n", - " 5.58\n", - " 5.58\n", - " 7.79\n", - " 11.17\n", - " 1961-12-01\n", - " 12\n", - " 1961\n", - " 1\n", - " \n", - " \n", - " 1962-01-01\n", - " 9.29\n", - " 3.42\n", - " 11.54\n", - " 3.50\n", - " 2.21\n", - " 1.96\n", - " 10.41\n", - " 2.79\n", - " 3.54\n", - " 5.17\n", - " 4.38\n", - " 7.92\n", - " 1962-01-01\n", - " 1\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-02-01\n", - " 19.12\n", - " 13.96\n", - " 12.21\n", - " 10.58\n", - " 15.71\n", - " 10.63\n", - " 15.71\n", - " 11.08\n", - " 13.17\n", - " 12.62\n", - " 17.67\n", - " 22.71\n", - " 1962-02-01\n", - " 2\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-03-01\n", - " 8.21\n", - " 4.83\n", - " 9.00\n", - " 4.83\n", - " 6.00\n", - " 2.21\n", - " 7.96\n", - " 1.87\n", - " 4.08\n", - " 3.92\n", - " 4.08\n", - " 5.41\n", - " 1962-03-01\n", - " 3\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-04-01\n", - " 14.33\n", - " 12.25\n", - " 11.87\n", - " 10.37\n", - " 14.92\n", - " 11.00\n", - " 19.79\n", - " 11.67\n", - " 14.09\n", - " 15.46\n", - " 16.62\n", - " 23.58\n", - " 1962-04-01\n", - " 4\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-05-01\n", - " 9.62\n", - " 9.54\n", - " 3.58\n", - " 3.33\n", - " 8.75\n", - " 3.75\n", - " 2.25\n", - " 2.58\n", - " 1.67\n", - " 2.37\n", - " 7.29\n", - " 3.25\n", - " 1962-05-01\n", - " 5\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-06-01\n", - " 5.88\n", - " 6.29\n", - " 8.67\n", - " 5.21\n", - " 5.00\n", - " 4.25\n", - " 5.91\n", - " 5.41\n", - " 4.79\n", - " 9.25\n", - " 5.25\n", - " 10.71\n", - " 1962-06-01\n", - " 6\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-07-01\n", - " 8.67\n", - " 4.17\n", - " 6.92\n", - " 6.71\n", - " 8.17\n", - " 5.66\n", - " 11.17\n", - " 9.38\n", - " 8.75\n", - " 11.12\n", - " 10.25\n", - " 17.08\n", - " 1962-07-01\n", - " 7\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-08-01\n", - " 4.58\n", - " 5.37\n", - " 6.04\n", - " 2.29\n", - " 7.87\n", - " 3.71\n", - " 4.46\n", - " 2.58\n", - " 4.00\n", - " 4.79\n", - " 7.21\n", - " 7.46\n", - " 1962-08-01\n", - " 8\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-09-01\n", - " 10.00\n", - " 12.08\n", - " 10.96\n", - " 9.25\n", - " 9.29\n", - " 7.62\n", - " 7.41\n", - " 8.75\n", - " 7.67\n", - " 9.62\n", - " 14.58\n", - " 11.92\n", - " 1962-09-01\n", - " 9\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-10-01\n", - " 14.58\n", - " 7.83\n", - " 19.21\n", - " 10.08\n", - " 11.54\n", - " 8.38\n", - " 13.29\n", - " 10.63\n", - " 8.21\n", - " 12.92\n", - " 18.05\n", - " 18.12\n", - " 1962-10-01\n", - " 10\n", - " 1962\n", - " 1\n", + " 1961-03\n", + " 10.890000\n", + " 11.296452\n", + " 10.752903\n", + " 7.284000\n", + " 10.509355\n", + " 8.866774\n", + " 9.644194\n", + " 9.829677\n", + " 10.294138\n", + " 11.251935\n", + " 16.410968\n", + " 15.720000\n", " \n", " \n", - " 1962-11-01\n", - " 16.88\n", - " 13.25\n", - " 16.00\n", - " 8.96\n", - " 13.46\n", - " 11.46\n", - " 10.46\n", - " 10.17\n", - " 10.37\n", - " 13.21\n", - " 14.83\n", - " 15.16\n", - " 1962-11-01\n", - " 11\n", - " 1962\n", - " 1\n", - " \n", - " \n", - " 1962-12-01\n", - " 18.38\n", - " 15.41\n", - " 11.75\n", - " 6.79\n", - " 12.21\n", - " 8.04\n", - " 8.42\n", - " 10.83\n", - " 5.66\n", - " 9.08\n", - " 11.50\n", - " 11.50\n", - " 1962-12-01\n", - " 12\n", - " 1962\n", - " 1\n", + " 1961-04\n", + " 10.722667\n", + " 9.427667\n", + " 9.998000\n", + " 5.830667\n", + " 8.435000\n", + " 6.495000\n", + " 6.925333\n", + " 7.094667\n", + " 7.342333\n", + " 7.237000\n", + " 11.147333\n", + " 10.278333\n", " \n", " \n", - " 1963-01-01\n", - " 15.59\n", - " 13.62\n", - " 19.79\n", - " 8.38\n", - " 12.25\n", - " 10.00\n", - " 23.45\n", - " 15.71\n", - " 13.59\n", - " 14.37\n", - " 17.58\n", - " 34.13\n", - " 1963-01-01\n", - " 1\n", - " 1963\n", - " 1\n", + " 1961-05\n", + " 9.860968\n", + " 8.850000\n", + " 10.818065\n", + " 5.905333\n", + " 9.490323\n", + " 6.574839\n", + " 7.604000\n", + " 8.177097\n", + " 8.039355\n", + " 8.499355\n", + " 11.900323\n", + " 12.011613\n", " \n", " \n", - " 1963-02-01\n", - " 15.41\n", - " 7.62\n", - " 24.67\n", - " 11.42\n", - " 9.21\n", - " 8.17\n", - " 14.04\n", - " 7.54\n", - " 7.54\n", - " 10.08\n", - " 10.17\n", - " 17.67\n", - " 1963-02-01\n", - " 2\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-03-01\n", - " 16.75\n", - " 19.67\n", - " 17.67\n", - " 8.87\n", - " 19.08\n", - " 15.37\n", - " 16.21\n", - " 14.29\n", - " 11.29\n", - " 9.21\n", - " 19.92\n", - " 19.79\n", - " 1963-03-01\n", - " 3\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-04-01\n", - " 10.54\n", - " 9.59\n", - " 12.46\n", - " 7.33\n", - " 9.46\n", - " 9.59\n", - " 11.79\n", - " 11.87\n", - " 9.79\n", - " 10.71\n", - " 13.37\n", - " 18.21\n", - " 1963-04-01\n", - " 4\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-05-01\n", - " 18.79\n", - " 14.17\n", - " 13.59\n", - " 11.63\n", - " 14.17\n", - " 11.96\n", - " 14.46\n", - " 12.46\n", - " 12.87\n", - " 13.96\n", - " 15.29\n", - " 21.62\n", - " 1963-05-01\n", - " 5\n", - " 1963\n", - " 1\n", - " \n", - " \n", - " 1963-06-01\n", - " 13.37\n", - " 6.87\n", - " 12.00\n", - " 8.50\n", - " 10.04\n", - " 9.42\n", - " 10.92\n", - " 12.96\n", - " 11.79\n", - " 11.04\n", - " 10.92\n", - " 13.67\n", - " 1963-06-01\n", - " 6\n", - " 1963\n", - " 1\n", + " 1961-06\n", + " 9.904138\n", + " 8.520333\n", + " 8.867000\n", + " 6.083000\n", + " 10.824000\n", + " 6.707333\n", + " 9.095667\n", + " 8.849333\n", + " 9.086667\n", + " 9.940333\n", + " 13.995000\n", + " 14.553793\n", + " \n", + " \n", + " 1961-07\n", + " 10.614194\n", + " 8.221613\n", + " 9.110323\n", + " 6.340968\n", + " 10.532581\n", + " 6.198387\n", + " 8.353333\n", + " 8.284194\n", + " 8.077097\n", + " 8.891613\n", + " 11.092581\n", + " 12.312903\n", + " \n", + " \n", + " 1961-08\n", + " 12.035000\n", + " 10.133871\n", + " 10.335806\n", + " 6.845806\n", + " 12.715161\n", + " 8.441935\n", + " 10.093871\n", + " 10.460968\n", + " 9.111613\n", + " 10.544667\n", + " 14.410000\n", + " 14.345333\n", + " \n", + " \n", + " 1961-09\n", + " 12.531000\n", + " 9.656897\n", + " 10.776897\n", + " 7.155517\n", + " 11.003333\n", + " 7.234000\n", + " 8.206000\n", + " 8.936552\n", + " 7.728333\n", + " 9.931333\n", + " 13.718333\n", + " 12.921667\n", + " \n", + " \n", + " 1961-10\n", + " 14.289667\n", + " 10.915806\n", + " 12.236452\n", + " 8.154839\n", + " 11.865484\n", + " 8.333871\n", + " 11.194194\n", + " 9.271935\n", + " 8.942667\n", + " 11.455806\n", + " 14.229355\n", + " 16.793226\n", + " \n", + " \n", + " 1961-11\n", + " 10.896333\n", + " 8.592667\n", + " 11.850333\n", + " 6.045667\n", + " 9.123667\n", + " 6.250667\n", + " 10.869655\n", + " 6.313667\n", + " 6.575000\n", + " 8.383667\n", + " 10.776667\n", + " 12.146000\n", + " \n", + " \n", + " 1961-12\n", + " 14.973548\n", + " 11.903871\n", + " 13.980323\n", + " 7.073871\n", + " 11.323548\n", + " 8.302258\n", + " 11.753548\n", + " 8.163226\n", + " 7.965806\n", + " 9.246774\n", + " 12.239355\n", + " 13.098710\n", + " \n", + " \n", + " 1962-01\n", + " 14.783871\n", + " 13.160323\n", + " 12.591935\n", + " 7.538065\n", + " 11.779677\n", + " 8.720000\n", + " 14.211935\n", + " 9.600000\n", + " 9.670000\n", + " 11.498710\n", + " 16.369355\n", + " 15.661613\n", + " \n", + " \n", + " 1962-02\n", + " 15.844643\n", + " 12.041429\n", + " 15.178929\n", + " 9.262963\n", + " 13.821429\n", + " 9.726786\n", + " 16.916429\n", + " 11.285357\n", + " 12.021071\n", + " 12.126429\n", + " 16.705357\n", + " 18.426786\n", + " \n", + " \n", + " 1962-03\n", + " 11.634333\n", + " 8.602258\n", + " 12.110645\n", + " 6.403226\n", + " 10.352258\n", + " 6.732258\n", + " 10.223226\n", + " 7.641935\n", + " 7.092258\n", + " 8.052581\n", + " 9.690000\n", + " 11.509000\n", + " \n", + " \n", + " 1962-04\n", + " 12.160667\n", + " 9.676667\n", + " 12.088333\n", + " 7.163000\n", + " 10.544000\n", + " 7.558000\n", + " 11.480000\n", + " 8.722000\n", + " 8.703667\n", + " 9.311667\n", + " 12.234333\n", + " 11.780667\n", + " \n", + " \n", + " 1962-05\n", + " 12.745806\n", + " 10.865484\n", + " 11.874839\n", + " 7.471935\n", + " 11.285806\n", + " 7.209032\n", + " 10.105806\n", + " 9.084516\n", + " 7.868065\n", + " 9.293226\n", + " 12.130000\n", + " 12.922581\n", + " \n", + " \n", + " 1962-06\n", + " 10.305667\n", + " 9.677000\n", + " 9.996333\n", + " 6.846667\n", + " 10.711333\n", + " 7.441333\n", + " 10.548667\n", + " 10.306667\n", + " 9.196000\n", + " 10.520333\n", + " 13.757000\n", + " 15.218333\n", + " \n", + " \n", + " 1962-07\n", + " 9.981935\n", + " 8.370645\n", + " 9.753548\n", + " 6.093226\n", + " 9.112903\n", + " 5.877097\n", + " 7.781613\n", + " 8.123226\n", + " 6.829677\n", + " 8.613226\n", + " 10.783871\n", + " 11.326129\n", + " \n", + " \n", + " 1962-08\n", + " 10.964194\n", + " 9.694194\n", + " 10.184516\n", + " 6.701290\n", + " 10.465161\n", + " 7.009032\n", + " 11.136774\n", + " 9.097419\n", + " 8.645484\n", + " 9.511613\n", + " 13.119032\n", + " 15.420968\n", + " \n", + " \n", + " 1962-09\n", + " 11.176333\n", + " 9.507000\n", + " 11.640000\n", + " 6.164333\n", + " 9.722333\n", + " 6.214000\n", + " 8.488000\n", + " 7.020333\n", + " 6.372667\n", + " 8.286000\n", + " 11.483667\n", + " 12.313333\n", + " \n", + " \n", + " 1962-10\n", + " 9.699355\n", + " 8.063548\n", + " 9.357097\n", + " 4.818065\n", + " 8.432258\n", + " 5.730000\n", + " 8.448065\n", + " 7.626774\n", + " 6.630645\n", + " 9.091290\n", + " 13.286774\n", + " 14.090323\n", + " \n", + " \n", + " 1962-11\n", + " 11.071333\n", + " 7.984000\n", + " 12.035667\n", + " 5.740000\n", + " 8.135667\n", + " 6.338333\n", + " 9.615333\n", + " 5.943000\n", + " 6.362333\n", + " 8.084333\n", + " 9.786667\n", + " 13.298333\n", + " \n", + " \n", + " 1962-12\n", + " 16.785484\n", + " 13.753548\n", + " 14.276452\n", + " 9.557419\n", + " 13.724839\n", + " 10.321613\n", + " 13.735806\n", + " 11.212258\n", + " 10.683548\n", + " 11.881935\n", + " 16.043548\n", + " 20.074516\n", + " \n", + " \n", + " 1963-01\n", + " 14.868387\n", + " 11.112903\n", + " 15.121613\n", + " 6.635806\n", + " 11.080645\n", + " 7.835484\n", + " 12.797419\n", + " 9.844839\n", + " 7.841613\n", + " 9.390000\n", + " 11.428710\n", + " 18.822258\n", + " \n", + " \n", + " 1963-02\n", + " 14.418929\n", + " 11.876429\n", + " 15.697500\n", + " 8.611786\n", + " 12.887857\n", + " 9.600357\n", + " 12.729286\n", + " 10.823214\n", + " 8.981786\n", + " 10.355714\n", + " 13.266429\n", + " 17.120714\n", + " \n", + " \n", + " 1963-03\n", + " 14.853871\n", + " 12.271290\n", + " 14.295806\n", + " 9.268387\n", + " 13.112903\n", + " 10.088065\n", + " 12.168387\n", + " 11.340968\n", + " 9.690968\n", + " 11.515484\n", + " 13.982903\n", + " 14.132581\n", + " \n", + " \n", + " 1963-04\n", + " 11.616000\n", + " 10.138000\n", + " 13.233667\n", + " 7.990333\n", + " 11.515333\n", + " 9.727000\n", + " 11.979000\n", + " 11.353000\n", + " 10.341667\n", + " 11.900333\n", + " 13.875667\n", + " 16.333667\n", + " \n", + " \n", + " 1963-05\n", + " 12.879677\n", + " 11.010645\n", + " 12.881290\n", + " 8.411613\n", + " 12.981613\n", + " 9.739677\n", + " 12.280968\n", + " 10.964194\n", + " 10.745161\n", + " 11.394839\n", + " 14.777097\n", + " 14.975161\n", + " \n", + " \n", + " 1963-06\n", + " 10.623333\n", + " 8.434667\n", + " 11.685000\n", + " 6.420333\n", + " 10.142667\n", + " 7.219333\n", + " 9.267333\n", + " 9.589333\n", + " 8.583667\n", + " 9.585333\n", + " 12.098000\n", + " 11.358667\n", " \n", " \n", " ...\n", @@ -2013,719 +1842,595 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " \n", - " \n", - " 1976-07-01\n", - " 8.50\n", - " 1.75\n", - " 6.58\n", - " 2.13\n", - " 2.75\n", - " 2.21\n", - " 5.37\n", - " 2.04\n", - " 5.88\n", - " 4.50\n", - " 4.96\n", - " 10.63\n", - " 1976-07-01\n", - " 7\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-08-01\n", - " 13.00\n", - " 8.38\n", - " 8.63\n", - " 5.83\n", - " 12.92\n", - " 8.25\n", - " 13.00\n", - " 9.42\n", - " 10.58\n", - " 11.34\n", - " 14.21\n", - " 20.25\n", - " 1976-08-01\n", - " 8\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-09-01\n", - " 11.87\n", - " 11.00\n", - " 7.38\n", - " 6.87\n", - " 7.75\n", - " 8.33\n", - " 10.34\n", - " 6.46\n", - " 10.17\n", - " 9.29\n", - " 12.75\n", - " 19.55\n", - " 1976-09-01\n", - " 9\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-10-01\n", - " 10.96\n", - " 6.71\n", - " 10.41\n", - " 4.63\n", - " 7.58\n", - " 5.04\n", - " 5.04\n", - " 5.54\n", - " 6.50\n", - " 3.92\n", - " 6.79\n", - " 5.00\n", - " 1976-10-01\n", - " 10\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-11-01\n", - " 13.96\n", - " 15.67\n", - " 10.29\n", - " 6.46\n", - " 12.79\n", - " 9.08\n", - " 10.00\n", - " 9.67\n", - " 10.21\n", - " 11.63\n", - " 23.09\n", - " 21.96\n", - " 1976-11-01\n", - " 11\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1976-12-01\n", - " 13.46\n", - " 16.42\n", - " 9.21\n", - " 4.54\n", - " 10.75\n", - " 8.67\n", - " 10.88\n", - " 4.83\n", - " 8.79\n", - " 5.91\n", - " 8.83\n", - " 13.67\n", - " 1976-12-01\n", - " 12\n", - " 1976\n", - " 1\n", - " \n", - " \n", - " 1977-01-01\n", - " 20.04\n", - " 11.92\n", - " 20.25\n", - " 9.13\n", - " 9.29\n", - " 8.04\n", - " 10.75\n", - " 5.88\n", - " 9.00\n", - " 9.00\n", - " 14.88\n", - " 25.70\n", - " 1977-01-01\n", - " 1\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-02-01\n", - " 11.83\n", - " 9.71\n", - " 11.00\n", - " 4.25\n", - " 8.58\n", - " 8.71\n", - " 6.17\n", - " 5.66\n", - " 8.29\n", - " 7.58\n", - " 11.71\n", - " 16.50\n", - " 1977-02-01\n", - " 2\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-03-01\n", - " 8.63\n", - " 14.83\n", - " 10.29\n", - " 3.75\n", - " 6.63\n", - " 8.79\n", - " 5.00\n", - " 8.12\n", - " 7.87\n", - " 6.42\n", - " 13.54\n", - " 13.67\n", - " 1977-03-01\n", - " 3\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-04-01\n", - " 21.67\n", - " 16.00\n", - " 17.33\n", - " 13.59\n", - " 20.83\n", - " 15.96\n", - " 25.62\n", - " 17.62\n", - " 19.41\n", - " 20.67\n", - " 24.37\n", - " 30.09\n", - " 1977-04-01\n", - " 4\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-05-01\n", - " 6.42\n", - " 7.12\n", - " 8.67\n", - " 3.58\n", - " 4.58\n", - " 4.00\n", - " 6.75\n", - " 6.13\n", - " 3.33\n", - " 4.50\n", - " 19.21\n", - " 12.38\n", - " 1977-05-01\n", - " 5\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-06-01\n", - " 7.08\n", - " 5.25\n", - " 9.71\n", - " 2.83\n", - " 2.21\n", - " 3.50\n", - " 5.29\n", - " 1.42\n", - " 2.00\n", - " 0.92\n", - " 5.21\n", - " 5.63\n", - " 1977-06-01\n", - " 6\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-07-01\n", - " 15.41\n", - " 16.29\n", - " 17.08\n", - " 6.25\n", - " 11.83\n", - " 11.83\n", - " 12.29\n", - " 10.58\n", - " 10.41\n", - " 7.21\n", - " 17.37\n", - " 7.83\n", - " 1977-07-01\n", - " 7\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-08-01\n", - " 4.33\n", - " 2.96\n", - " 4.42\n", - " 2.33\n", - " 0.96\n", - " 1.08\n", - " 4.96\n", - " 1.87\n", - " 2.33\n", - " 2.04\n", - " 10.50\n", - " 9.83\n", - " 1977-08-01\n", - " 8\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-09-01\n", - " 17.37\n", - " 16.33\n", - " 16.83\n", - " 8.58\n", - " 14.46\n", - " 11.83\n", - " 15.09\n", - " 13.92\n", - " 13.29\n", - " 13.88\n", - " 23.29\n", - " 25.17\n", - " 1977-09-01\n", - " 9\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-10-01\n", - " 16.75\n", - " 15.34\n", - " 12.25\n", - " 9.42\n", - " 16.38\n", - " 11.38\n", - " 18.50\n", - " 13.92\n", - " 14.09\n", - " 14.46\n", - " 22.34\n", - " 29.67\n", - " 1977-10-01\n", - " 10\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-11-01\n", - " 16.71\n", - " 11.54\n", - " 12.17\n", - " 4.17\n", - " 8.54\n", - " 7.17\n", - " 11.12\n", - " 6.46\n", - " 8.25\n", - " 6.21\n", - " 11.04\n", - " 15.63\n", - " 1977-11-01\n", - " 11\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1977-12-01\n", - " 13.37\n", - " 10.92\n", - " 12.42\n", - " 2.37\n", - " 5.79\n", - " 6.13\n", - " 8.96\n", - " 7.38\n", - " 6.29\n", - " 5.71\n", - " 8.54\n", - " 12.42\n", - " 1977-12-01\n", - " 12\n", - " 1977\n", - " 1\n", - " \n", - " \n", - " 1978-01-01\n", - " 8.33\n", - " 7.12\n", - " 7.71\n", - " 3.54\n", - " 8.50\n", - " 7.50\n", - " 14.71\n", - " 10.00\n", - " 11.83\n", - " 10.00\n", - " 15.09\n", - " 20.46\n", - " 1978-01-01\n", - " 1\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-02-01\n", - " 27.25\n", - " 24.21\n", - " 18.16\n", - " 17.46\n", - " 27.54\n", - " 18.05\n", - " 20.96\n", - " 25.04\n", - " 20.04\n", - " 17.50\n", - " 27.71\n", - " 21.12\n", - " 1978-02-01\n", - " 2\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-03-01\n", - " 15.04\n", - " 6.21\n", - " 16.04\n", - " 7.87\n", - " 6.42\n", - " 6.67\n", - " 12.29\n", - " 8.00\n", - " 10.58\n", - " 9.33\n", - " 5.41\n", - " 17.00\n", - " 1978-03-01\n", - " 3\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-04-01\n", - " 3.42\n", - " 7.58\n", - " 2.71\n", - " 1.38\n", - " 3.46\n", - " 2.08\n", - " 2.67\n", - " 4.75\n", - " 4.83\n", - " 1.67\n", - " 7.33\n", - " 13.67\n", - " 1978-04-01\n", - " 4\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-05-01\n", - " 10.54\n", - " 12.21\n", - " 9.08\n", - " 5.29\n", - " 11.00\n", - " 10.08\n", - " 11.17\n", - " 13.75\n", - " 11.87\n", - " 11.79\n", - " 12.87\n", - " 27.16\n", - " 1978-05-01\n", - " 5\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-06-01\n", - " 10.37\n", - " 11.42\n", - " 6.46\n", - " 6.04\n", - " 11.25\n", - " 7.50\n", - " 6.46\n", - " 5.96\n", - " 7.79\n", - " 5.46\n", - " 5.50\n", - " 10.41\n", - " 1978-06-01\n", - " 6\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-07-01\n", - " 12.46\n", - " 10.63\n", - " 11.17\n", - " 6.75\n", - " 12.92\n", - " 9.04\n", - " 12.42\n", - " 9.62\n", - " 12.08\n", - " 8.04\n", - " 14.04\n", - " 16.17\n", - " 1978-07-01\n", - " 7\n", - " 1978\n", - " 1\n", " \n", " \n", - " 1978-08-01\n", - " 19.33\n", - " 15.09\n", - " 20.17\n", - " 8.83\n", - " 12.62\n", - " 10.41\n", - " 9.33\n", - " 12.33\n", - " 9.50\n", - " 9.92\n", - " 15.75\n", - " 18.00\n", - " 1978-08-01\n", - " 8\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-09-01\n", - " 8.42\n", - " 6.13\n", - " 9.87\n", - " 5.25\n", - " 3.21\n", - " 5.71\n", - " 7.25\n", - " 3.50\n", - " 7.33\n", - " 6.50\n", - " 7.62\n", - " 15.96\n", - " 1978-09-01\n", - " 9\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-10-01\n", - " 9.50\n", - " 6.83\n", - " 10.50\n", - " 3.88\n", - " 6.13\n", - " 4.58\n", - " 4.21\n", - " 6.50\n", - " 6.38\n", - " 6.54\n", - " 10.63\n", - " 14.09\n", - " 1978-10-01\n", - " 10\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-11-01\n", - " 13.59\n", - " 16.75\n", - " 11.25\n", - " 7.08\n", - " 11.04\n", - " 8.33\n", - " 8.17\n", - " 11.29\n", - " 10.75\n", - " 11.25\n", - " 23.13\n", - " 25.00\n", - " 1978-11-01\n", - " 11\n", - " 1978\n", - " 1\n", - " \n", - " \n", - " 1978-12-01\n", - " 21.29\n", - " 16.29\n", - " 24.04\n", - " 12.79\n", - " 18.21\n", - " 19.29\n", - " 21.54\n", - " 17.21\n", - " 16.71\n", - " 17.83\n", - " 17.75\n", - " 25.70\n", - " 1978-12-01\n", - " 12\n", - " 1978\n", - " 1\n", + " 1976-07\n", + " 9.687742\n", + " 7.980968\n", + " 8.267742\n", + " 4.631613\n", + " 7.576774\n", + " 4.927419\n", + " 6.994839\n", + " 5.135806\n", + " 7.941290\n", + " 6.491290\n", + " 10.264194\n", + " 11.912258\n", + " \n", + " \n", + " 1976-08\n", + " 7.640645\n", + " 5.366129\n", + " 9.000645\n", + " 3.142258\n", + " 4.695484\n", + " 3.847742\n", + " 5.437097\n", + " 3.362581\n", + " 5.946452\n", + " 4.496452\n", + " 7.079677\n", + " 9.438387\n", + " \n", + " \n", + " 1976-09\n", + " 11.703667\n", + " 10.515333\n", + " 10.466333\n", + " 5.313333\n", + " 8.761333\n", + " 7.062333\n", + " 8.617667\n", + " 6.415333\n", + " 8.953333\n", + " 7.263333\n", + " 11.587000\n", + " 17.634000\n", + " \n", + " \n", + " 1976-10\n", + " 12.427097\n", + " 9.572258\n", + " 10.640000\n", + " 4.885484\n", + " 9.393548\n", + " 6.906452\n", + " 6.380323\n", + " 6.933226\n", + " 7.552258\n", + " 7.449032\n", + " 11.837742\n", + " 15.078065\n", + " \n", + " \n", + " 1976-11\n", + " 10.962667\n", + " 9.443667\n", + " 9.202000\n", + " 3.696000\n", + " 7.459333\n", + " 7.026333\n", + " 9.058333\n", + " 5.791000\n", + " 6.577000\n", + " 7.512333\n", + " 12.568333\n", + " 15.685333\n", + " \n", + " \n", + " 1976-12\n", + " 11.962258\n", + " 10.086774\n", + " 10.474516\n", + " 3.383871\n", + " 7.645484\n", + " 6.148387\n", + " 8.034516\n", + " 4.500000\n", + " 5.952258\n", + " 6.147742\n", + " 7.814839\n", + " 14.346774\n", + " \n", + " \n", + " 1977-01\n", + " 13.404516\n", + " 10.377742\n", + " 12.764839\n", + " 5.884516\n", + " 9.159677\n", + " 8.005161\n", + " 10.107419\n", + " 7.211613\n", + " 8.280000\n", + " 9.328387\n", + " 12.131935\n", + " 18.830000\n", + " \n", + " \n", + " 1977-02\n", + " 12.336786\n", + " 11.898929\n", + " 12.016786\n", + " 5.317500\n", + " 10.134643\n", + " 9.423929\n", + " 10.949643\n", + " 7.965357\n", + " 9.320000\n", + " 8.711429\n", + " 11.435357\n", + " 17.561429\n", + " \n", + " \n", + " 1977-03\n", + " 16.750000\n", + " 14.499677\n", + " 16.118387\n", + " 8.414516\n", + " 13.293871\n", + " 11.562258\n", + " 14.283226\n", + " 11.361613\n", + " 12.102581\n", + " 11.906452\n", + " 15.863226\n", + " 19.133548\n", + " \n", + " \n", + " 1977-04\n", + " 14.955333\n", + " 12.293000\n", + " 12.689667\n", + " 7.422333\n", + " 11.740000\n", + " 10.137000\n", + " 13.887667\n", + " 9.574000\n", + " 10.342333\n", + " 11.419667\n", + " 15.593667\n", + " 18.274667\n", + " \n", + " \n", + " 1977-05\n", + " 9.441290\n", + " 7.173871\n", + " 12.455806\n", + " 4.507742\n", + " 6.198387\n", + " 6.689677\n", + " 9.226452\n", + " 5.638387\n", + " 6.699355\n", + " 6.045484\n", + " 10.213548\n", + " 11.936129\n", + " \n", + " \n", + " 1977-06\n", + " 11.040000\n", + " 8.353000\n", + " 12.228000\n", + " 4.864000\n", + " 8.790333\n", + " 7.209667\n", + " 8.799667\n", + " 5.931000\n", + " 7.065333\n", + " 6.583333\n", + " 11.321333\n", + " 11.175333\n", + " \n", + " \n", + " 1977-07\n", + " 10.881935\n", + " 8.663548\n", + " 10.816452\n", + " 5.419677\n", + " 9.014839\n", + " 7.600000\n", + " 9.961935\n", + " 6.526129\n", + " 7.980968\n", + " 7.620000\n", + " 12.924194\n", + " 12.186774\n", + " \n", + " \n", + " 1977-08\n", + " 9.233548\n", + " 7.727742\n", + " 10.679032\n", + " 4.453871\n", + " 6.620645\n", + " 5.961290\n", + " 8.943548\n", + " 4.543226\n", + " 6.384839\n", + " 5.694839\n", + " 9.825161\n", + " 11.659355\n", + " \n", + " \n", + " 1977-09\n", + " 12.472333\n", + " 10.742667\n", + " 11.849333\n", + " 5.638667\n", + " 10.077333\n", + " 8.242667\n", + " 11.939333\n", + " 7.923000\n", + " 8.828000\n", + " 8.506333\n", + " 14.051000\n", + " 17.030333\n", + " \n", + " \n", + " 1977-10\n", + " 15.004516\n", + " 13.960000\n", + " 12.819677\n", + " 6.754194\n", + " 11.779032\n", + " 9.671613\n", + " 12.924839\n", + " 11.875161\n", + " 11.481290\n", + " 10.340323\n", + " 17.640968\n", + " 19.842903\n", + " \n", + " \n", + " 1977-11\n", + " 16.946667\n", + " 15.444667\n", + " 13.561333\n", + " 7.584000\n", + " 12.088667\n", + " 9.161333\n", + " 14.051000\n", + " 11.286000\n", + " 10.318667\n", + " 10.327000\n", + " 17.215333\n", + " 22.333000\n", + " \n", + " \n", + " 1977-12\n", + " 14.751935\n", + " 12.744839\n", + " 13.469677\n", + " 6.592258\n", + " 11.247742\n", + " 9.466774\n", + " 13.231613\n", + " 10.703871\n", + " 10.401613\n", + " 9.415484\n", + " 13.237419\n", + " 19.299677\n", + " \n", + " \n", + " 1978-01\n", + " 14.291935\n", + " 11.872258\n", + " 12.014194\n", + " 6.463226\n", + " 11.402903\n", + " 7.517097\n", + " 12.207097\n", + " 10.206452\n", + " 9.549032\n", + " 9.247419\n", + " 15.101613\n", + " 20.715806\n", + " \n", + " \n", + " 1978-02\n", + " 14.143571\n", + " 12.153214\n", + " 13.803214\n", + " 6.828929\n", + " 11.196786\n", + " 7.858929\n", + " 11.903214\n", + " 11.068929\n", + " 10.052143\n", + " 8.093929\n", + " 10.353929\n", + " 17.298571\n", + " \n", + " \n", + " 1978-03\n", + " 14.717097\n", + " 14.601935\n", + " 13.334194\n", + " 8.231290\n", + " 12.783226\n", + " 9.488710\n", + " 12.129355\n", + " 11.665161\n", + " 11.656452\n", + " 9.657097\n", + " 14.234194\n", + " 18.611290\n", + " \n", + " \n", + " 1978-04\n", + " 11.805000\n", + " 11.255667\n", + " 12.516333\n", + " 5.920333\n", + " 10.218000\n", + " 7.301667\n", + " 8.586333\n", + " 8.306667\n", + " 8.537000\n", + " 6.999000\n", + " 11.190667\n", + " 14.152000\n", + " \n", + " \n", + " 1978-05\n", + " 8.270645\n", + " 7.226774\n", + " 6.901613\n", + " 3.740645\n", + " 6.973871\n", + " 4.449677\n", + " 5.420968\n", + " 6.130645\n", + " 5.742581\n", + " 5.926452\n", + " 9.263548\n", + " 10.756452\n", + " \n", + " \n", + " 1978-06\n", + " 11.386667\n", + " 9.474333\n", + " 10.253333\n", + " 6.053000\n", + " 10.395333\n", + " 7.490333\n", + " 7.928000\n", + " 7.802000\n", + " 8.220333\n", + " 7.550000\n", + " 11.501000\n", + " 15.078667\n", + " \n", + " \n", + " 1978-07\n", + " 12.820000\n", + " 9.750968\n", + " 9.910323\n", + " 6.483871\n", + " 10.055161\n", + " 7.820645\n", + " 7.831935\n", + " 8.459355\n", + " 8.523871\n", + " 7.732903\n", + " 12.648710\n", + " 14.077419\n", + " \n", + " \n", + " 1978-08\n", + " 9.645161\n", + " 8.259355\n", + " 9.032258\n", + " 4.502903\n", + " 7.368065\n", + " 5.935161\n", + " 5.650323\n", + " 5.417742\n", + " 7.241290\n", + " 5.536774\n", + " 10.466774\n", + " 12.054194\n", + " \n", + " \n", + " 1978-09\n", + " 10.913667\n", + " 10.895000\n", + " 10.635000\n", + " 5.725000\n", + " 10.372000\n", + " 9.278333\n", + " 10.790333\n", + " 9.583000\n", + " 10.069333\n", + " 8.939000\n", + " 15.680333\n", + " 19.391333\n", + " \n", + " \n", + " 1978-10\n", + " 9.897742\n", + " 8.670968\n", + " 9.295806\n", + " 4.721290\n", + " 8.525161\n", + " 6.774194\n", + " 8.115484\n", + " 7.337742\n", + " 8.297742\n", + " 8.243871\n", + " 13.776774\n", + " 17.150000\n", + " \n", + " \n", + " 1978-11\n", + " 16.151667\n", + " 14.802667\n", + " 13.508000\n", + " 7.317333\n", + " 11.475000\n", + " 8.743000\n", + " 11.492333\n", + " 9.657333\n", + " 10.701333\n", + " 10.676000\n", + " 17.404667\n", + " 20.723000\n", + " \n", + " \n", + " 1978-12\n", + " 16.175484\n", + " 13.748065\n", + " 15.635161\n", + " 7.094839\n", + " 11.398710\n", + " 9.241613\n", + " 12.077419\n", + " 10.194839\n", + " 10.616774\n", + " 11.028710\n", + " 13.859677\n", + " 21.371613\n", " \n", " \n", "\n", - "

216 rows × 16 columns

\n", + "

216 rows × 12 columns

\n", "" ], "text/plain": [ - " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", + " RPT VAL ROS KIL SHA BIR \\\n", "Yr_Mo_Dy \n", - "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", - "1961-02-01 14.25 15.12 9.04 5.88 12.08 7.17 10.17 3.63 6.50 \n", - "1961-03-01 12.67 13.13 11.79 6.42 9.79 8.54 10.25 13.29 NaN \n", - "1961-04-01 8.38 6.34 8.33 6.75 9.33 9.54 11.67 8.21 11.21 \n", - "1961-05-01 15.87 13.88 15.37 9.79 13.46 10.17 9.96 14.04 9.75 \n", - "1961-06-01 15.92 9.59 12.04 8.79 11.54 6.04 9.75 8.29 9.33 \n", - "1961-07-01 7.21 6.83 7.71 4.42 8.46 4.79 6.71 6.00 5.79 \n", - "1961-08-01 9.59 5.09 5.54 4.63 8.29 5.25 4.21 5.25 5.37 \n", - "1961-09-01 5.58 1.13 4.96 3.04 4.25 2.25 4.63 2.71 3.67 \n", - "1961-10-01 14.25 12.87 7.87 8.00 13.00 7.75 5.83 9.00 7.08 \n", - "1961-11-01 13.21 13.13 14.33 8.54 12.17 10.21 13.08 12.17 10.92 \n", - "1961-12-01 9.67 7.75 8.00 3.96 6.00 2.75 7.25 2.50 5.58 \n", - "1962-01-01 9.29 3.42 11.54 3.50 2.21 1.96 10.41 2.79 3.54 \n", - "1962-02-01 19.12 13.96 12.21 10.58 15.71 10.63 15.71 11.08 13.17 \n", - "1962-03-01 8.21 4.83 9.00 4.83 6.00 2.21 7.96 1.87 4.08 \n", - "1962-04-01 14.33 12.25 11.87 10.37 14.92 11.00 19.79 11.67 14.09 \n", - "1962-05-01 9.62 9.54 3.58 3.33 8.75 3.75 2.25 2.58 1.67 \n", - "1962-06-01 5.88 6.29 8.67 5.21 5.00 4.25 5.91 5.41 4.79 \n", - "1962-07-01 8.67 4.17 6.92 6.71 8.17 5.66 11.17 9.38 8.75 \n", - "1962-08-01 4.58 5.37 6.04 2.29 7.87 3.71 4.46 2.58 4.00 \n", - "1962-09-01 10.00 12.08 10.96 9.25 9.29 7.62 7.41 8.75 7.67 \n", - "1962-10-01 14.58 7.83 19.21 10.08 11.54 8.38 13.29 10.63 8.21 \n", - "1962-11-01 16.88 13.25 16.00 8.96 13.46 11.46 10.46 10.17 10.37 \n", - "1962-12-01 18.38 15.41 11.75 6.79 12.21 8.04 8.42 10.83 5.66 \n", - "1963-01-01 15.59 13.62 19.79 8.38 12.25 10.00 23.45 15.71 13.59 \n", - "1963-02-01 15.41 7.62 24.67 11.42 9.21 8.17 14.04 7.54 7.54 \n", - "1963-03-01 16.75 19.67 17.67 8.87 19.08 15.37 16.21 14.29 11.29 \n", - "1963-04-01 10.54 9.59 12.46 7.33 9.46 9.59 11.79 11.87 9.79 \n", - "1963-05-01 18.79 14.17 13.59 11.63 14.17 11.96 14.46 12.46 12.87 \n", - "1963-06-01 13.37 6.87 12.00 8.50 10.04 9.42 10.92 12.96 11.79 \n", - "... ... ... ... ... ... ... ... ... ... \n", - "1976-07-01 8.50 1.75 6.58 2.13 2.75 2.21 5.37 2.04 5.88 \n", - "1976-08-01 13.00 8.38 8.63 5.83 12.92 8.25 13.00 9.42 10.58 \n", - "1976-09-01 11.87 11.00 7.38 6.87 7.75 8.33 10.34 6.46 10.17 \n", - "1976-10-01 10.96 6.71 10.41 4.63 7.58 5.04 5.04 5.54 6.50 \n", - "1976-11-01 13.96 15.67 10.29 6.46 12.79 9.08 10.00 9.67 10.21 \n", - "1976-12-01 13.46 16.42 9.21 4.54 10.75 8.67 10.88 4.83 8.79 \n", - "1977-01-01 20.04 11.92 20.25 9.13 9.29 8.04 10.75 5.88 9.00 \n", - "1977-02-01 11.83 9.71 11.00 4.25 8.58 8.71 6.17 5.66 8.29 \n", - "1977-03-01 8.63 14.83 10.29 3.75 6.63 8.79 5.00 8.12 7.87 \n", - "1977-04-01 21.67 16.00 17.33 13.59 20.83 15.96 25.62 17.62 19.41 \n", - "1977-05-01 6.42 7.12 8.67 3.58 4.58 4.00 6.75 6.13 3.33 \n", - "1977-06-01 7.08 5.25 9.71 2.83 2.21 3.50 5.29 1.42 2.00 \n", - "1977-07-01 15.41 16.29 17.08 6.25 11.83 11.83 12.29 10.58 10.41 \n", - "1977-08-01 4.33 2.96 4.42 2.33 0.96 1.08 4.96 1.87 2.33 \n", - "1977-09-01 17.37 16.33 16.83 8.58 14.46 11.83 15.09 13.92 13.29 \n", - "1977-10-01 16.75 15.34 12.25 9.42 16.38 11.38 18.50 13.92 14.09 \n", - "1977-11-01 16.71 11.54 12.17 4.17 8.54 7.17 11.12 6.46 8.25 \n", - "1977-12-01 13.37 10.92 12.42 2.37 5.79 6.13 8.96 7.38 6.29 \n", - "1978-01-01 8.33 7.12 7.71 3.54 8.50 7.50 14.71 10.00 11.83 \n", - "1978-02-01 27.25 24.21 18.16 17.46 27.54 18.05 20.96 25.04 20.04 \n", - "1978-03-01 15.04 6.21 16.04 7.87 6.42 6.67 12.29 8.00 10.58 \n", - "1978-04-01 3.42 7.58 2.71 1.38 3.46 2.08 2.67 4.75 4.83 \n", - "1978-05-01 10.54 12.21 9.08 5.29 11.00 10.08 11.17 13.75 11.87 \n", - "1978-06-01 10.37 11.42 6.46 6.04 11.25 7.50 6.46 5.96 7.79 \n", - "1978-07-01 12.46 10.63 11.17 6.75 12.92 9.04 12.42 9.62 12.08 \n", - "1978-08-01 19.33 15.09 20.17 8.83 12.62 10.41 9.33 12.33 9.50 \n", - "1978-09-01 8.42 6.13 9.87 5.25 3.21 5.71 7.25 3.50 7.33 \n", - "1978-10-01 9.50 6.83 10.50 3.88 6.13 4.58 4.21 6.50 6.38 \n", - "1978-11-01 13.59 16.75 11.25 7.08 11.04 8.33 8.17 11.29 10.75 \n", - "1978-12-01 21.29 16.29 24.04 12.79 18.21 19.29 21.54 17.21 16.71 \n", + "1961-01 14.841333 11.988333 13.431613 7.736774 11.072759 8.588065 \n", + "1961-02 16.269286 14.975357 14.441481 9.230741 13.852143 10.937500 \n", + "1961-03 10.890000 11.296452 10.752903 7.284000 10.509355 8.866774 \n", + "1961-04 10.722667 9.427667 9.998000 5.830667 8.435000 6.495000 \n", + "1961-05 9.860968 8.850000 10.818065 5.905333 9.490323 6.574839 \n", + "1961-06 9.904138 8.520333 8.867000 6.083000 10.824000 6.707333 \n", + "1961-07 10.614194 8.221613 9.110323 6.340968 10.532581 6.198387 \n", + "1961-08 12.035000 10.133871 10.335806 6.845806 12.715161 8.441935 \n", + "1961-09 12.531000 9.656897 10.776897 7.155517 11.003333 7.234000 \n", + "1961-10 14.289667 10.915806 12.236452 8.154839 11.865484 8.333871 \n", + "1961-11 10.896333 8.592667 11.850333 6.045667 9.123667 6.250667 \n", + "1961-12 14.973548 11.903871 13.980323 7.073871 11.323548 8.302258 \n", + "1962-01 14.783871 13.160323 12.591935 7.538065 11.779677 8.720000 \n", + "1962-02 15.844643 12.041429 15.178929 9.262963 13.821429 9.726786 \n", + "1962-03 11.634333 8.602258 12.110645 6.403226 10.352258 6.732258 \n", + "1962-04 12.160667 9.676667 12.088333 7.163000 10.544000 7.558000 \n", + "1962-05 12.745806 10.865484 11.874839 7.471935 11.285806 7.209032 \n", + "1962-06 10.305667 9.677000 9.996333 6.846667 10.711333 7.441333 \n", + "1962-07 9.981935 8.370645 9.753548 6.093226 9.112903 5.877097 \n", + "1962-08 10.964194 9.694194 10.184516 6.701290 10.465161 7.009032 \n", + "1962-09 11.176333 9.507000 11.640000 6.164333 9.722333 6.214000 \n", + "1962-10 9.699355 8.063548 9.357097 4.818065 8.432258 5.730000 \n", + "1962-11 11.071333 7.984000 12.035667 5.740000 8.135667 6.338333 \n", + "1962-12 16.785484 13.753548 14.276452 9.557419 13.724839 10.321613 \n", + "1963-01 14.868387 11.112903 15.121613 6.635806 11.080645 7.835484 \n", + "1963-02 14.418929 11.876429 15.697500 8.611786 12.887857 9.600357 \n", + "1963-03 14.853871 12.271290 14.295806 9.268387 13.112903 10.088065 \n", + "1963-04 11.616000 10.138000 13.233667 7.990333 11.515333 9.727000 \n", + "1963-05 12.879677 11.010645 12.881290 8.411613 12.981613 9.739677 \n", + "1963-06 10.623333 8.434667 11.685000 6.420333 10.142667 7.219333 \n", + "... ... ... ... ... ... ... \n", + "1976-07 9.687742 7.980968 8.267742 4.631613 7.576774 4.927419 \n", + "1976-08 7.640645 5.366129 9.000645 3.142258 4.695484 3.847742 \n", + "1976-09 11.703667 10.515333 10.466333 5.313333 8.761333 7.062333 \n", + "1976-10 12.427097 9.572258 10.640000 4.885484 9.393548 6.906452 \n", + "1976-11 10.962667 9.443667 9.202000 3.696000 7.459333 7.026333 \n", + "1976-12 11.962258 10.086774 10.474516 3.383871 7.645484 6.148387 \n", + "1977-01 13.404516 10.377742 12.764839 5.884516 9.159677 8.005161 \n", + "1977-02 12.336786 11.898929 12.016786 5.317500 10.134643 9.423929 \n", + "1977-03 16.750000 14.499677 16.118387 8.414516 13.293871 11.562258 \n", + "1977-04 14.955333 12.293000 12.689667 7.422333 11.740000 10.137000 \n", + "1977-05 9.441290 7.173871 12.455806 4.507742 6.198387 6.689677 \n", + "1977-06 11.040000 8.353000 12.228000 4.864000 8.790333 7.209667 \n", + "1977-07 10.881935 8.663548 10.816452 5.419677 9.014839 7.600000 \n", + "1977-08 9.233548 7.727742 10.679032 4.453871 6.620645 5.961290 \n", + "1977-09 12.472333 10.742667 11.849333 5.638667 10.077333 8.242667 \n", + "1977-10 15.004516 13.960000 12.819677 6.754194 11.779032 9.671613 \n", + "1977-11 16.946667 15.444667 13.561333 7.584000 12.088667 9.161333 \n", + "1977-12 14.751935 12.744839 13.469677 6.592258 11.247742 9.466774 \n", + "1978-01 14.291935 11.872258 12.014194 6.463226 11.402903 7.517097 \n", + "1978-02 14.143571 12.153214 13.803214 6.828929 11.196786 7.858929 \n", + "1978-03 14.717097 14.601935 13.334194 8.231290 12.783226 9.488710 \n", + "1978-04 11.805000 11.255667 12.516333 5.920333 10.218000 7.301667 \n", + "1978-05 8.270645 7.226774 6.901613 3.740645 6.973871 4.449677 \n", + "1978-06 11.386667 9.474333 10.253333 6.053000 10.395333 7.490333 \n", + "1978-07 12.820000 9.750968 9.910323 6.483871 10.055161 7.820645 \n", + "1978-08 9.645161 8.259355 9.032258 4.502903 7.368065 5.935161 \n", + "1978-09 10.913667 10.895000 10.635000 5.725000 10.372000 9.278333 \n", + "1978-10 9.897742 8.670968 9.295806 4.721290 8.525161 6.774194 \n", + "1978-11 16.151667 14.802667 13.508000 7.317333 11.475000 8.743000 \n", + "1978-12 16.175484 13.748065 15.635161 7.094839 11.398710 9.241613 \n", "\n", - " CLO BEL MAL date month year day \n", - "Yr_Mo_Dy \n", - "1961-01-01 12.58 18.50 15.04 1961-01-01 1 1961 1 \n", - "1961-02-01 5.50 9.17 8.00 1961-02-01 2 1961 1 \n", - "1961-03-01 12.21 20.62 NaN 1961-03-01 3 1961 1 \n", - "1961-04-01 6.46 11.96 7.17 1961-04-01 4 1961 1 \n", - "1961-05-01 9.92 18.63 11.12 1961-05-01 5 1961 1 \n", - "1961-06-01 10.34 10.67 12.12 1961-06-01 6 1961 1 \n", - "1961-07-01 7.96 6.96 8.71 1961-07-01 7 1961 1 \n", - "1961-08-01 5.41 8.38 9.08 1961-08-01 8 1961 1 \n", - "1961-09-01 6.00 4.79 5.41 1961-09-01 9 1961 1 \n", - "1961-10-01 5.29 11.79 4.04 1961-10-01 10 1961 1 \n", - "1961-11-01 13.54 20.17 20.04 1961-11-01 11 1961 1 \n", - "1961-12-01 5.58 7.79 11.17 1961-12-01 12 1961 1 \n", - "1962-01-01 5.17 4.38 7.92 1962-01-01 1 1962 1 \n", - "1962-02-01 12.62 17.67 22.71 1962-02-01 2 1962 1 \n", - "1962-03-01 3.92 4.08 5.41 1962-03-01 3 1962 1 \n", - "1962-04-01 15.46 16.62 23.58 1962-04-01 4 1962 1 \n", - "1962-05-01 2.37 7.29 3.25 1962-05-01 5 1962 1 \n", - "1962-06-01 9.25 5.25 10.71 1962-06-01 6 1962 1 \n", - "1962-07-01 11.12 10.25 17.08 1962-07-01 7 1962 1 \n", - "1962-08-01 4.79 7.21 7.46 1962-08-01 8 1962 1 \n", - "1962-09-01 9.62 14.58 11.92 1962-09-01 9 1962 1 \n", - "1962-10-01 12.92 18.05 18.12 1962-10-01 10 1962 1 \n", - "1962-11-01 13.21 14.83 15.16 1962-11-01 11 1962 1 \n", - "1962-12-01 9.08 11.50 11.50 1962-12-01 12 1962 1 \n", - "1963-01-01 14.37 17.58 34.13 1963-01-01 1 1963 1 \n", - "1963-02-01 10.08 10.17 17.67 1963-02-01 2 1963 1 \n", - "1963-03-01 9.21 19.92 19.79 1963-03-01 3 1963 1 \n", - "1963-04-01 10.71 13.37 18.21 1963-04-01 4 1963 1 \n", - "1963-05-01 13.96 15.29 21.62 1963-05-01 5 1963 1 \n", - "1963-06-01 11.04 10.92 13.67 1963-06-01 6 1963 1 \n", - "... ... ... ... ... ... ... ... \n", - "1976-07-01 4.50 4.96 10.63 1976-07-01 7 1976 1 \n", - "1976-08-01 11.34 14.21 20.25 1976-08-01 8 1976 1 \n", - "1976-09-01 9.29 12.75 19.55 1976-09-01 9 1976 1 \n", - "1976-10-01 3.92 6.79 5.00 1976-10-01 10 1976 1 \n", - "1976-11-01 11.63 23.09 21.96 1976-11-01 11 1976 1 \n", - "1976-12-01 5.91 8.83 13.67 1976-12-01 12 1976 1 \n", - "1977-01-01 9.00 14.88 25.70 1977-01-01 1 1977 1 \n", - "1977-02-01 7.58 11.71 16.50 1977-02-01 2 1977 1 \n", - "1977-03-01 6.42 13.54 13.67 1977-03-01 3 1977 1 \n", - "1977-04-01 20.67 24.37 30.09 1977-04-01 4 1977 1 \n", - "1977-05-01 4.50 19.21 12.38 1977-05-01 5 1977 1 \n", - "1977-06-01 0.92 5.21 5.63 1977-06-01 6 1977 1 \n", - "1977-07-01 7.21 17.37 7.83 1977-07-01 7 1977 1 \n", - "1977-08-01 2.04 10.50 9.83 1977-08-01 8 1977 1 \n", - "1977-09-01 13.88 23.29 25.17 1977-09-01 9 1977 1 \n", - "1977-10-01 14.46 22.34 29.67 1977-10-01 10 1977 1 \n", - "1977-11-01 6.21 11.04 15.63 1977-11-01 11 1977 1 \n", - "1977-12-01 5.71 8.54 12.42 1977-12-01 12 1977 1 \n", - "1978-01-01 10.00 15.09 20.46 1978-01-01 1 1978 1 \n", - "1978-02-01 17.50 27.71 21.12 1978-02-01 2 1978 1 \n", - "1978-03-01 9.33 5.41 17.00 1978-03-01 3 1978 1 \n", - "1978-04-01 1.67 7.33 13.67 1978-04-01 4 1978 1 \n", - "1978-05-01 11.79 12.87 27.16 1978-05-01 5 1978 1 \n", - "1978-06-01 5.46 5.50 10.41 1978-06-01 6 1978 1 \n", - "1978-07-01 8.04 14.04 16.17 1978-07-01 7 1978 1 \n", - "1978-08-01 9.92 15.75 18.00 1978-08-01 8 1978 1 \n", - "1978-09-01 6.50 7.62 15.96 1978-09-01 9 1978 1 \n", - "1978-10-01 6.54 10.63 14.09 1978-10-01 10 1978 1 \n", - "1978-11-01 11.25 23.13 25.00 1978-11-01 11 1978 1 \n", - "1978-12-01 17.83 17.75 25.70 1978-12-01 12 1978 1 \n", + " DUB CLA MUL CLO BEL MAL \n", + "Yr_Mo_Dy \n", + "1961-01 11.184839 9.245333 9.085806 10.107419 13.880968 14.703226 \n", + "1961-02 11.890714 11.846071 11.821429 12.714286 18.583214 15.411786 \n", + "1961-03 9.644194 9.829677 10.294138 11.251935 16.410968 15.720000 \n", + "1961-04 6.925333 7.094667 7.342333 7.237000 11.147333 10.278333 \n", + "1961-05 7.604000 8.177097 8.039355 8.499355 11.900323 12.011613 \n", + "1961-06 9.095667 8.849333 9.086667 9.940333 13.995000 14.553793 \n", + "1961-07 8.353333 8.284194 8.077097 8.891613 11.092581 12.312903 \n", + "1961-08 10.093871 10.460968 9.111613 10.544667 14.410000 14.345333 \n", + "1961-09 8.206000 8.936552 7.728333 9.931333 13.718333 12.921667 \n", + "1961-10 11.194194 9.271935 8.942667 11.455806 14.229355 16.793226 \n", + "1961-11 10.869655 6.313667 6.575000 8.383667 10.776667 12.146000 \n", + "1961-12 11.753548 8.163226 7.965806 9.246774 12.239355 13.098710 \n", + "1962-01 14.211935 9.600000 9.670000 11.498710 16.369355 15.661613 \n", + "1962-02 16.916429 11.285357 12.021071 12.126429 16.705357 18.426786 \n", + "1962-03 10.223226 7.641935 7.092258 8.052581 9.690000 11.509000 \n", + "1962-04 11.480000 8.722000 8.703667 9.311667 12.234333 11.780667 \n", + "1962-05 10.105806 9.084516 7.868065 9.293226 12.130000 12.922581 \n", + "1962-06 10.548667 10.306667 9.196000 10.520333 13.757000 15.218333 \n", + "1962-07 7.781613 8.123226 6.829677 8.613226 10.783871 11.326129 \n", + "1962-08 11.136774 9.097419 8.645484 9.511613 13.119032 15.420968 \n", + "1962-09 8.488000 7.020333 6.372667 8.286000 11.483667 12.313333 \n", + "1962-10 8.448065 7.626774 6.630645 9.091290 13.286774 14.090323 \n", + "1962-11 9.615333 5.943000 6.362333 8.084333 9.786667 13.298333 \n", + "1962-12 13.735806 11.212258 10.683548 11.881935 16.043548 20.074516 \n", + "1963-01 12.797419 9.844839 7.841613 9.390000 11.428710 18.822258 \n", + "1963-02 12.729286 10.823214 8.981786 10.355714 13.266429 17.120714 \n", + "1963-03 12.168387 11.340968 9.690968 11.515484 13.982903 14.132581 \n", + "1963-04 11.979000 11.353000 10.341667 11.900333 13.875667 16.333667 \n", + "1963-05 12.280968 10.964194 10.745161 11.394839 14.777097 14.975161 \n", + "1963-06 9.267333 9.589333 8.583667 9.585333 12.098000 11.358667 \n", + "... ... ... ... ... ... ... \n", + "1976-07 6.994839 5.135806 7.941290 6.491290 10.264194 11.912258 \n", + "1976-08 5.437097 3.362581 5.946452 4.496452 7.079677 9.438387 \n", + "1976-09 8.617667 6.415333 8.953333 7.263333 11.587000 17.634000 \n", + "1976-10 6.380323 6.933226 7.552258 7.449032 11.837742 15.078065 \n", + "1976-11 9.058333 5.791000 6.577000 7.512333 12.568333 15.685333 \n", + "1976-12 8.034516 4.500000 5.952258 6.147742 7.814839 14.346774 \n", + "1977-01 10.107419 7.211613 8.280000 9.328387 12.131935 18.830000 \n", + "1977-02 10.949643 7.965357 9.320000 8.711429 11.435357 17.561429 \n", + "1977-03 14.283226 11.361613 12.102581 11.906452 15.863226 19.133548 \n", + "1977-04 13.887667 9.574000 10.342333 11.419667 15.593667 18.274667 \n", + "1977-05 9.226452 5.638387 6.699355 6.045484 10.213548 11.936129 \n", + "1977-06 8.799667 5.931000 7.065333 6.583333 11.321333 11.175333 \n", + "1977-07 9.961935 6.526129 7.980968 7.620000 12.924194 12.186774 \n", + "1977-08 8.943548 4.543226 6.384839 5.694839 9.825161 11.659355 \n", + "1977-09 11.939333 7.923000 8.828000 8.506333 14.051000 17.030333 \n", + "1977-10 12.924839 11.875161 11.481290 10.340323 17.640968 19.842903 \n", + "1977-11 14.051000 11.286000 10.318667 10.327000 17.215333 22.333000 \n", + "1977-12 13.231613 10.703871 10.401613 9.415484 13.237419 19.299677 \n", + "1978-01 12.207097 10.206452 9.549032 9.247419 15.101613 20.715806 \n", + "1978-02 11.903214 11.068929 10.052143 8.093929 10.353929 17.298571 \n", + "1978-03 12.129355 11.665161 11.656452 9.657097 14.234194 18.611290 \n", + "1978-04 8.586333 8.306667 8.537000 6.999000 11.190667 14.152000 \n", + "1978-05 5.420968 6.130645 5.742581 5.926452 9.263548 10.756452 \n", + "1978-06 7.928000 7.802000 8.220333 7.550000 11.501000 15.078667 \n", + "1978-07 7.831935 8.459355 8.523871 7.732903 12.648710 14.077419 \n", + "1978-08 5.650323 5.417742 7.241290 5.536774 10.466774 12.054194 \n", + "1978-09 10.790333 9.583000 10.069333 8.939000 15.680333 19.391333 \n", + "1978-10 8.115484 7.337742 8.297742 8.243871 13.776774 17.150000 \n", + "1978-11 11.492333 9.657333 10.701333 10.676000 17.404667 20.723000 \n", + "1978-12 12.077419 10.194839 10.616774 11.028710 13.859677 21.371613 \n", "\n", - "[216 rows x 16 columns]" + "[216 rows x 12 columns]" ] }, - "execution_count": 429, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -2741,7 +2446,7 @@ }, { "cell_type": "code", - "execution_count": 430, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -2766,10 +2471,6 @@ " CLO\n", " BEL\n", " MAL\n", - " date\n", - " month\n", - " year\n", - " day\n", " \n", " \n", " Yr_Mo_Dy\n", @@ -2785,318 +2486,1126 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " 1961-01-01\n", - " 15.04\n", - " 14.96\n", - " 13.17\n", - " 9.29\n", + " 1960-12-26/1961-01-01\n", + " 15.040000\n", + " 14.960000\n", + " 13.170000\n", + " 9.290000\n", " NaN\n", - " 9.87\n", - " 13.67\n", - " 10.25\n", - " 10.83\n", - " 12.58\n", - " 18.50\n", - " 15.04\n", - " 1961-01-01\n", - " 1\n", - " 1961\n", - " 1\n", + " 9.870000\n", + " 13.670000\n", + " 10.250000\n", + " 10.830000\n", + " 12.580000\n", + " 18.500000\n", + " 15.040000\n", " \n", " \n", - " 1961-01-08\n", - " 10.96\n", - " 9.75\n", - " 7.62\n", - " 5.91\n", - " 9.62\n", - " 7.29\n", - " 14.29\n", - " 7.62\n", - " 9.25\n", - " 10.46\n", - " 16.62\n", - " 16.46\n", - " 1961-01-08\n", - " 1\n", - " 1961\n", - " 8\n", + " 1961-01-02/1961-01-08\n", + " 13.541429\n", + " 11.486667\n", + " 10.487143\n", + " 6.417143\n", + " 9.474286\n", + " 6.435714\n", + " 11.061429\n", + " 6.616667\n", + " 8.434286\n", + " 8.497143\n", + " 12.481429\n", + " 13.238571\n", " \n", " \n", - " 1961-01-15\n", - " 12.04\n", - " 9.67\n", - " 11.75\n", - " 2.37\n", - " 7.38\n", - " 3.13\n", - " 2.50\n", - " 6.83\n", - " 4.75\n", - " 5.63\n", - " 7.54\n", - " 6.75\n", - " 1961-01-15\n", - " 1\n", - " 1961\n", - " 15\n", + " 1961-01-09/1961-01-15\n", + " 12.468571\n", + " 8.967143\n", + " 11.958571\n", + " 4.630000\n", + " 7.351429\n", + " 5.072857\n", + " 7.535714\n", + " 6.820000\n", + " 5.712857\n", + " 7.571429\n", + " 11.125714\n", + " 11.024286\n", " \n", " \n", - " 1961-01-22\n", - " 9.59\n", - " 5.88\n", - " 9.92\n", - " 2.17\n", - " 6.87\n", - " 5.50\n", - " 9.38\n", - " 7.04\n", - " 6.34\n", - " 7.50\n", - " 10.88\n", - " 9.92\n", - " 1961-01-22\n", - " 1\n", - " 1961\n", - " 22\n", + " 1961-01-16/1961-01-22\n", + " 13.204286\n", + " 9.862857\n", + " 12.982857\n", + " 6.328571\n", + " 8.966667\n", + " 7.417143\n", + " 9.257143\n", + " 7.875714\n", + " 7.145714\n", + " 8.124286\n", + " 9.821429\n", + " 11.434286\n", " \n", " \n", - " 1961-01-29\n", - " NaN\n", - " 23.91\n", - " 22.29\n", - " 17.54\n", - " 24.08\n", - " 19.70\n", - " 22.00\n", - " 20.25\n", - " 21.46\n", - " 19.95\n", - " 27.71\n", - " 23.38\n", - " 1961-01-29\n", - " 1\n", - " 1961\n", - " 29\n", + " 1961-01-23/1961-01-29\n", + " 19.880000\n", + " 16.141429\n", + " 18.225714\n", + " 12.720000\n", + " 17.432857\n", + " 14.828571\n", + " 15.528571\n", + " 15.160000\n", + " 14.480000\n", + " 15.640000\n", + " 20.930000\n", + " 22.530000\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " RPT VAL ROS KIL SHA BIR DUB CLA MUL \\\n", - "Yr_Mo_Dy \n", - "1961-01-01 15.04 14.96 13.17 9.29 NaN 9.87 13.67 10.25 10.83 \n", - "1961-01-08 10.96 9.75 7.62 5.91 9.62 7.29 14.29 7.62 9.25 \n", - "1961-01-15 12.04 9.67 11.75 2.37 7.38 3.13 2.50 6.83 4.75 \n", - "1961-01-22 9.59 5.88 9.92 2.17 6.87 5.50 9.38 7.04 6.34 \n", - "1961-01-29 NaN 23.91 22.29 17.54 24.08 19.70 22.00 20.25 21.46 \n", - "\n", - " CLO BEL MAL date month year day \n", - "Yr_Mo_Dy \n", - "1961-01-01 12.58 18.50 15.04 1961-01-01 1 1961 1 \n", - "1961-01-08 10.46 16.62 16.46 1961-01-08 1 1961 8 \n", - "1961-01-15 5.63 7.54 6.75 1961-01-15 1 1961 15 \n", - "1961-01-22 7.50 10.88 9.92 1961-01-22 1 1961 22 \n", - "1961-01-29 19.95 27.71 23.38 1961-01-29 1 1961 29 " - ] - }, - "execution_count": 430, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 15. Calculate the mean windspeed for each month in the dataset. \n", - "#### Treat January 1961 and January 1962 as *different* months.\n", - "#### (hint: first find a way to create an identifier unique for each month.)" - ] - }, - { - "cell_type": "code", - "execution_count": 432, - "metadata": { - "collapsed": false - }, - "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
YrMoDyRPTVALROSKILSHABIRDUBCLAMULCLOBELMAL
1961-01-30/1961-02-0516.82714315.46000012.6185718.24714313.3614299.10714312.2042868.5485719.8214299.46000014.01285711.935714
months_num1961-02-06/1961-02-1219.68428616.41714317.30428610.77428614.71857112.52285714.93428614.85000014.06428614.44000021.83285719.155714
161.01.016.014.84133311.98833313.4316137.73677411.0727598.58806511.1848399.2453339.08580610.10741913.88096814.7032261961-02-13/1961-02-1915.13000015.09142913.79714310.08333313.41000011.8685719.54285712.12857112.37571413.54285721.16714316.584286
261.02.014.516.26928614.97535714.4414819.23074113.85214310.93750011.89071411.84607111.82142912.71428618.58321415.4117861961-02-20/1961-02-2615.22142913.62571414.3342868.52428613.65571410.11428611.15000010.87571410.39285712.73000016.30428614.322857
361.03.016.010.89000011.29645210.7529037.28400010.5093558.8667749.6441949.82967710.29413811.25193516.41096815.7200001961-02-27/1961-03-0512.10142912.95142911.0633337.83428612.1014299.23857110.23285711.13000010.38333312.37000017.84285713.951667
461.04.015.510.7226679.4276679.9980005.8306678.4350006.4950006.9253337.0946677.3423337.23700011.14733310.2783331961-03-06/1961-03-129.37666711.57857110.8457147.13714310.9400009.4885716.8814299.6371439.88571410.45857116.70142914.420000
561.05.016.09.8609688.85000010.8180655.9053339.4903236.5748397.6040008.1770978.0393558.49935511.90032312.0116131961-03-13/1961-03-1911.91142913.50142911.6071437.08428610.7514298.65285710.04142910.22000010.10142911.62714319.35000016.227143
1961-03-20/1961-03-269.5671438.3871439.6957146.6485718.9642867.98285710.7742868.97714310.90428611.48142914.03714318.134286
1961-03-27/1961-04-0210.7571438.8528579.5014297.3000009.9757149.16571411.1257149.06142910.4783339.63142913.47142913.900000
1961-04-03/1961-04-0911.96428610.65428613.6071435.9585719.4942867.6371437.1071438.0414298.1614297.23857111.71285711.371429
1961-04-10/1961-04-168.9657148.0000008.7871434.9714296.4057144.9471435.0057144.9942865.7185716.1785719.4828578.690000
1961-04-17/1961-04-2312.62142910.43857110.2557147.76857110.3571437.7985719.0000009.1114298.7671439.55142913.62000012.470000
1961-04-24/1961-04-3010.1171439.7985718.2814294.8014297.8928575.1971436.1500006.3771436.2428576.1242869.7200008.637143
1961-05-01/1961-05-0715.36714313.97000013.8342869.95285714.91714310.86428611.43571412.24428611.67714311.58571417.54857114.571429
1961-05-08/1961-05-147.7728578.7128578.1728575.2957149.1500006.3914298.0133337.0528577.5285717.82285710.42142910.382857
1961-05-15/1961-05-218.2257145.63166712.0428574.2585717.5971435.0228575.6957146.9700006.8471437.1142869.62428610.612857
1961-05-22/1961-05-288.1557147.3885718.5128573.7483336.9414294.1128575.1428576.2728576.1085717.53571410.51857111.697143
1961-05-29/1961-06-0410.3214297.40714310.0657146.3100009.7542866.4514298.3442868.6357148.7142869.03571412.29857113.597143
1961-06-05/1961-06-1110.9171438.9928578.0957145.21428610.0300005.4600007.0842866.8842868.0342868.39714310.14857112.250000
1961-06-12/1961-06-1810.5714299.56571410.8757146.52000010.2600006.9471439.2785719.1028578.9928579.59428615.35142915.025714
1961-06-19/1961-06-257.3457146.1085718.0842865.47857111.4771437.49285711.8685719.44714310.45857111.25714314.37000017.410000
1961-06-26/1961-07-0210.2366679.4828578.6485716.77285710.9757146.5071437.6428579.2371437.90428610.26857114.53571412.133333
1961-07-03/1961-07-0911.7157147.2200009.3200007.54428612.4942867.98285711.8883339.30857110.73285710.54714312.22000015.987143
1961-07-10/1961-07-1616.68000013.51857111.1714299.27714314.5242868.41285710.17142910.5071439.53000010.15714313.52000012.524286
1961-07-17/1961-07-234.2028574.2557146.7385713.3000006.1128572.7157143.9642865.6428575.2971436.0414297.5242868.415714
.......................................
1978-06-05/1978-06-1112.0228579.1542869.4885715.97142910.6371438.0300008.6785718.2271439.1728579.64285711.63285717.778571
1978-06-12/1978-06-189.4100008.77000014.1357146.4571438.5642866.8985717.2971437.4642867.0542866.22571411.39857112.957143
1978-06-19/1978-06-2512.70714310.2442868.9128575.87857110.3728576.8528577.6485717.8757147.8657147.08428613.03000016.678571
1978-06-26/1978-07-0212.2085719.64000010.4828577.01142912.7728579.00571411.0557148.9171439.9942867.49857112.26857115.287143
1978-07-03/1978-07-0918.05285712.63000011.9842869.22000013.41428610.76285711.36857111.21857111.27285711.08285714.75428618.215714
1978-07-10/1978-07-165.8828573.2442865.3585712.2500004.6185712.6314292.4942863.5400003.3971433.2142867.1985717.578571
1978-07-17/1978-07-2313.65428610.0071439.9157146.57714310.7571438.2828578.1471439.3014298.9528578.40285713.84714314.785714
1978-07-24/1978-07-3012.17285711.85428611.0942866.6314299.9185718.7071437.4585719.1171439.3042868.14857115.19285714.584286
1978-07-31/1978-08-0612.4757149.48857110.5842865.4571438.7242865.8557147.0657145.4100006.6314294.9628579.08428611.405714
1978-08-07/1978-08-1310.1142869.6000007.6357144.7900008.1014296.7028575.4528575.9642867.5185715.66142910.69142911.927143
1978-08-14/1978-08-2011.10000011.23714310.5057145.6971439.9100008.0342867.2671438.5171439.8157147.94142915.00000014.405714
1978-08-21/1978-08-276.2085715.0600008.5657143.1214294.6385714.0771433.2914293.5000005.8771434.4471438.13142910.661429
1978-08-28/1978-09-038.2328574.8885717.7671433.5885713.8928575.0900006.1842863.0000006.2028574.7457148.10571413.150000
1978-09-04/1978-09-1011.48714312.74285711.1242865.70285710.72142910.9271439.1571439.45857110.5885718.27428614.56000016.752857
1978-09-11/1978-09-1712.06714310.64857111.6100006.86428612.25285711.86857113.01714312.44714311.90857110.95714318.42285723.441429
1978-09-18/1978-09-245.8457148.3171439.3057142.5542865.6257145.1714297.0471436.7500006.8700006.29142913.44714315.324286
1978-09-25/1978-10-0116.25285714.13142912.0985718.83285715.81000010.33857115.12428612.37857112.27571411.97000019.16000024.158571
1978-10-02/1978-10-0812.86571413.30285711.6714296.53142911.7314298.8814299.7071439.70857111.39142910.16142916.49857120.618571
1978-10-09/1978-10-159.6114296.3271439.2500004.1671436.8214296.2371435.5771436.3485717.2328577.28571412.19714314.177143
1978-10-16/1978-10-229.8042867.8171437.6428575.3142869.1242866.8628579.3914297.4285717.7657148.04857112.70857117.868571
1978-10-23/1978-10-297.5042867.7028578.1028573.2042867.4642865.9057148.7271436.6528577.6057148.12000014.48714316.915714
1978-10-30/1978-11-0513.06000013.46571412.1371436.6828579.8914298.3142869.7757149.63857110.18571410.42285718.45142918.721429
1978-11-06/1978-11-1214.85714315.23714312.0071437.68428612.4600009.35285710.22428610.55428611.16857112.23285719.30714322.522857
1978-11-13/1978-11-1920.59000018.99857117.27285710.41714314.22000011.20857116.08142912.91571413.29714313.24285720.35714323.905714
1978-11-20/1978-11-2616.49857113.97142913.5442866.36142910.4385717.40428612.7971437.5714299.9985718.91571415.20714319.491429
1978-11-27/1978-12-0314.93428611.23285713.9414295.56571410.2157148.6185719.6428577.6857149.0114299.54714311.83571418.728571
1978-12-04/1978-12-1020.74000019.19000017.0342869.77714315.28714312.77428614.43714312.48857113.87000014.08285718.51714323.061429
1978-12-11/1978-12-1716.75857114.69285714.9871436.91714311.3971437.27285710.2085717.9671439.1685718.56571411.10285715.562857
1978-12-18/1978-12-2411.1557148.00857113.1728574.0042867.8257146.2900007.7985718.6671437.1514298.07285711.84571418.977143
1978-12-25/1978-12-3114.95142911.80142916.0357146.5071439.6600008.62000013.70857110.47714310.86857111.47142912.94714326.844286
\n", + "

940 rows × 12 columns

\n", "
" ], "text/plain": [ - " Yr Mo Dy RPT VAL ROS KIL \\\n", - "months_num \n", - "1 61.0 1.0 16.0 14.841333 11.988333 13.431613 7.736774 \n", - "2 61.0 2.0 14.5 16.269286 14.975357 14.441481 9.230741 \n", - "3 61.0 3.0 16.0 10.890000 11.296452 10.752903 7.284000 \n", - "4 61.0 4.0 15.5 10.722667 9.427667 9.998000 5.830667 \n", - "5 61.0 5.0 16.0 9.860968 8.850000 10.818065 5.905333 \n", + " RPT VAL ROS KIL SHA \\\n", + "Yr_Mo_Dy \n", + "1960-12-26/1961-01-01 15.040000 14.960000 13.170000 9.290000 NaN \n", + "1961-01-02/1961-01-08 13.541429 11.486667 10.487143 6.417143 9.474286 \n", + "1961-01-09/1961-01-15 12.468571 8.967143 11.958571 4.630000 7.351429 \n", + "1961-01-16/1961-01-22 13.204286 9.862857 12.982857 6.328571 8.966667 \n", + "1961-01-23/1961-01-29 19.880000 16.141429 18.225714 12.720000 17.432857 \n", + "1961-01-30/1961-02-05 16.827143 15.460000 12.618571 8.247143 13.361429 \n", + "1961-02-06/1961-02-12 19.684286 16.417143 17.304286 10.774286 14.718571 \n", + "1961-02-13/1961-02-19 15.130000 15.091429 13.797143 10.083333 13.410000 \n", + "1961-02-20/1961-02-26 15.221429 13.625714 14.334286 8.524286 13.655714 \n", + "1961-02-27/1961-03-05 12.101429 12.951429 11.063333 7.834286 12.101429 \n", + "1961-03-06/1961-03-12 9.376667 11.578571 10.845714 7.137143 10.940000 \n", + "1961-03-13/1961-03-19 11.911429 13.501429 11.607143 7.084286 10.751429 \n", + "1961-03-20/1961-03-26 9.567143 8.387143 9.695714 6.648571 8.964286 \n", + "1961-03-27/1961-04-02 10.757143 8.852857 9.501429 7.300000 9.975714 \n", + "1961-04-03/1961-04-09 11.964286 10.654286 13.607143 5.958571 9.494286 \n", + "1961-04-10/1961-04-16 8.965714 8.000000 8.787143 4.971429 6.405714 \n", + "1961-04-17/1961-04-23 12.621429 10.438571 10.255714 7.768571 10.357143 \n", + "1961-04-24/1961-04-30 10.117143 9.798571 8.281429 4.801429 7.892857 \n", + "1961-05-01/1961-05-07 15.367143 13.970000 13.834286 9.952857 14.917143 \n", + "1961-05-08/1961-05-14 7.772857 8.712857 8.172857 5.295714 9.150000 \n", + "1961-05-15/1961-05-21 8.225714 5.631667 12.042857 4.258571 7.597143 \n", + "1961-05-22/1961-05-28 8.155714 7.388571 8.512857 3.748333 6.941429 \n", + "1961-05-29/1961-06-04 10.321429 7.407143 10.065714 6.310000 9.754286 \n", + "1961-06-05/1961-06-11 10.917143 8.992857 8.095714 5.214286 10.030000 \n", + "1961-06-12/1961-06-18 10.571429 9.565714 10.875714 6.520000 10.260000 \n", + "1961-06-19/1961-06-25 7.345714 6.108571 8.084286 5.478571 11.477143 \n", + "1961-06-26/1961-07-02 10.236667 9.482857 8.648571 6.772857 10.975714 \n", + "1961-07-03/1961-07-09 11.715714 7.220000 9.320000 7.544286 12.494286 \n", + "1961-07-10/1961-07-16 16.680000 13.518571 11.171429 9.277143 14.524286 \n", + "1961-07-17/1961-07-23 4.202857 4.255714 6.738571 3.300000 6.112857 \n", + "... ... ... ... ... ... \n", + "1978-06-05/1978-06-11 12.022857 9.154286 9.488571 5.971429 10.637143 \n", + "1978-06-12/1978-06-18 9.410000 8.770000 14.135714 6.457143 8.564286 \n", + "1978-06-19/1978-06-25 12.707143 10.244286 8.912857 5.878571 10.372857 \n", + "1978-06-26/1978-07-02 12.208571 9.640000 10.482857 7.011429 12.772857 \n", + "1978-07-03/1978-07-09 18.052857 12.630000 11.984286 9.220000 13.414286 \n", + "1978-07-10/1978-07-16 5.882857 3.244286 5.358571 2.250000 4.618571 \n", + "1978-07-17/1978-07-23 13.654286 10.007143 9.915714 6.577143 10.757143 \n", + "1978-07-24/1978-07-30 12.172857 11.854286 11.094286 6.631429 9.918571 \n", + "1978-07-31/1978-08-06 12.475714 9.488571 10.584286 5.457143 8.724286 \n", + "1978-08-07/1978-08-13 10.114286 9.600000 7.635714 4.790000 8.101429 \n", + "1978-08-14/1978-08-20 11.100000 11.237143 10.505714 5.697143 9.910000 \n", + "1978-08-21/1978-08-27 6.208571 5.060000 8.565714 3.121429 4.638571 \n", + "1978-08-28/1978-09-03 8.232857 4.888571 7.767143 3.588571 3.892857 \n", + "1978-09-04/1978-09-10 11.487143 12.742857 11.124286 5.702857 10.721429 \n", + "1978-09-11/1978-09-17 12.067143 10.648571 11.610000 6.864286 12.252857 \n", + "1978-09-18/1978-09-24 5.845714 8.317143 9.305714 2.554286 5.625714 \n", + "1978-09-25/1978-10-01 16.252857 14.131429 12.098571 8.832857 15.810000 \n", + "1978-10-02/1978-10-08 12.865714 13.302857 11.671429 6.531429 11.731429 \n", + "1978-10-09/1978-10-15 9.611429 6.327143 9.250000 4.167143 6.821429 \n", + "1978-10-16/1978-10-22 9.804286 7.817143 7.642857 5.314286 9.124286 \n", + "1978-10-23/1978-10-29 7.504286 7.702857 8.102857 3.204286 7.464286 \n", + "1978-10-30/1978-11-05 13.060000 13.465714 12.137143 6.682857 9.891429 \n", + "1978-11-06/1978-11-12 14.857143 15.237143 12.007143 7.684286 12.460000 \n", + "1978-11-13/1978-11-19 20.590000 18.998571 17.272857 10.417143 14.220000 \n", + "1978-11-20/1978-11-26 16.498571 13.971429 13.544286 6.361429 10.438571 \n", + "1978-11-27/1978-12-03 14.934286 11.232857 13.941429 5.565714 10.215714 \n", + "1978-12-04/1978-12-10 20.740000 19.190000 17.034286 9.777143 15.287143 \n", + "1978-12-11/1978-12-17 16.758571 14.692857 14.987143 6.917143 11.397143 \n", + "1978-12-18/1978-12-24 11.155714 8.008571 13.172857 4.004286 7.825714 \n", + "1978-12-25/1978-12-31 14.951429 11.801429 16.035714 6.507143 9.660000 \n", + "\n", + " BIR DUB CLA MUL CLO \\\n", + "Yr_Mo_Dy \n", + "1960-12-26/1961-01-01 9.870000 13.670000 10.250000 10.830000 12.580000 \n", + "1961-01-02/1961-01-08 6.435714 11.061429 6.616667 8.434286 8.497143 \n", + "1961-01-09/1961-01-15 5.072857 7.535714 6.820000 5.712857 7.571429 \n", + "1961-01-16/1961-01-22 7.417143 9.257143 7.875714 7.145714 8.124286 \n", + "1961-01-23/1961-01-29 14.828571 15.528571 15.160000 14.480000 15.640000 \n", + "1961-01-30/1961-02-05 9.107143 12.204286 8.548571 9.821429 9.460000 \n", + "1961-02-06/1961-02-12 12.522857 14.934286 14.850000 14.064286 14.440000 \n", + "1961-02-13/1961-02-19 11.868571 9.542857 12.128571 12.375714 13.542857 \n", + "1961-02-20/1961-02-26 10.114286 11.150000 10.875714 10.392857 12.730000 \n", + "1961-02-27/1961-03-05 9.238571 10.232857 11.130000 10.383333 12.370000 \n", + "1961-03-06/1961-03-12 9.488571 6.881429 9.637143 9.885714 10.458571 \n", + "1961-03-13/1961-03-19 8.652857 10.041429 10.220000 10.101429 11.627143 \n", + "1961-03-20/1961-03-26 7.982857 10.774286 8.977143 10.904286 11.481429 \n", + "1961-03-27/1961-04-02 9.165714 11.125714 9.061429 10.478333 9.631429 \n", + "1961-04-03/1961-04-09 7.637143 7.107143 8.041429 8.161429 7.238571 \n", + "1961-04-10/1961-04-16 4.947143 5.005714 4.994286 5.718571 6.178571 \n", + "1961-04-17/1961-04-23 7.798571 9.000000 9.111429 8.767143 9.551429 \n", + "1961-04-24/1961-04-30 5.197143 6.150000 6.377143 6.242857 6.124286 \n", + "1961-05-01/1961-05-07 10.864286 11.435714 12.244286 11.677143 11.585714 \n", + "1961-05-08/1961-05-14 6.391429 8.013333 7.052857 7.528571 7.822857 \n", + "1961-05-15/1961-05-21 5.022857 5.695714 6.970000 6.847143 7.114286 \n", + "1961-05-22/1961-05-28 4.112857 5.142857 6.272857 6.108571 7.535714 \n", + "1961-05-29/1961-06-04 6.451429 8.344286 8.635714 8.714286 9.035714 \n", + "1961-06-05/1961-06-11 5.460000 7.084286 6.884286 8.034286 8.397143 \n", + "1961-06-12/1961-06-18 6.947143 9.278571 9.102857 8.992857 9.594286 \n", + "1961-06-19/1961-06-25 7.492857 11.868571 9.447143 10.458571 11.257143 \n", + "1961-06-26/1961-07-02 6.507143 7.642857 9.237143 7.904286 10.268571 \n", + "1961-07-03/1961-07-09 7.982857 11.888333 9.308571 10.732857 10.547143 \n", + "1961-07-10/1961-07-16 8.412857 10.171429 10.507143 9.530000 10.157143 \n", + "1961-07-17/1961-07-23 2.715714 3.964286 5.642857 5.297143 6.041429 \n", + "... ... ... ... ... ... \n", + "1978-06-05/1978-06-11 8.030000 8.678571 8.227143 9.172857 9.642857 \n", + "1978-06-12/1978-06-18 6.898571 7.297143 7.464286 7.054286 6.225714 \n", + "1978-06-19/1978-06-25 6.852857 7.648571 7.875714 7.865714 7.084286 \n", + "1978-06-26/1978-07-02 9.005714 11.055714 8.917143 9.994286 7.498571 \n", + "1978-07-03/1978-07-09 10.762857 11.368571 11.218571 11.272857 11.082857 \n", + "1978-07-10/1978-07-16 2.631429 2.494286 3.540000 3.397143 3.214286 \n", + "1978-07-17/1978-07-23 8.282857 8.147143 9.301429 8.952857 8.402857 \n", + "1978-07-24/1978-07-30 8.707143 7.458571 9.117143 9.304286 8.148571 \n", + "1978-07-31/1978-08-06 5.855714 7.065714 5.410000 6.631429 4.962857 \n", + "1978-08-07/1978-08-13 6.702857 5.452857 5.964286 7.518571 5.661429 \n", + "1978-08-14/1978-08-20 8.034286 7.267143 8.517143 9.815714 7.941429 \n", + "1978-08-21/1978-08-27 4.077143 3.291429 3.500000 5.877143 4.447143 \n", + "1978-08-28/1978-09-03 5.090000 6.184286 3.000000 6.202857 4.745714 \n", + "1978-09-04/1978-09-10 10.927143 9.157143 9.458571 10.588571 8.274286 \n", + "1978-09-11/1978-09-17 11.868571 13.017143 12.447143 11.908571 10.957143 \n", + "1978-09-18/1978-09-24 5.171429 7.047143 6.750000 6.870000 6.291429 \n", + "1978-09-25/1978-10-01 10.338571 15.124286 12.378571 12.275714 11.970000 \n", + "1978-10-02/1978-10-08 8.881429 9.707143 9.708571 11.391429 10.161429 \n", + "1978-10-09/1978-10-15 6.237143 5.577143 6.348571 7.232857 7.285714 \n", + "1978-10-16/1978-10-22 6.862857 9.391429 7.428571 7.765714 8.048571 \n", + "1978-10-23/1978-10-29 5.905714 8.727143 6.652857 7.605714 8.120000 \n", + "1978-10-30/1978-11-05 8.314286 9.775714 9.638571 10.185714 10.422857 \n", + "1978-11-06/1978-11-12 9.352857 10.224286 10.554286 11.168571 12.232857 \n", + "1978-11-13/1978-11-19 11.208571 16.081429 12.915714 13.297143 13.242857 \n", + "1978-11-20/1978-11-26 7.404286 12.797143 7.571429 9.998571 8.915714 \n", + "1978-11-27/1978-12-03 8.618571 9.642857 7.685714 9.011429 9.547143 \n", + "1978-12-04/1978-12-10 12.774286 14.437143 12.488571 13.870000 14.082857 \n", + "1978-12-11/1978-12-17 7.272857 10.208571 7.967143 9.168571 8.565714 \n", + "1978-12-18/1978-12-24 6.290000 7.798571 8.667143 7.151429 8.072857 \n", + "1978-12-25/1978-12-31 8.620000 13.708571 10.477143 10.868571 11.471429 \n", "\n", - " SHA BIR DUB CLA MUL CLO \\\n", - "months_num \n", - "1 11.072759 8.588065 11.184839 9.245333 9.085806 10.107419 \n", - "2 13.852143 10.937500 11.890714 11.846071 11.821429 12.714286 \n", - "3 10.509355 8.866774 9.644194 9.829677 10.294138 11.251935 \n", - "4 8.435000 6.495000 6.925333 7.094667 7.342333 7.237000 \n", - "5 9.490323 6.574839 7.604000 8.177097 8.039355 8.499355 \n", + " BEL MAL \n", + "Yr_Mo_Dy \n", + "1960-12-26/1961-01-01 18.500000 15.040000 \n", + "1961-01-02/1961-01-08 12.481429 13.238571 \n", + "1961-01-09/1961-01-15 11.125714 11.024286 \n", + "1961-01-16/1961-01-22 9.821429 11.434286 \n", + "1961-01-23/1961-01-29 20.930000 22.530000 \n", + "1961-01-30/1961-02-05 14.012857 11.935714 \n", + "1961-02-06/1961-02-12 21.832857 19.155714 \n", + "1961-02-13/1961-02-19 21.167143 16.584286 \n", + "1961-02-20/1961-02-26 16.304286 14.322857 \n", + "1961-02-27/1961-03-05 17.842857 13.951667 \n", + "1961-03-06/1961-03-12 16.701429 14.420000 \n", + "1961-03-13/1961-03-19 19.350000 16.227143 \n", + "1961-03-20/1961-03-26 14.037143 18.134286 \n", + "1961-03-27/1961-04-02 13.471429 13.900000 \n", + "1961-04-03/1961-04-09 11.712857 11.371429 \n", + "1961-04-10/1961-04-16 9.482857 8.690000 \n", + "1961-04-17/1961-04-23 13.620000 12.470000 \n", + "1961-04-24/1961-04-30 9.720000 8.637143 \n", + "1961-05-01/1961-05-07 17.548571 14.571429 \n", + "1961-05-08/1961-05-14 10.421429 10.382857 \n", + "1961-05-15/1961-05-21 9.624286 10.612857 \n", + "1961-05-22/1961-05-28 10.518571 11.697143 \n", + "1961-05-29/1961-06-04 12.298571 13.597143 \n", + "1961-06-05/1961-06-11 10.148571 12.250000 \n", + "1961-06-12/1961-06-18 15.351429 15.025714 \n", + "1961-06-19/1961-06-25 14.370000 17.410000 \n", + "1961-06-26/1961-07-02 14.535714 12.133333 \n", + "1961-07-03/1961-07-09 12.220000 15.987143 \n", + "1961-07-10/1961-07-16 13.520000 12.524286 \n", + "1961-07-17/1961-07-23 7.524286 8.415714 \n", + "... ... ... \n", + "1978-06-05/1978-06-11 11.632857 17.778571 \n", + "1978-06-12/1978-06-18 11.398571 12.957143 \n", + "1978-06-19/1978-06-25 13.030000 16.678571 \n", + "1978-06-26/1978-07-02 12.268571 15.287143 \n", + "1978-07-03/1978-07-09 14.754286 18.215714 \n", + "1978-07-10/1978-07-16 7.198571 7.578571 \n", + "1978-07-17/1978-07-23 13.847143 14.785714 \n", + "1978-07-24/1978-07-30 15.192857 14.584286 \n", + "1978-07-31/1978-08-06 9.084286 11.405714 \n", + "1978-08-07/1978-08-13 10.691429 11.927143 \n", + "1978-08-14/1978-08-20 15.000000 14.405714 \n", + "1978-08-21/1978-08-27 8.131429 10.661429 \n", + "1978-08-28/1978-09-03 8.105714 13.150000 \n", + "1978-09-04/1978-09-10 14.560000 16.752857 \n", + "1978-09-11/1978-09-17 18.422857 23.441429 \n", + "1978-09-18/1978-09-24 13.447143 15.324286 \n", + "1978-09-25/1978-10-01 19.160000 24.158571 \n", + "1978-10-02/1978-10-08 16.498571 20.618571 \n", + "1978-10-09/1978-10-15 12.197143 14.177143 \n", + "1978-10-16/1978-10-22 12.708571 17.868571 \n", + "1978-10-23/1978-10-29 14.487143 16.915714 \n", + "1978-10-30/1978-11-05 18.451429 18.721429 \n", + "1978-11-06/1978-11-12 19.307143 22.522857 \n", + "1978-11-13/1978-11-19 20.357143 23.905714 \n", + "1978-11-20/1978-11-26 15.207143 19.491429 \n", + "1978-11-27/1978-12-03 11.835714 18.728571 \n", + "1978-12-04/1978-12-10 18.517143 23.061429 \n", + "1978-12-11/1978-12-17 11.102857 15.562857 \n", + "1978-12-18/1978-12-24 11.845714 18.977143 \n", + "1978-12-25/1978-12-31 12.947143 26.844286 \n", "\n", - " BEL MAL \n", - "months_num \n", - "1 13.880968 14.703226 \n", - "2 18.583214 15.411786 \n", - "3 16.410968 15.720000 \n", - "4 11.147333 10.278333 \n", - "5 11.900323 12.011613 " + "[940 rows x 12 columns]" ] }, - "execution_count": 432, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -3107,12 +3616,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 16. Calculate the min, max and mean windspeeds and standard deviations of the windspeeds across all locations for each week (assume that the first week starts on January 2 1961) for the first 52 weeks." + "### Step 15. Calculate the min, max and mean windspeeds and standard deviations of the windspeeds across all locations for each week (assume that the first week starts on January 2 1961) for the first 52 weeks." ] }, { "cell_type": "code", - "execution_count": 433, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -3474,7 +3983,7 @@ "[10 rows x 48 columns]" ] }, - "execution_count": 433, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } From d63c7cd56779f83ec94d3708a62255cab81488c9 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Thu, 23 Aug 2018 21:35:44 +0200 Subject: [PATCH 52/92] update link Stundent Alcohol Consumption --- 04_Apply/Students_Alcohol_Consumption/Exercises.ipynb | 2 +- .../Students_Alcohol_Consumption/Exercises_with_solutions.ipynb | 2 +- 04_Apply/Students_Alcohol_Consumption/Solutions.ipynb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb index a4927fe80..9dedce0ac 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb @@ -31,7 +31,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv)." + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv)." ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index ad9e25f66..66beb92be 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -34,7 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv)." + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv)." ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb index 81cd87c6b..10407f5a9 100644 --- a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb @@ -34,7 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://github.com/guipsamora/pandas_exercises/blob/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv)." + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/04_Apply/Students_Alcohol_Consumption/student-mat.csv)." ] }, { From 02dd3ed7f5a33e37f58d942558c4611716dea015 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Thu, 23 Aug 2018 21:57:44 +0200 Subject: [PATCH 53/92] update readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a38ce47b5..9dbf1b7f3 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,8 @@ Suggestions and collaborations are more than welcome. Please open an issue or ma [US_Crime_Rates](https://github.com/guipsamora/pandas_exercises/tree/master/04_Apply/US_Crime_Rates) ### [Merge](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge) -[Auto_MPG](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Auto_MPG) +[Auto_MPG](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Auto_MPG) +[Fictitious Names](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Fictitous%20Names) [House Market](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Housing%20Market) ### [Stats](https://github.com/guipsamora/pandas_exercises/tree/master/06_Stats) From 15c8dafdfc44b2ad3ce52664318257986b85ce6d Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Thu, 23 Aug 2018 21:59:14 +0200 Subject: [PATCH 54/92] update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9dbf1b7f3..46366aead 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ Suggestions and collaborations are more than welcome. Please open an issue or ma [US_Crime_Rates](https://github.com/guipsamora/pandas_exercises/tree/master/04_Apply/US_Crime_Rates) ### [Merge](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge) -[Auto_MPG](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Auto_MPG) -[Fictitious Names](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Fictitous%20Names) -[House Market](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Housing%20Market) +[Auto_MPG](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Auto_MPG) +[Fictitious Names](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Fictitous%20Names) +[House Market](https://github.com/guipsamora/pandas_exercises/tree/master/05_Merge/Housing%20Market) ### [Stats](https://github.com/guipsamora/pandas_exercises/tree/master/06_Stats) [US_Baby_Names](https://github.com/guipsamora/pandas_exercises/tree/master/06_Stats/US_Baby_Names) From 4ff1a924fa9da55704cfa570bcbeeb8b7da74281 Mon Sep 17 00:00:00 2001 From: DoganCK Date: Sat, 24 Nov 2018 08:59:26 -0600 Subject: [PATCH 55/92] dead links updated --- .../Online_Retail/Exercises.ipynb | 37 +++++------- .../Exercises_with_solutions_code.ipynb | 36 ++++------- .../Online_Retail/Solutions.ipynb | 34 ++++------- 07_Visualization/Tips/Exercises.ipynb | 58 ++++++------------ .../Exercises_with_code_and_solutions.ipynb | 60 ++++++------------- 07_Visualization/Tips/Solutions.ipynb | 58 ++++++------------ 6 files changed, 94 insertions(+), 189 deletions(-) diff --git a/07_Visualization/Online_Retail/Exercises.ipynb b/07_Visualization/Online_Retail/Exercises.ipynb index cba1cdf7d..579651177 100644 --- a/07_Visualization/Online_Retail/Exercises.ipynb +++ b/07_Visualization/Online_Retail/Exercises.ipynb @@ -21,9 +21,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -31,22 +29,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Online_Retail/Online_Retail.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Online_Retail/Online_Retail.csv). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Assign it to a variable called online_rt" + "### Step 3. Assign it to a variable called online_rt\n", + "Note: if you receive a utf-8 decode error, set `encoding = 'latin1'` in `pd.read_csv`." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -60,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -76,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -92,9 +85,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -117,23 +108,23 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.0" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb index b2f0d538c..86b36653e 100644 --- a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb +++ b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb @@ -21,9 +21,7 @@ { "cell_type": "code", "execution_count": 197, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -42,7 +40,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Online_Retail/Online_Retail.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Online_Retail/Online_Retail.csv). " ] }, { @@ -55,9 +53,7 @@ { "cell_type": "code", "execution_count": 198, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -159,7 +155,7 @@ } ], "source": [ - "url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Online_Retail/Online_Retail.csv'\n", + "url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Online_Retail/Online_Retail.csv'\n", "online_rt = pd.read_csv(url)\n", "\n", "online_rt.head()" @@ -175,9 +171,7 @@ { "cell_type": "code", "execution_count": 199, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -219,9 +213,7 @@ { "cell_type": "code", "execution_count": 200, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -337,9 +329,7 @@ { "cell_type": "code", "execution_count": 201, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -401,23 +391,23 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.0" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Online_Retail/Solutions.ipynb b/07_Visualization/Online_Retail/Solutions.ipynb index 2464f943a..55efdf5be 100644 --- a/07_Visualization/Online_Retail/Solutions.ipynb +++ b/07_Visualization/Online_Retail/Solutions.ipynb @@ -21,9 +21,7 @@ { "cell_type": "code", "execution_count": 197, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -42,7 +40,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Online_Retail/Online_Retail.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Online_Retail/Online_Retail.csv). " ] }, { @@ -55,9 +53,7 @@ { "cell_type": "code", "execution_count": 198, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -170,9 +166,7 @@ { "cell_type": "code", "execution_count": 199, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -197,9 +191,7 @@ { "cell_type": "code", "execution_count": 200, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -312,9 +304,7 @@ { "cell_type": "code", "execution_count": 201, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -348,23 +338,23 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.0" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Tips/Exercises.ipynb b/07_Visualization/Tips/Exercises.ipynb index 6116b3853..24544569c 100644 --- a/07_Visualization/Tips/Exercises.ipynb +++ b/07_Visualization/Tips/Exercises.ipynb @@ -22,9 +22,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -32,7 +30,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Tips/tips.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Tips/tips.csv). " ] }, { @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -61,9 +57,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -77,9 +71,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -93,9 +85,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -110,9 +100,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -126,9 +114,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -142,9 +128,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -158,9 +142,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -174,9 +156,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -191,9 +171,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -217,23 +195,23 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.0" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb b/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb index a0aecaeec..3418dc4e7 100644 --- a/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb +++ b/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb @@ -22,9 +22,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -45,7 +43,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Tips/tips.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Tips/tips.csv). " ] }, { @@ -58,9 +56,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -155,7 +151,7 @@ } ], "source": [ - "url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Tips/tips.csv'\n", + "url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Tips/tips.csv'\n", "tips = pd.read_csv(url)\n", "\n", "tips.head()" @@ -171,9 +167,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -277,9 +271,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -313,9 +305,7 @@ { "cell_type": "code", "execution_count": 46, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -353,9 +343,7 @@ { "cell_type": "code", "execution_count": 44, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -392,9 +380,7 @@ { "cell_type": "code", "execution_count": 51, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -421,9 +407,7 @@ { "cell_type": "code", "execution_count": 61, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -450,9 +434,7 @@ { "cell_type": "code", "execution_count": 58, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -479,9 +461,7 @@ { "cell_type": "code", "execution_count": 63, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -514,9 +494,7 @@ { "cell_type": "code", "execution_count": 65, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -555,23 +533,23 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.0" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Tips/Solutions.ipynb b/07_Visualization/Tips/Solutions.ipynb index 15353e0a0..96ce17999 100644 --- a/07_Visualization/Tips/Solutions.ipynb +++ b/07_Visualization/Tips/Solutions.ipynb @@ -22,9 +22,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -45,7 +43,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Tips/tips.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Tips/tips.csv). " ] }, { @@ -58,9 +56,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -166,9 +162,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -268,9 +262,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -295,9 +287,7 @@ { "cell_type": "code", "execution_count": 46, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -333,9 +323,7 @@ { "cell_type": "code", "execution_count": 44, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -370,9 +358,7 @@ { "cell_type": "code", "execution_count": 51, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -397,9 +383,7 @@ { "cell_type": "code", "execution_count": 61, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -424,9 +408,7 @@ { "cell_type": "code", "execution_count": 58, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -451,9 +433,7 @@ { "cell_type": "code", "execution_count": 63, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -479,9 +459,7 @@ { "cell_type": "code", "execution_count": 65, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -515,23 +493,23 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.0" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From 00db25af78c684fcf2303cd773b6103e4e6e2c5a Mon Sep 17 00:00:00 2001 From: DoganCK Date: Sat, 24 Nov 2018 18:03:07 -0600 Subject: [PATCH 56/92] added 2 new problems with solution to Visulization-Online_Retail --- .../Online_Retail/Exercises.ipynb | 231 +++- .../Exercises_with_solutions_code.ipynb | 1034 ++++++++++++++++- .../Online_Retail/Solutions.ipynb | 902 +++++++++++++- 3 files changed, 2107 insertions(+), 60 deletions(-) diff --git a/07_Visualization/Online_Retail/Exercises.ipynb b/07_Visualization/Online_Retail/Exercises.ipynb index 579651177..bf9c7d07e 100644 --- a/07_Visualization/Online_Retail/Exercises.ipynb +++ b/07_Visualization/Online_Retail/Exercises.ipynb @@ -37,7 +37,7 @@ "metadata": {}, "source": [ "### Step 3. Assign it to a variable called online_rt\n", - "Note: if you receive a utf-8 decode error, set `encoding = 'latin1'` in `pd.read_csv`." + "Note: if you receive a utf-8 decode error, set `encoding = 'latin1'` in `pd.read_csv()`." ] }, { @@ -89,6 +89,231 @@ "outputs": [], "source": [] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7. Investigate why the previous results look so uninformative.\n", + "\n", + "This section might seem a bit tedious to go through. But I've thought of it as some kind of a simulation of problems one might encounter when dealing with data and other people. Besides there is a prize at the end (i.e. Section 8).\n", + "\n", + "(But feel free to jump right ahead into Section 8 if you want; it doesn't require that you finish this section.)\n", + "\n", + "#### Step 7.1 Look at the first line of code in Step 6. And try to figure out if it leads to any kind of problem.\n", + "##### Step 7.1.1 Display the first few rows of that DataFrame." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.1.2 Think about what that piece of code does and display the dtype of `UnitPrice`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.1.3 Pull data from `online_rt`for `CustomerID`s 12346.0 and 12347.0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 7.2 Reinterpreting the initial problem.\n", + "\n", + "To reiterate the question that we were dealing with: \n", + "\"Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries\"\n", + "\n", + "The question is open to a set of different interpretations.\n", + "We need to disambiguate.\n", + "\n", + "We could do a single plot by looking at all the data from the top 3 countries.\n", + "Or we could do one plot per country. To keep things consistent with the rest of the exercise,\n", + "let's stick to the latter oprion. So that's settled.\n", + "\n", + "But \"top 3 countries\" with respect to what? Two answers suggest themselves:\n", + "Total sales volume (i.e. total quantity sold) or total sales (i.e. revenue).\n", + "This exercise goes for sales volume, so let's stick to that.\n", + "\n", + "##### Step 7.2.1 Find out the top 3 countries in terms of sales volume." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.2.2 \n", + "\n", + "Now that we have the top 3 countries, we can focus on the rest of the problem: \n", + "\"Quantity per UnitPrice by CustomerID\". \n", + "We need to unpack that.\n", + "\n", + "\"by CustomerID\" part is easy. That means we're going to be plotting one dot per CustomerID's on our plot. In other words, we're going to be grouping by CustomerID.\n", + "\n", + "\"Quantity per UnitPrice\" is trickier. Here's what we know: \n", + "*One axis will represent a Quantity assigned to a given customer. This is easy; we can just plot the total Quantity for each customer. \n", + "*The other axis will represent a UnitPrice assigned to a given customer. Remember a single customer can have any number of orders with different prices, so summing up prices isn't quite helpful. Besides it's not quite clear what we mean when we say \"unit price per customer\"; it sounds like price of the customer! A reasonable alternative is that we assign each customer the average amount each has paid per item. So let's settle that question in that manner.\n", + "\n", + "#### Step 7.3 Modify, select and plot data\n", + "##### Step 7.3.1 Add a column to online_rt called `Revenue` calculate the revenue (Quantity * UnitPrice) from each sale.\n", + "We will use this later to figure out an average price per customer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.3.2 Group by `CustomerID` and `Country` and find out the average price (`AvgPrice`) each customer spends per unit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.3.3 Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 7.4 What to do now?\n", + "We aren't much better-off than what we started with. The data are still extremely scattered around and don't seem quite informative.\n", + "\n", + "But we shouldn't despair!\n", + "There are two things to realize:\n", + "1) The data seem to be skewed towaards the axes (e.g. we don't have any values where Quantity = 50000 and AvgPrice = 5). So that might suggest a trend.\n", + "2) We have more data! We've only been looking at the data from 3 different countries and they are plotted on different graphs.\n", + "\n", + "So: we should plot the data regardless of `Country` and hopefully see a less scattered graph.\n", + "\n", + "##### Step 7.4.1 Plot the data for each `CustomerID` on a single graph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.4.2 Zoom in so we can see that curve more clearly" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Plot a line chart showing revenue (y) per UnitPrice (x).\n", + "\n", + "Did Step 7 give us any insights about the data? Sure! As average price increases, the quantity ordered decreses. But that's hardly surprising. It would be surprising if that wasn't the case!\n", + "\n", + "Nevertheless the rate of drop in quantity is so drastic, it makes me wonder how our revenue changes with respect to item price. It would not be that surprising if it didn't change that much. But it would be interesting to know whether most of our revenue comes from expensive or inexpensive items, and how that relation looks like.\n", + "\n", + "That is what we are going to do now.\n", + "\n", + "#### 8.1 Group `UnitPrice` by intervals of 1 for prices [0,50), and sum `Quantity` and `Revenue`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8.3 Plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8.4 Make it look nicer.\n", + "x-axis needs values. \n", + "y-axis isn't that easy to read; show in terms of millions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -99,9 +324,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } diff --git a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb index 86b36653e..0d1d9da85 100644 --- a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb +++ b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 197, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ "# set the graphs to show in the jupyter notebook\n", "%matplotlib inline\n", "\n", - "# set seabor graphs to a better style\n", + "# set seaborn graphs to a better style\n", "sns.set(style=\"ticks\")" ] }, @@ -47,18 +47,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Assign it to a variable called online_rt" + "### Step 3. Assign it to a variable called online_rt\n", + "Note: if you receive a utf-8 decode error, set `encoding = 'latin1'` in `pd.read_csv()`." ] }, { "cell_type": "code", - "execution_count": 198, + "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -149,14 +163,15 @@ "4 12/1/10 8:26 3.39 17850.0 United Kingdom " ] }, - "execution_count": 198, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Online_Retail/Online_Retail.csv'\n", - "online_rt = pd.read_csv(url)\n", + "path = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Online_Retail/Online_Retail.csv'\n", + "\n", + "online_rt = pd.read_csv(path, encoding = 'latin1')\n", "\n", "online_rt.head()" ] @@ -170,17 +185,19 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ8AAAFICAYAAACP2fMDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xv833P9//HbZ7MxiSV8hyGqPSixckg/hyQd1Iq+TmURxQihr0qHSaRUwpB1MEMNKdIBK3IcohQq454cJjYRrTktm+33x/P53l57+3w++2yf9/v5etvu18vlc9n7/XydHq/3Pp/34/V8vp6v57Nr/vz5mJmZlTSg7gDMzGz54+RjZmbFOfmYmVlxTj5mZlack4+ZmRXn5GNmZsWtUHcAtvyJiC7gPOAvkr6dywYCpwDvJf1eflvS93rYfl3ga8BbgPnAbODrkn7Rpni/DNzV3f4j4gTg75J+2I5jNx1rS+DzkvaIiK2AT0g6JCJ2BL4jadN2x9BLbAviaeE+9wAOl7Rjq/ZpncM1HysqIjYBrgH2aFp0MDAC2BTYCjgqIrbuZvs1gVvyPjaXtDkwBjg7It7VprB3AgZ1t0DSl0sknnys2yU1Prc3AsNLHLePOi0e63Cu+VhphwETgIebyj8E/EDSXODfEfFj4KPA75vWOxS4SdKPGgWS7spXyf8GiIjtgZOBlYEXgLGSfh0R+wN7SBqV11vwPiLOA2YBbwLWA/4M7Ad8DNgSODkiXgR2BVYHXgtcDvwP8FdJ386J9XTg1cBA4AxJEyNiFeBc4PXAPOCPwMGS5jXOISKOAraQtG9EDAKeBI6UdG5EbEeqFR4DfAfYBTgBWC0izgXOB1bJn9nGwErAQZKmVD+4XEM6KX/2ATwLfAM4Ir+/VNKn87pjcvmLwD9JNZC/5VhOzec3P+/v99V4JB3QdNw35rhfnbc5RdIPczyn5zhWIV10fAkYnc//vso+BgPfBN6ej30HcISkWRHxEHAbsBnwRWAYcEj+v5+dP+upWEdxzceKknS4pAu7WbQe8I/K+0fo/kp6S+DmbvZ7o6S/RMSrgUtIX9ybkZLHpIjYsA/hbUFq9tsEeA2wp6SzgNuBz0q6LK+3sqQ3SjqmsWFErJCP+3lJW5C+JD8TEduQEusrJY0kfcECbNR07J8B74mIAcB2pC/kRk3ug8CllXP9B/BlYErli344cFo+xveBr/RwjlsB38jrzQK+ALyf1IR5WESsExE7AZ8D3pFrlhcCP8/NpccDp+Zz/DiwUw/xVD+XXwJn5v+PXYCvR8Tb8iqbAh/Jy94L7A6MBP4fsFplV58H5pIS9ObAdFLibPirpE3yscYB75W0FfCD/Hlah3HysU4xgHRV3NBFuupuNo/ef2/fSroHcxuApLtJyWrHPsTwa0n/lTQH+AuphtOdm7opG0GqDU2MiDuBG4AhwJvz+m+MiOtJX6LjJP29urGkh0nJt5EATwLekb/wF0k+Pbi/cc7AncBaPaz3oKQ7GtsA10l6QdK/SMlo9Xz8iyU9kWM7D1iXlJB/ApwVERfkWL+4mLhGACtJ+lne1/R8Lu/Ny/8haVp+vTPwM0lP5xrwxMp+RpFqnXfkz3c34A2V5VPy/l8EfgrcEhHfAWYC5ywmRquBk491ioeBdSrv1yHVfprdCmzTXBgRB0fE/7GwOahqAOmezXxSUmsY3LTe85XXzetWPdNN2UDgP5JGNn5ynOdKehB4HSmhrAr8NiI+0M0+LgPeB7ybVIuaBuwNPC/p/h5iaZjTx9j/28t21XNp/gy7gEGSvk9qmrwaeA/w54hYqZe4evv/gJd+ltW45zbt58jKZ7s1i943XLAfSR8FPgD8nZTsL+olPquJk491il8AH4+IFSJiKPBh4OfdrPd9YMeIGJ1rBUTEFqR7Dn8Bfgds3OiskO837ABcDzwBbBoRK+X7Ks2dHnoylx46HFQIeD4iPpqPux7wV2CLiPgk6Z7PVbmp7jekZq5mPwP2AQbkGsJVwLfovtbTl5iW1q+BD+fOHUTEAaR7MH+PiFuAN+fa0BhgKOkeS0/x3AvMiYj/zftah9S0dnU3604G9oyIobn5cd/Kst8Ah0fE4LzsbFIyX0RErBER/wCelDQOGMvCpk7rIE4+1im+S2oGugv4A3COpBuaV5L0FKkJbXfgrxHxF+AsUjffq3Pz0Z7AmXnZhcABkv5G+jK/gfSFeCPpXk5f/BI4KSI+1tMKkl4gNQsdGBF/zsc6VtLNwA9JV+5TI+KPpHsZZ3Szj6mkWsI1ueg3pHth3SWfW4GNIuJnfTyHPpN0NXAacG1E3E26bzYqd5D4HHBCRNxBSujHS3qop3hyE+ZuwJH5c/ktcIKk67o57pWkprbbSR0I/lNZ/FXgIVJHg6mkGtLR3ezjX8CJwDX5s/4GcNBSfRDWVl2eUsHMzEpzzcfMzIpz8jEzs+KcfMzMrDiPcJBFxIqkXjEz6P75EjMze6mBwNrAHyQ1d+XvkZPPQluRH1QzM7Mltj3dP4DdLSefhWYAXHDBBQwbNqzuWMzMXhYee+wxRo8eDfk7tK+cfBZ6EWDYsGEMH+7Bec3MltAS3a5whwMzMyvOycfMzIpz8jEzs+KcfMzMrDgnHzMzK66tvd0i4jhgr/z2Ckmfi4idSdPwDiFNWDU2rzuSNL3yqqQRhw+RNDci1gcmkSbHEjBa0jN52P0LSDNCPgHsJemxPN3uOaQZL58H9pF0bzvP08zMlkzbaj45ybybNJPjSNK8Jh8hDZm+K2mq4q0iYpe8ySTSPPEjSMOlN4ZBHw+Ml7Qxaaj1Y3P5iaRpezchze1xei4/Ang2lx8FnNeuczQzs6XTzprPDODoPM8JEXEPaUrd+/LMjkTEJNLkUVOBIZJuzdueBxwfERNIE4HtVim/ATiGNO/8Drn8ItLUvoNy+ZcBJN0YEWtGxPp5mmLycYeSJsGq8sM9ZmaFtK3mI+nuRjKJiNeTmt/msehTsDNIX/rr9FC+BjArz+deLae6TV4+C1izl31VHQU82PTTp6F1XpjT/2HfWrEPM7OXs7aPcJCnMb4C+Cxpqt0RlcVdpIQ0gEXnee+pnFzeWKdqcfuqGsdLm+OG04cENHjQQD5w9C8Wt1qvfnXKrv3a3szs5a7dHQ62JU0BfJSkH0fE20mjnzYMA6YDj/RQ/jiwWkQMlPRiXmd6XufRvN4jEbEC8ErSPPONfd3ftK8FJM0EZjbF2r+TNTOzPmtnh4P1gJ+Tepv9OBfflhbF6yJiILAPMFnSNGB2TlYA++byOaTayN65fD9gcn59ZX5PXj4lr7+gPCK2A2ZX7/eYmVn92lnz+QywEnBqpVbxPWB/Um1oJVKiuCQvGw2cHRGrAn8CzsjlhwLnR8RY4GHgI7n8WOC8iLibVIsZncvPBL6fy/9LSmRmZtZB2pZ8JB0JHNnD4s27Wf8uYOtuyqcBO3ZT/hTwwW7KZwMfW8JwzcysII9wYGZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFOfmYmVlxTj5mZlack4+ZmRXn5GNmZsU5+ZiZWXFOPmZmVpyTj5mZFefkY2ZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFtXMabQDytNi3AKOANwBfryxeF7hN0qiIOA74OPDvvOxsSWdFxEhgArAqcCNwiKS5EbE+MAlYCxAwWtIzETEUuADYCHgC2EvSY+0+TzMz67u21nwi4q3ATcAIAElXShopaSTwXmAW8Om8+pbAhxvLJZ2VyycBh0saAXQBB+Xy8cB4SRsDtwPH5vITgSmSNgHOBk5v5zmamdmSa3fN5yDgMOBH3Sw7GfiepPvy+y2BL0bEBqQazmeA/wGGSLo1r3MecHxETAB2AHarlN8AHAO8Py8DuAg4KyIGSZrTOHCuHQ1timf4Up6jmZktobbWfCQdKGlKc3lEvB7YETgjv18FuAP4LPAWUmI4FlgHmFHZdAYpSawBzJI0t6mc6jZ5+SxgzaYQjgIebPp5SZxmZtYebb/n04MxpCaz/wJIegZ4X2NhRJwCTASuBOZXtusC5pGSZrWcXN5Yp6qrsqxhHKm2VDUcJyAzsyLqSj67Ae9uvMmdB3aWNDEXdQFzgEeAtSvbDQOmA48Dq0XEQEkv5nWm53Uezes9EhErAK8EnqweXNJMYGa1LCJac2ZmZrZYxbtaR8QapPs4D1aKnwe+FREbRkQX6T7RZZKmAbMjYtu83r7A5Hz/Zgqwdy7fD5icX1+Z35OXT6ne7zEzs/rV8ZzPRqQazQKSngAOBn5F6jbdBZySF48GTouIe4FVyPeJgEOBMRExFdgeGJvLjwW2iYi78zqHte9UzMxsaRRpdpP0msrr3wPbdLPOpcCl3ZTfBWzdTfk0UqeF5vKngA/2K2AzM2srj3BgZmbFOfmYmVlxTj5mZlack4+ZmRXn5GNmZsU5+ZiZWXFOPmZmVpyTj5mZFefkY2ZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFOfmYmVlxTj5mZlack4+ZmRXX9snkImJV4BZglKSHIuJcYDvg2bzK8ZIui4idgVOBIcDFksbm7UcCE4BVgRuBQyTNjYj1gUnAWqTZT0dLeiYihgIXkGZMfQLYS9Jj7T5PMzPru7bWfCLircBNwIhK8ZbADpJG5p/LImIIMBHYFdgE2CoidsnrTwIOlzSCNL32Qbl8PDBe0sbA7aTpswFOBKZI2gQ4Gzi9fWdoZmZLo93NbgcBhwHTASJiZWB9YGJE/Dkijo+IAaRpsu+T9KCkuaSEs2dEbAAMkXRr3t95uXwQsANwSbU8v34/qeYDcBGwS17fzMw6RFub3SQdCBARjaJhwLXAocB/gMuBTwDPADMqm84AhgPr9FC+BjArJ6pqOdVtcvPcLGBNcgLM8QwFhjaFOxwzMyui7fd8qiQ9AHyo8T4izgT2I9Vg5ldW7QLmkWpmfSknlzfWqeqqLGs4Cjhuyc/AzMxaoWhvt4h4U0TsXinqAuYAjwBrV8qHkWoqPZU/DqwWEQNz+dosrNk8mtcjIlYAXgk82RTKOGDDpp/t+3NuZmbWd6W7WncB4yLiVfk+zBjgMuA2ICLidTmh7ANMljQNmB0R2+bt983lc4ApwN65fD9gcn59ZX5PXj4lr7+ApJmSHqr+kBKdmZkVUDT5SPozcBJwMzAVuFPSRZJmA/sDl+bye1nYmWA0cFpE3AusApyRyw8FxkTEVFKtZWwuPxbYJiLuzusc1u7zMjOzJVPkno+k11Rejyd1k25e5xpg827K7yL1hmsunwbs2E35U8AH+xWwmZm1lUc4MDOz4px8zMysOCefl6F5c1/oiH2YmS2tos/5WGsMWGEwD3xt98Wv2IuNvnRpi6IxM1tyrvmYmVlxTj5mZlack4+ZmRXn5GNmZsU5+ZiZWXFOPmZmVpyTj5mZFefkY2ZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFOfmYmVlxbR/VOiJWBW4BRkl6KCLGAEcA84HbgYMlvRARxwEfB/6dNz1b0lkRMRKYAKwK3AgcImluRKwPTALWAgSMlvRMRAwFLgA2Ap4A9pL0WLvP08zM+q6tNZ+IeCtwEzAivx8BfBb4f8Bm+fiH5dW3BD4saWT+OSuXTwIOlzQC6AIOyuXjgfGSNiYlsWNz+YnAFEmbAGcDp7fxFM3MbCm0u+ZzECm5/Ci//y9wqKRZABHxF2D9vGxL4IsRsQGphvMZ4H+AIZJuzeucBxwfEROAHYDdKuU3AMcA78/LAC4CzoqIQZLmNILKtaOhTbEO7+/JmplZ37Q1+Ug6ECAiGu+nAdNy2ZrA4cD+EbEKcAepVvR3UjI5FrgcmFHZ5QxSklgDmCVpblM5wDqNbXLz3CxgTWB6ZT9HAce17kzNzGxJ9Cn5RMSngPMbNZb+ioh1gcnAOZKuz8Xvqyw/BZgIXEm6N9TQBcwjNddVy8nljXWquirLGsaRElzVcGBKX8/BzMyWXl9rPpsBf4uIy4HvSbp9aQ8YERsDvwHOkHRKLlsf2FnSxLxaFzAHeARYu7L5MFIN5nFgtYgYKOnFvE6jZvNoXu+RiFgBeCXwZDUGSTOBmU1xLe0pmZnZEupThwNJBwGvJ93YHx8Rf4iIj0fESktysIh4JXAVMLaReLLngW9FxIYR0UW6T3RZbqabHRHb5vX2BSbn+zdTgL1z+X6kmhSk2tJ++fXepM4HC+73mJlZ/frc203S08BPgQuBV5MShCLiA0twvANJnQiOjog7888Jkp4ADgZ+Reo23QU0ktNo4LSIuBdYBTgjlx8KjImIqcD2wNhcfiywTUTcnddp9KYzM7MO0dd7Pu8ExgA7kxLQbpL+HBGvJdVAftXb9pJek1+eln+6W+dS4NJuyu8Ctu6mfBqwYzflTwEf7C0eMzOrV1/v+ZxFeq5mjKT/NAol3R8RZ7clMjMzW2b1tdntDElnVBNPRBwDIMldls3MbIn0WvOJiEOAlYFPN3UuGAQcAnyzjbFZh3vhxTkMHjio9n2Y2cvP4prd5gBvIiWgN1XK5wJHtysoe3kYPHAQe138yX7t4yd7f7dF0ZjZy0mvyUfSOcA5EbGbpJ8XisnMzJZxi2t2+5ykbwHvjIidmpdLOqJtkZmZ2TJrcc1ujQ4G/+pmWfPwNmZmZn2yuGa37+eXj0tapHG+0dvNzMxsSS1Jb7chlUXu7WZmZkvNvd3sZW3eCy8wYPDg2vdhZkvGvd3sZW3A4MHcvOvu/drHtr94yahOZtZmfR1e53cRcRywOpX5ctzbzczMlkZfk88k4DnSbKPu5WZmZv3S1+QzXNImbY3EzMyWG30dWHRaRLyirZGYmdlyo681nxnAnRFxPWnWUcD3fMzMbOn0Nfk8lH/MzMz6rU/JR9LxzWV9aYaLiFWBW4BRkh6KiJ2BU4EhwMWSxub1RgITgFWBG4FDJM2NiPVJnR3WIk2vPVrSMxExFLgA2Ah4AthL0mMRMRg4B9iSVEPbR9K9fTlHMzMrp0/3fCJi14i4KyLuj4gHImIa8NhitnkrcBMwIr8fAkwEdgU2AbaKiF3y6pOAwyWNIHXlPiiXjwfGS9oYuB04NpefCEzJnSDOBk7P5UcAz+byo4Dz+nJ+ZmZWVl87HHwb+DrwMHAo8Gvge4vZ5iDgMGB6fr81cJ+kByXNJSWcPSNiA2CIpFvzeufl8kHADsAl1fL8+v2kmg/ARcAuef0F5ZJuBNbMtadFRMTQiHhN9QcY3pcPwszM+q+vyedZSRcDtwKzgU8Co3rbQNKBkqZUitYhdVxomEH6wu+pfA1gVk5U1fJF9pWXzwLW7GVfzY4CHmz6mdLNemZm1gZ9TT6zI2JF4O/ASEnzWPKHTQc0bdMFzFuCcnJ5Y52qxe2r2Thgw6af7ft4HmZm1k997e32S+AK4GOkoXa2p/s5fnrzCLB25f0wUpNcT+WPA6tFxEBJL+Z1Gk14j+b1HomIFYBXAk9W9nV/074WIWkmMLNaFhFLeDpmZra0+lTzkfR14OOSHiV1GLgR2GMJj3UbEBHxuogYCOwDTJY0jVSz2javt28un0NqCts7l+8HTM6vr8zvycun5PUXlEfEdsBsSQ8vYZxmZtZmfe3t9hZgjfxvFykpLNENekmzgf2BS4GpwL0s7EwwGjgtIu4FVgHOyOWHAmMiYiqpWWxsLj8W2CYi7s7rHJbLzwRWzOVnkBKZmZl1mL42u1XHnB9Mas76I6kHW68kvaby+hpg827Wuau7feVa0Y7dlD8FfLCb8tmkpkEzM+tgfX3IdMPq+4jYkVRbMTMzW2J97e22CEnXA1u0NhQzM1te9Knmk+/1NHSRhq8Z0paIzMxsmbck93waz8/MJ3WzPqQtEZmZ2TJvsc1uEbEKaYy1PwN/JQ0A+i5g/YjYqb3hmZnZsqjXmk9ErA78jtQ1+upcvBNpkM+ngXe0NTozM1smLa7Z7XhggqSTK2VnRcQlwBxJs9oXmpmZLasWl3x2BEZWC3JtaBNgUJtiMjOzZdzi7vnMy+OqVT0N7E5lOm0zM7Ml0ZcOB6tW3+cx1HqdSM7MzKw3i0s+FwI/yNMpABARK5EmkpvUzsDMzGzZtbh7Pt8mzQz6QETcnsu2Aq7Ly8wMmDvnRVYYNLD2fZi9XPSafPL9ng9HxJbAdrn4REl/aHtkZi8jKwwayAlHX96vfXz5lF4nBzZbpvR1YNHbSc/2mJmZ9dtSDSxqZmbWH04+ZmZWnJOPmZkV19dRrVsmIg4EDq8UbQj8CHgFqVPDs7n8eEmXRcTOwKmkKRwuljQ272ckaZDTVYEbgUMkzY2I9UndwNcCBIyW9Ez7z8zMzPqqeM1H0gRJIyWNJM2G+jjwFdIcQTs0luXEMwSYCOxKGtJnq4jYJe9qEnC4pBGkOYYOyuXjgfGSNiZ1kji21LmZmVnfFK/5NPku8EXgOWB9YGJErAtcRhrUdGvgPkkPAkTEJGDPiJgKDJF0a97PecDxETEB2AHYrVJ+A3BM9aARMRQY2hTL8JaemZmZ9ai2ez65OW2IpJ8Cw4BrgY8D2wDbA58A1gFmVDabQUoSPZWvAcySNLepvNlRwINNP1NacmJmZrZYddZ8Dibdy0HSA8CHGgsi4kxgP+ASFs6gCql5bR4pafalnFzebBypVlQ1HCcgM7Miakk+ETEYeDuwf37/JmCEpEvzKl3AHOARYO3KpsOA6b2UPw6sFhED8+gMa+fyRUiaCcxsiqnf52VmZn1TV7PbZsDfJDV6tnUB4yLiVRExCBhDuu9zGxAR8bqIGAjsA0yWNA2YHRHb5u33zeVzSLWXvXP5fsDkMqdkZmZ9VVfy2YhUewFA0p+Bk4CbSVN23ynpIkmzSbWjS3P5vaSmOEg95U6LiHuBVYAzcvmhwJjcKWF7YGzbz8bMzJZILc1ukn4C/KSpbDypm3TzutcAm3dTfhepN1xz+TTSDKxmZtahPMKBmZkV5+RjZmbFOfmYmVlxTj5mZlack4+ZmRXn5GNmZsU5+ZiZWXFOPmZmVpyTj5mZFefkY2ZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFOfmYmVlxTj5mZlack4+ZmRVXy0ymEXEdsBYwJxcdDLyWNOX1IGCcpLPyujsDpwJDgIsljc3lI4EJwKrAjcAhkuZGxPrApLx/AaMlPVPq3MzMbPGK13wiogsYAWwuaaSkkcAjwNeA7YCRwJiIeENEDAEmArsCmwBbRcQueVeTgMMljQC6gINy+XhgvKSNgduBYwudmpmZ9VEdNZ/I/14VEa8GzgaeBq6V9BRARFwC7AHcANwn6cFcPgnYMyKmAkMk3Zr3dR5wfERMAHYAdquU3wAcs0gAEUOBoU1xDW/VCZqZWe/qSD6vAq4BPkVqYrseuBiYUVlnBrA1sE435cN7KV8DmCVpblN5s6OA4/p5HmZmtpSKJx9JvwN+13gfEeeQ7umcWFmtC5hHahac349ycnmzcaRaUdVwYEofT8PMzPqhePKJiO2AFSVdk4u6gIeAtSurDQOmk+4FLUn548BqETFQ0ot5nenNMUiaCcxsimvpT8rMzJZIHV2thwInR8RKEfFK4GPAR4F3RsSaEbEysDvwa+A2ICLidRExENgHmCxpGjA7IrbN+9w3l88h1V72zuX7AZOLnZmZmfVJ8eQj6XLgCuAO4I/AREk3A18CrgPuBC6U9HtJs4H9gUuBqcC9wCV5V6OB0yLiXmAV4Ixcfiipt9xUYHtS920zM+sgtTznI+lYmrpAS7oQuLCbda8BNu+m/C5Sp4Tm8mnAjq2K1czMWs8jHJiZWXFOPmZmVpyTj5mZFefkY2ZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFOfmYmVlxTj5my4i5c+YsfqUC+zDri1qG1zGz1lth0CC+84UD+rWPw086t0XRmPXONR8zMyvOycfMzIpz8jEzs+KcfMyspebN7W7m+nLb28uDOxyYWUsNWGEA9337pqXe/vWf2a6F0Vincs3HzMyKq6XmExHHAXvlt1dI+lxEnAtsBzyby4+XdFlE7AycCgwBLpY0Nu9jJDABWBW4EThE0tyIWB+YBKwFCBgt6ZlS52ZmZotXvOaTk8m7gTcDI4EtIuJDwJbADpJG5p/LImIIMBHYFdgE2Coidsm7mgQcLmkE0AUclMvHA+MlbQzcTtN03Wa27Js7d25H7MN6VkfNZwZwtKQXACLiHmD9/DMxItYFLgOOB7YG7pP0YF53ErBnREwFhki6Ne/zPOD4iJgA7ADsVim/ATimGkBEDAWGNsU1vIXnaGY1WmGFFTjllFP6tY+jjz66RdFYd4onH0l3N15HxOtJzW/bAzsChwL/AS4HPgE8Q0pWDTNISWKdHsrXAGZJmttU3uwo4Lj+n42ZWc/mvTiHAQMH1bZ9J6utt1tEvBG4AvisJAEfqiw7E9gPuASYX9msC5hHai7sSzm5vNk4Uq2oajgwZUnPw8ysJwMGDuKPV312qbff4t0ntzCazlJXh4NtgUuBoyT9OCLeBIyQdGlepQuYAzwCrF3ZdBgwvZfyx4HVImKgpBfzOtObjy9pJjCzKaZWnJqZWUeZ8+I8Bg3s3+39VuyjWfHkExHrAT8H9pZ0bS7uAsZFxLWkprYxwPnAbWmTeB3wILAPMFHStIiYHRHbSroZ2BeYLGlOREwB9gYuJNWeJpc8PzOzTjJo4AAOuvJP/drH2e97S4uiWaiOms9ngJWAUyu1je8BJwE3A4OASyVdBBAR+5NqSSsBV5Ka4gBGA2dHxKrAn4AzcvmhwPkRMRZ4GPhIm8/HzMyWUB0dDo4Ejuxh8fhu1r8G2Lyb8rtIveGay6eROi+YmVmH8ggHZmZWnJOPmZkV5+RjZmbFOfmYmVlxTj5mZlack4+ZmRXn5GNmZsU5+ZiZWXFOPmZmVpyTj5mZFefkY2ZmxTn5mJlZcU4+ZmZWnJOPmZkV5+RjZmbFOfmYmVlxTj5mZlZcHdNot11E7AOMJU3JPU7SWTWHZGZmFctczSci1gW+BmwHjATGRMQb6o3KzMyqlsWaz87AtZKeAoiIS4A9gBMaK0TEUGBo03YbADz22GOLPcCc557qV4CPPPJIv7YH+OczL/Q8We7UAAAXf0lEQVRr+8EtiAHghX8/36/tW/FZ/OuF/n0WrYgB4JkO+L2Y9ezs2mMA+OfT/1rqbYe0KIann366X9u36rN44snnao9h9lNP9Gv73uKofGcOXJJ9ds2fP78fIXWeiPgC8ApJY/P7A4GtJY2prPMV4Lh6IjQzWyZtL+mmvq68LNZ8BgDVjNoFzGtaZxxwXlPZYGAj4D7gxaU89nBgCrA90JpLlpdvHJ0QQ6fE0QkxdEocnRBDp8TRCTG0Io6BwNrAH5Zko2Ux+TxC+hAbhgHTqytImgnM7Gbbv/XnwBGxIAZJD/VnXy/3ODohhk6JoxNi6JQ4OiGGTomjE2JoYRz3L+kGy2Ly+S3wlYhYE3gW2B0Y0/smZmZW0jLX203So8CXgOuAO4ELJf2+3qjMzKxqWaz5IOlC4MK64zAzs+4tczWfms0Ejqf7+0nLWxydEEOnxNEJMXRKHJ0QQ6fE0Qkx1BbHMtfV2szMOp9rPmZmVpyTj5mZFefkY2ZmxS2Tvd3MOkFEvBlYhTTKxkBgQ0kT643KrDM4+bRBRKwqaVbdcdQhIraStETDbLQpjsHAZ4EADgeOAr4hqX+jkPb9+GcDOwKrA/eQRli/GSiefCJiVWA1UhIEQNLDhY795d6WSzqht+UtjmUoMJr0f1L9LIrFkON4Yzcx3FgyhhzHm4BXVctKxuHk0wIRMYo0pM9XSeMbrRkRn5F0XqHjnyPpE/n1xySdX1l2k6TtSsSRfSsi1gB+CPxI0uKHCW+Ps4AngLcAc4HXkb74P1ro+DsDI4AzgTOAlYFTCx17gYj4IvB54MlK8XzSOIYlNL5gtyaNIfZT0v/Hh4CHCsXQ8FPgP8BfWXT8x2Ii4izgA8ADlRjmAzsVjuMiYAvg0Upx0TicfFrjOOBA4MPA74HDgBt46eCl7fLmyusjgfMr719RKAYAJL0jIjYA9gWuioiHSZ/DLyTNKRjKFpLeEhG7SHouIj4G/KXg8adLmhMR9wCbSfpxRKxW8PgNnwBeK6l/Y+ovJUnHA0TEzcDbJD2X348jjUJS0jBJ7yp8zGbvBkJS/+Yi6b+RwCaSlnYQ5X5zh4MWkXQX8H7gl5KeIc2iWkpXD6+hhis8SdNINZ8LgU2BI4C/RsSHCoYxPze9Nc5/Dcp+Fo/m6T1uAQ6OiA8DKxY8fsPDQP8mGmqNNVn08x9Eanoq6Y6I2KzwMZs9wEv/RutwG6k1oDau+bTGPyPiTGBL4KMRcQrpj76U+T28Li4iPgHsRxpi/XxgO0mPRMQ6wB3AZYVCGUcaZHZYvsr+X+ArhY4Nqcbxfkl/iIifAR8BPlnw+A33ATdFxHXAgpnmSt/nAM4Gbo+IK0kXvaOA0wvHsCkpAf2T9Fl0AfMllWqChHQhMDUibmHR/4+PF4wB4Brg7oiYTmoGLf5ZOPm0xkdIbdinS3o2Ih6g7GR1gyNiPdIfdeN14+pqcME4AN4OHCfp+mqhpOkRcWipICT9KCL+CLyD1NPs/ZLa3uwWEcPyfa5XAbdExPrAL/JPHR5lYbt+bVfckk6OiGtJnTDmA3vl1oKSSta8e/Lr/FO3L5Lu70yrKwAPr9MPEbFfb8sl/bBQHA/RS41H0oYl4mjohN48uSfPlyR9OCI2Ab4PHCRJbT7u5ZJGRcSDpP+T6hd+6avsRkyvAF5LutE+RNKzNcSwAvAeXvp70fa/kYgYJenynv5eS/2dVuJZnXQvttoF/9rCMUwBdpBUWwJwzad/3pH/fS2p/fRKUhX2vcDdpPsebSfpNT0ti4glmle9vyLiO8AHqbk3D6mZ5ysAku6JiK8C5wBt7fknaVT+t2jC70lE7AT8gPQl9zbSvbd9JF1VOJQLgQ1I3c6rvxcl/ka2Ai5n4d9rVakYAIiIrwCfJt3z+hewLnA78NZSMWR/A26NiKuBBY8flGyOdfLpB0kHAOT29M0k/Su/fxXw81JxRMQQ0n2WJyVdUinfBTiZ1NZdynvojN48r5C0oHlD0tUR8a12HzQien2Op4a2/ZNICXeypMciYgfgIqB08tmM1Luqjg4wx+V/D2helv92StofWI90v+tEYGOgWHN0xcMsvC9dS3Osk09rrMOiPYqeJd1wL+V80lXlahGxFnAJcC7pS+ebBeOAzunN83hEHAJMyu8/DPyzwHFvKHCMJTEgJx0AJE2tTJtc0j2kKe1n1HFwgIj4AOkLvzrqxBBgrYJhTJc0KyL+Cmwu6WcRcVLB4wMLu8DXycmnNa4Ars69mrqAvYCLCx5/K+D1pPb0K0hP9v8GeF0Nz3d0Sm+eA4DxpJrfHFJSOLDdB216wPclbfvtPn43HskPQc/PT/gfRtmemA0rA8pfutXfi5LNsacBBwFHA18DdqPwc3DAfyJiX+CPwKdyb7OVC8dARMzjpfeJp0tar1QMTj4tIOn/ImJ3Fvbk+bakXxYMYaakuaSr/fWAQyX9rODxqzqiN08ePmZUXcfvoLb9g0lNPOuRaqXXAGMKxwDw9RqO2WympOsiYltgNUnHRMTUwjF8AvhI7o05itQRZmzhGJC04BnPiBhESsRvKxmDk0/r3As8Tm5yiogdCvbwql7B/LPGxIOk8zvhij8i3kNqYmnuXVWqt9n+dEDbvqTHSY8C1ErSDd0NtErZZsrnI2IEqQlwx9z1u+ijCPmRgx9FxP8CNwJfk/TvkjF0E9Mc4KcR8aWSx3XyaYHKeE33V4pL9vCqPuczsOk5n2KDSEJHXfGfCfwf9Y3jVWvbfqWrd7dKd/nukIFWx5IuBPYljXd3MKkHZDER8VHg28BNpAT83Yg4SNKVheOodjvvAt5Iap4uxsmnNeoer2kV0hVkI+FUa1wlB5GEDrniB/4l6fIajttQd9v+jqTfhy+TmtvOIz0GMJp67j3VPtCqpBuAG3LNfGdSZ4zStY6xpHEHHwXI4yD+ivSYRknVbufzSReKe5cMwMmnNWrt4dXbcz416IjePMCUiDiVdP+peoO7VFNotW3/AxRu28/j6xERmzV19jglj/xQWu0DrUbE5qRneoaT/l7viYj9JN3f+5Yt9TSVHn+SpkVEkWk+qrrrdl6ak09r1NrDKz+70aPCowvUfcXfsHX+tzrid8mm0K81/sAlHV3omN3pioidGk/Q52e/5tYQR2Og1d+Spt2A8gOtTiSNenE5QB7o9jzSdCil/AG4MiLOJf0/7AXMaDSDtXu0hW5G4FiEx3Z7+am7h1dvffZLjy5Q6xV/g6TunmYvadOIWCWPcF6nA4Hz88CukMby2reGODphoNWualOspMtiMZPdtcEQUs3nvfn9c/nnHZQZbeGg/O+ObT7OYnlstxapc7ymiDhU0vj8elNJf60sO13SkSXi6CQRsQ3wBRbtXbVBqSbKiLiN9OyVgAX3Ags/11KN59WkseWKTq+QB1btUeHOMN8kNXudTap1fBjYltT5oGgsTXENKX2/uJtx7uaTfk/vrX5/tJNrPi3QAT28DiQ9UAnpyuktlWUlmxSIiKNIN7kXac+XVHSMOVITy8mkDhBnkKZU+FPB43+u4LF6lG9oTwBeA2yfuxd/XNJDhUK4gYXNO437oo0BV0t3htkr/9toDm/E04ix7bH0MMrCyqT5jkraldQk3RgGbBRp9PNVIuJCSae1OwAnn9bYn3p7ePU2mVzpjhBHASPruoqs+K+kcyPiNcC/SWPflZzJdA9Jn6oWRMT5lB9+5/ukJPxN0vBCF5EuUHq9T9gqjQFWGyNLlzhmd/IDnTtLuj/f6/kE6WLkqyo7w24njLIAaaijt0iaCQsuoH9FetD0jznOtvJMpq0xXdIs0jMlm0u6gpSM6tDcjlq6XfUeyoyhtjizc1OogG2Upgtue+0rIibk2sXHIuLays8UFu38UMoajRGsJc2XdDawag1xlB5jcIGI+Axpfq0VI81kOol0xb860PbBZpvMlHQdcCt5lAXKj/gOqab1dOX988DqeaSUIt8Zrvm0Rt09vDrpxt3pwF8i4lYqvapqGNvtFNL4ev8L/D4iRpOaQtvtRFIT1+ks2hFkLikxl/Z8RAwn/45ExHbAf2uI4/484vdtLHoPrMR0BvsCb5P0XER8gzTV/YSI6AKmkprMS6l9lIXsUuDaiPgJqRKyO/DzfC+oyOCvTj6tUXcPrzdGmj0VYN3K6y7Kjq4N8A3SlWVtMyRmzwPvljQ/IrYkPeDY9pkz872Uh4DNI2JtSTMiYnvSE/0l7zk1/B9pLpvXRsSdpKv9PWuI40nS7+M2lbJSc+nMl/Rcfv0O8v3R/LtR4PCL+BLpAuWjwDHUMMoCgKQv5KbIdwEvAt+SdGXuqLNPiRjc220ZkG8q96jxwGGhWG6TVHoone7iuFvSG2s8/ndJV7SnkEYYvwpYUdJHC8exJjCTlHwHknozFX+osRLPq0qPKhARt5NGNFiF9ED4BvmiYAPgcklvKhDDuSza8WI+6Uv/AWC8pP+0O4YcR8c8E+iaTz9E98OSL1Cqh1fJ5NIHN0XEKcBkFp0hseg02tTbzAPpIdctSfcazpH0lYj4Q6FjV91ASj5XkL5oa0k8eXSBi4GV89X1jcBekkrUBr8B3En6vpuQE89epJG2S81rc303ZV2kSfZ+QpqEsYSOeSbQyacfGsOSR8TmktrepPMy8Zamf6HgL3VErJvHzaqzmQdSLWMAqUvrIRGxMjX0apL0htzjbxfghHy/4TpJpcfbOxP4EHBhHtn5k8D3WDgSRdtIuiSPPrKGpD/n4meAAyVd3+7j5xjO72lZRNxdIoYcR90PXy/g5NMaPwY2qTuIDvFjSd+v8fi/InUhPSAijpZ0Sk1x/JB04/ZmSbdFmjem+OcSEQOANUiJbwDpWbTSz5QArCzpnlg4o+rVEfHtUgeXNB2YXnlfeiDPl4iIYaSu1k8vbt02HHuR57+ACyn7/JeTT4tMzcN0NDfxlG5q6gSfooYv2Yrqc02jSfdcipN0akSMkzQvF+0g6V81hPJv0vAtZwFja6yhP5Wb3hq97kaz6NTzy6PXkWp+dQx3VOvzX+Dk0yqrk3rRNA9TXstQKjX7R+4+2pyITyh0/Oo9uNpGGo+I60hTV1fL6hheZ0/S7+F7gXfn542ul3R14Tg+CZxP6pk5E7iPdHGw3JJ0E2lenzqsIemqiPimpPnA2RFxWMkAnHxaoJPaUTvArZXXtX35Z3V25fxK5fUg0r2f4jNW5gdMr4qIoaR7Ll8EjgBeWTiUpyVtFxGvAAbmaTe2Bf5WOA5Lan/+y12tW6AT2k87Sf6CeS1pxIchkp4teOz/ksaogjTGXuN1F+l5j6IzeFbV0Q09P1S5E2msvV+Ter3dIKnoF02kOWs+L+nUStmfJL2ll82sTfKzbxNIf6f3k5//knRbqRhc82mN2ttPO0VE7AT8gNTb623AXyNin8YQLwWMKHScXjWN5twFbAq8unAMo0j3VfYF3kB6GHo74LqScWQPANvmL70DcvKru2a8XIqIjUkXZVuTBsDdiXRR8ufetms1J5/WqL39tIOcRPqCmyzpsfxQ20WkhyzbroOeeaoOIDqPNNp5sd5deTyzvYGPkSZtmwQcSRpp4WTSALAlPSdp94j4KvC7PLhnHZPaLdci4gjgM6TP/nogSM9f7Ui6aCzW+cEDi7ZG7e2nHWSApMcabyRNrTOYukjaMI/oPIJ0n+U5CiYf0pfI2/Pnvw95PDNSb8RSDzRWdQFIOpb0cOcNpJGVrayDSY+FbEOaYuI9ks4gdUzZvGQgTj6t8WnS+Fmvz+NnXUi6ylwePZKbe+ZHxNCI+BJQ9/QKxUXEhhFxEvAPUhPsdaR7gqU0j2f2a0jjmRWMoWpi44WkS0jPtyyXFyY1myPpWUmPA/crz7SbR30vWhN1s1sLSLo9IraiQ8bPqtnBpBGd1yPdyLwWGFNrRAXl5qSDgS2Ay0g1kLMLdjVvmJt7uK1CmsrhqhzfBtTT3LXIvThJd0bEYz2tbG0zr/L6xdqiwMmnJSJiI9IXzhrk5oX8TEfpaQRqlYdMeUzSRyLi96Qn6UdSz2RZdbmUNFbX2yT9HRaMAVhaJ4xnRkRMIM0QumVEVAd6HUTTbLdWxOvzc3jNr7tID70W4+TTGpcCvwWm0Flz6xQTEV8A3snCGVxXJN3E/ADwBVJPq+XBZsABpAFWHyJ1tij+d9YJ45llnTa/0fJuVN0BNPg5nxaIiDsljaw7jjpFxD3AVo025Ii4Q9KbI2IFQJJeW2+EZeXzHkWaYn0X0sXJWZ0wplhJETEs93pcv7vlqn+6dauJaz6tcUtu6/9FZSyv5c2LjcSTnQggaW5EFB84sW55OuKfk2aHXBPYj9QNfblKPqQHGUexaNfzhvmkJjlbDrnm0w+V+XwaD8stMllUqfl8OkEetfmtkp5uKl+NNIS/n2RfjkXEWrmHlRngmk+/NObz6U5ErFgylg5wAfDDiPiYpFkAEbEKqYvtpFojs05wfR5QtDGpnee/Ws75OZ8WiIjfNb0fANxeUzh1+QbwBDA9In4fEbeR5rP5Z3U8L1s+SXoD6WHXp0iT2t0TEeNrDstq5JpPP+Ruijvm19V7PXOBX9YRU13yQ2pjIuJ4Fs5Oebukf9QYlnWIDprUzjqE7/m0QEScLml5HdHAbLEi4j8snNTuV252MyefFomIfUgjB38d2EPSD2sOyaxjRMS7SaMnb0d6yr6uSe2sQzj5tECeM2U4aUiVbUhdbP8k6ehaAzPrME2T2g2TVHpSO+sQ7nDQGu8hjeE1W9J/gHeRHiw0M9IFWh5y6TbSkEuHke4B2XLKyac1Gp0NGtXIFVl0AD+z5VbTpHafJ82e2Wh+s+WUk09r/IQ0IdPqEXEUcCNpWgWz5Vqe1O440pQjjUntfk6atvnkGkOzmrmrdT9Uxqu6CJhJGtlge9KDlb+qKy6zDrIvaYTv5/K90V9KmhARXXg+n+Wak0//3MCiw+s0vA84gzS3j9nyrHlSu/GQJrWLiPqisto5+fRDniZ5gTyczCmkDggH1RKUWWfptEntrEP4nk+LRMQ7gca8KW/y8wtmwMJJ7W5l0UntrgG+VWtkVis/59NPEfEK4FRybcdJx2xREbEOlUntIuJ9wHOFJ7WzDuPk0w+5tnM2cDVwdNN8NmZm1gMnn37Ig4nOAaaz6PTZjfl8PFGWmVk33OGgfzZc/CpmZtbMNR8zMyvOvd3MzKw4Jx8zMyvO93zMWiQiBgJHkqaLXgEYTBpm6cuS/tviY20FfELSId0s2xL4vKQ9WnlMs1Zyzcesdb4LvA14p6SRwFZAABPacKw3kuaQeglJtzvxWKdzhwOzFoiI1wB3A2tLmlUpHwZsC/yWNIX0SFK3/MnAFyXNjYj5wJqS/pW3mQ+sCWwKfA14IL8eBBwMPAzcDKwG/Aw4HzgdeJY0jM1ngVMkbRoRg4FvAm8njTV4B3CEpFkR8UngEOAFYDZwsCQP9mlFuOZj1hpbAHdXEw+ApMckXUoaaPZJ4E3AlsDmwGf6sN+3khLJm4Fzga9L+gfwZWCKpAPyepsCH5G0GVBt4vs8aQy1LSRtTnom7Ru5iXAc8F5JWwE/IM2xY1aEk49Za8yj97+nXYDvSJqf7/98j77NdjtN0p359Z9I8+B05x+SpnVTPgrYFbgjIu4EdgPeIOlF4KfALRHxHdKUIOf0IR6zlnDyMWuN24BNIuKV1cKIWDciriA1eVXbuAeQmtEauvL6g5v2+3zldXfTdzT0NLTTQOBISSPzfaitgT0AJH0U+ADwd1IN6aIe9mHWck4+Zi0gaTpwATAxIlYFyP+OJzW3/Ro4PCK6ImJFYAxpTECAJ0hNcZB6yvXFXBZNXj35TT7u4IgYQBqL8KSIWCMi/gE8KWkcMJbUQcKsCCcfs9Y5lDQ75y25ieu2/P5A4AhgLeAv+UekzgTkZWdFxJ+ATYAZfTjWrcBGEfGzxaz3VeAhUkeDqaSa09G5c8OJwDUR8UfS1Aeeg8qKcW83MzMrzjUfMzMrzsnHzMyKc/IxM7PinHzMzKw4Jx8zMyvOycfMzIpz8jEzs+L+P3ZH7+WnQvySAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -197,7 +214,7 @@ "# Set the title and labels\n", "plt.xlabel('Countries')\n", "plt.ylabel('Quantity')\n", - "plt.title('10 Countries with more orders')\n", + "plt.title('10 Countries with most orders')\n", "\n", "# show the plot\n", "plt.show()" @@ -212,13 +229,26 @@ }, { "cell_type": "code", - "execution_count": 200, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -309,7 +339,7 @@ "4 12/1/10 8:26 3.39 17850.0 United Kingdom " ] }, - "execution_count": 200, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -328,17 +358,29 @@ }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nIzY2FmMMkydPxmazERMTw7Rp04iNjcVms5GcnAzA3LlzmTJlCi6Xi6ioKNq2bevNYYiIiIjINViM\nMaa6g6gu2dnZ9OjRg7S0NPcNPSJyfcodEc8od6Q20kPLRURERMRjKiZFRERExGMqJkVERETEYyom\nRURERMRjKiZFRERExGMqJkVERETEYyomRURERMRjKiZFRERExGMqJkVERETEYyomRURERMRjKiZF\nRERExGMqJkVERETEY1Zv7ry4uJgZM2Zw/PhxioqKGDt2LPfccw/Tp0/Hx8eHsLAwZs+eDcDatWtZ\ns2YNfn5+jB07lq5du1JQUMDUqVPJycnBbreTlJRESEgIe/fuZeHChVitVjp27Eh8fLw3hyEiIiIi\n1+DVmcmPPvqIkJAQ3nnnHZYvX878+fNZtGgRkydPZuXKlbhcLjZt2sTZs2dZsWIFa9asYfny5SQn\nJ1NUVMTq1atp3rw577zzDv369WPJkiUAzJkzh5dffplVq1axf/9+MjMzvTkMEREREbkGrxaTjzzy\nCBMnTgSgpKQEX19fvvrqKyIjIwGIjo5m+/bt7N+/n4iICKxWK3a7naZNm5KZmUlGRgbR0dHubXfu\n3InD4aCoqIjQ0FAAOnXqxPbt2705DBERERG5Bq8Wk7fccgv169fH4XAwceJEJk2ahDHGvT4gIACH\nw4HT6SQwMNDdXvoZp9OJ3W53b5ubm1um7cp2EREREal6Xr1mEuDkyZPEx8czfPhw+vTpw4svvuhe\n53Q6CQoKwm6343A4rtrudDrdbYGBge4C9IfbXk9KSgqpqamVODKRukG5I+IZ5Y7UFV6dmTx79iwj\nR45k6tSpDBgwAICWLVuyZ88eALZs2UJERARt2rQhIyODwsJCcnNzOXr0KGFhYYSHh5Oeng5Aeno6\nkZGR2O12bDYbWVlZGGPYunUrERER140lISGBI0eOlPlKS0vz3uBFagnljohnlDtSV3h1ZnLZsmVc\nvHiRJUuWsHjxYiwWCzNnzmTBggUUFRXRrFkzevfujcViIS4ujtjYWIwxTJ48GZvNRkxMDNOmTSM2\nNhabzUZycjIAc+fOZcqUKbhcLqKiomjbtq03hyEiIiIi12AxV17EWMdkZ2fTo0cP0tLS3Df0iMj1\nKXdEPKPckdpIDy0XEREREY+pmBQRERERj6mYFBERERGPqZgUEREREY+pmBQRERERj6mYFBERERGP\n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\nvj1ffPEFvXv3Zu/evTRv3vy6n0lISCAhIaFMW3Z2Nj169PBWmOWa/kSHaulX5EbdbLkjUlNUZ+5Y\nLBZaNG3o9X5EoIae5n744Yex2WwMGzaMpKQkEhMTqzukG/LShM46xS1yHROGti13WUREbg41cmbS\nYrEwd+7c6g6jQj5O7lfdIYjUSA8/eBcPP3hXdYchIiLXUSNnJkVERETk5qBiUkREREQ8pmJSRERE\nRDymYlJEREREPKZiUkREREQ8pmJSRERERDymYlJEREREPKZiUkREREQ8pmJSRERERDymYlJERERE\nPKZiUkREREQ8pmJSRERERDymYlJEREREPGatjk6jo6Np2rQpAOHh4UyaNIm9e/eycOFCrFYrHTt2\nJD4+HoDU1FTS09OxWq0kJibStm1bzp8/z5QpUygoKOD2229n0aJF1KtXrzqGIiIiIlKnVXkx+d13\n39GqVSuWLl1apn3OnDmkpqYSGhrK6NGjyczMxOVy8a9//Yt3332XkydPkpCQwHvvvcfixYvp27cv\n/fv357XXXmP16tU8+eSTVT0UERERkTqvyk9zHzx4kFOnTjFixAjGjBnDsWPHcDgcFBUVERoaCkCn\nTp3Ytm0bGRkZREVFAXDHHXfgcrk4d+4c//73v+ncuTNweZZz586dVT0MEREREcHLM5Pvvfceb731\nVpm22bNnM2bMGH7961+TkZHBlClTWLx4MXa73b1NQEAAWVlZ+Pv7ExwcXKbd4XDgdDoJDAx0t+Xm\n5noUX0lJCQD/+7//69HnRX6Kn//851it1XKlyU+m3JHqpNwR8Yy3cser2Th48GAGDx5cpi0/Px9f\nX18AIiIiOHPmjLtILOV0OmnQoAF+fn44nU53u8PhICgoyL19w4YNyxSW5UlJSSE1NfWq6x5//HFP\nhifyk6Slpbln429myh252Sh3RDzjrdyp8j/tUlNTCQ4O5ve//z2ZmZnccccd2O12bDYbWVlZhIaG\nsnXrVuLj4/H19eWll17iqaee4uTJkxhjCA4Opn379mzZsoX+/fuzZcsWIiMjr9tvQkICCQkJZdry\n8/Np164dGzdudBe43tKjRw/S0tK82kdV9lOVfdW2fkr7+vnPf14lff1Uyp2a21dt66e0L+VOxdTW\nn39tGlNtyZ0qLyZHjx7N1KlT3XdoL1q0CLh8A86UKVNwuVxERUXRtm1b4PLs5dChQzHG8NxzzwEw\nbtw4pk2bxtq1awkJCSE5OdmjWPz9/QFo0qRJJYzs+qrqL+mq/Iu9to2pKo9dTT1NB8qdmtRXbesH\nlDs3ojb+/GvbmGpD7lR5RgYFBbFs2bIftbdr1441a9b8qD0+Pt79mKBSjRo1Yvny5V6LUUREREQq\nRg8tFxERERGPqZgUEREREY/5zpkzZ051B1HdHnroIfVzk/dV2/qp6r68pbb9XGrjz7+29VPVfXlL\nbfu51Maff23rx5t9WYwxxit7FhEREZFaT6e5RURERMRjKiZFRERExGMqJkVERETEYyomRURERMRj\nKiZFRERExGM1951U5YiOjqZp06YAhIeHM2nSJPbu3cvChQuxWq107NjR/Vad1NRU96sdExMTadu2\nLefPn2fKlCkUFBRw++23s2jRIurVq8fnn3/OkiVLsFqtDBo0iCFDhlw3FmMMc+bM4ciRI9hsNp5/\n/nkaN25c4bEMHDgQu90OXH7l0tixY5k+fTo+Pj6EhYUxe/ZsANauXcuaNWvw8/Nj7NixdO3alYKC\nAqZOnUpOTg52u52kpCRCQkLKHIu7776bb7/9lhUrVvDdd99V6r6vPM6zZs1iw4YN3HvvvQwbNozk\n5GT3zygmJoZHHnnkJ/dTXFzMwIEDyc7OxhhDQkICPXv2rPQxjR07lhkzZrBnzx4uXLjAz3/+c8aO\nHeuVMV3rd9RblDvKHeWOZ5Q7yp06nTumlvn222/N2LFjf9Ter18/k5WVZYwxZtSoUebw4cPm0KFD\n5oknnjDGGHPixAkzaNAgY4wx8+fPN+vWrTPGGLNs2TLz5ptvmqKiIvPwww+b3NxcU1hYaAYNGmRy\ncnKuG8/GjRvN9OnTjTHG7N2714wbN67CYykoKDADBgwo0zZ27FizZ88eY4wxzz33nPnss8/MmTNn\nzKOPPmqKiopMbm6uefTRR01hYaF54403TEpKijHGmE8++cQsWLCgzLH461//asLDw03fvn0rfd9X\nHucFCxaY+++/3wwdOtScOHHCdOvWzbzxxhtlxlUZ/aSkpJguXboYY4w5cuSIadWqlVfGlJqaav74\nxz+aJ554wly4cMF07tzZa2O61u+oNyh3lDvGKHc8odxR7hhTt3On1p3mPnjwIKdOnWLEiBGMGTOG\nY8eO4XA4KCoqcr9MvVOnTmzbto2MjAyioqIAuOOOO3C5XJw7d45///vfdO7cGbj81+aOHTv473//\nS5MmTbDb7fj5+REREcGePXuuG09GRoZ7X+3atePgwYMVHktmZiZ5eXmMHDmSJ598kn379vHVV18R\nGRnpjm379u3s37+fiIgIrFYrdrudpk2bkpmZSUZGBtHR0e5td+7cWeZYNGnShCeeeILc3FwADh06\nVGn7vvI45+XlERsb6z7OeXl5fPbZZwwfPpxZs2bhdDorpZ/69eu7/2q/7bbb3L8PlT0mX19fWrZs\nSVRUFC6Xi3r16nltTFf7HT1//nyFf4duhHJHuQPKHU8od5Q7ULdzp0YXk++99x59+/Yt83X77bcz\nZswY3n77bUaPHs2UKVNwOp3uKXuAgIAAcnNzcTqdBAYGlml3OBxl2svbtjQZyuNwOMp8zmq14nK5\nKjQ+f39/Ro4cyeuvv86cOXOYMmUK5opnzF8tXoD69eu720vHfeU4StsefvhhAgICKCkpAajUfV/Z\n3rhx4zL7CA4OZuTIkaxcuZLGjRuTmpr6o+PkST+FhYU0atQIh8PBxIkTady4cZljXVljys/Pp6io\nCJvNxsSJE3n66ae9NqZrxfpTKXeUO1e2K3cqTrmj3LmyXblzWY0uJgcPHszHH39c5qt169Z0794d\ngIiICM6cOeP+YZZyOp00aNAAu92O0+l0tzscDoKCgspsX3pQ7Xb7j/YRFBR03Rh/2IfL5cLHp2KH\nvWnTpvz2t791fx8cHExOTs6PYrhWbFf2XTqOHx6LS5cuYbVevnT2yrgqY99XHue8vDx3u81mo337\n9gD07NmTzMxMAgMDK6WfkydP8sQTTzBgwAD8/f3x9fX1yphKSkr4P//n/zBgwAD69Onj1TFd+fvz\nwyT3lHJHufPDfpQ7FaPcUe78sB/lTg0vJq8mNTWVt956C7g8XX/HHXdgt9ux2WxkZWVhjGHr1q1E\nREQQHh7O1q1bMcZw4sQJjDEEBwfTvn17tmzZAsCWLVuIjIx0XzB88eJFCgsL2bNnD/fff/9142nf\nvj3p6ekA7N27l+bNm1d4LO+//z5JSUkAnDp1CofDQVRUFLt373bHFhERQZs2bcjIyKCwsJDc3FyO\nHj1KWFgY4eHh7r7T09OJjIz80bHYs2cPAQEBANx3333uUyiVse8rj/OePXvcx/nbb78lKysLgB07\ndtCqVatK6eeuu+7irbfeYsqUKTz00EMYY2jVqlWlj6lZs2Z88MEHNGrUiP79+3t1TNf6HfUG5Y5y\nR7njGeWOcqeu506tezf3xYsXmTp1Knl5eVitVp577jnuuusu9u3bx8KFC3G5XERFRfH0008Dl/8R\n2LJlC8YYEhMTad++PTk5OUybNo28vDxCQkJITk7G39+fzZs3k5qaijGGwYMHExMTc914zBV31QEs\nWrSIu+66q0JjKSoqIjExkRMnTuDj48PUqVMJDg5m1qxZFBUV0axZMxYsWIDFYuHdd99lzZo1GGMY\nN24cPXv2JD8/n2nTpnHmzBlsNhvJyck0atSI/fv38/zzz+NyuWjbti2HDh3ib3/7G8eOHePZZ5+t\ntH1feZwXLlzIu+++yz333MOwYcN477338PPz47bbbmPevHkEBAT85H6ef/553n//fSwWC8YYmjRp\nQlJSEgsWLKjUMTmdTv7xj39Qr14993UkzzzzDOvXr6/0MV3rd9QblDvKHeWOZ5Q7yp26nju1rpgU\nERERkapT605zi4iIiEjVUTEpIiIiIh5TMSkiIiIiHlMxKSIiIiIeUzEpIiIiIh5TMSkiIiIiHlMx\nWcdcunSJpKQkevfuTf/+/YmLi2PXrl2V2kd2djYzZ84ELr+j9NlnnwVg7dq1bNiwoVL7Eqkqyh0R\nzyh3aj9rdQcgVWv8+PHcfffdfPLJJ/j6+nL48GHGjBnDK6+8QkRERKX0cfz4cfdT+Vu3bk3r1q0B\n+PLLL3nooYcqpQ+RqqbcEfGMcqf208xkHZKRkcGxY8dITEx0vzu0ZcuWjBs3jsWLFxMXF+d+BdTx\n48fd75r9z3/+w4gRIxgyZAjdu3dn5cqVwOUn5D/77LPExcXRs2dPli1bBsDzzz/PwYMHmT9/Prt3\n7yYuLo4dO3bw+eef8+c//5m0tDQ6dOjgfvfn8ePHefTRR6v6cIhUmHJHxDPKnbpBxWQdcuDAAVq2\nbFnmJfQADzzwAPv27cNisZRpL11+7733+MMf/sC7777LW2+9xcsvv+ze5j//+Q9vvvkma9euZdmy\nZTgcDmbNmkXr1q3dpxksFgu/+tWv6N69OxMmTKBHjx5069aNTz/9FIAPP/yQ/v37e3PoIj+JckfE\nM8qdukHFpJCfn4/L5brm+unTp1NQUMBrr73Gq6++yqVLl9zrHnroIXx9fWnYsCHBwcHk5uZWqM+B\nAweyfv16AP7+97/Tr1+/nzYIkWqg3BHxjHKndlExWYe0bt2aw4cPU1JSAsC5c+cA2LdvH61bt3a/\nqB6guLjY/bmJEyeyadMm7rnnHiZNmlRmnzabrcxyRV/1/sADD3Dq1Ck+++wzGjduzG233ebxuES8\nTbkj4hnlTt2gYrIOiYyM5K677iIpKYni4mLWrVvHsGHDWLp0KePHjyckJISvv/4agM8++8z9ue3b\ntzNhwgS6d+/O7t27gfKT19fX1/0Pxw/bi4qK3Mv9+/dnwYIFDBw4sLKGKOIVyh0Rzyh36gYVk3XM\nkiVLAOjTpw8ffvghvr6+3Hnnnfzzn//kqaeeYtWqVQwcOJDCwkL3ZxISEoiJiWHgwIFs27aN0NBQ\nsrOzf7Tv0mtdmjVrxsWLF5k2bVqZ9R07duS1115j48aNAPzmN78hPz+fHj16eGu4IpVGuSPiGeVO\n7WcxFZ0fllotPT2dLl26VFl/xhhWrVrFsWPH3M8GE6mJlDsinlHu1B4qJqVajB8/npMnT/L6668T\nEhJS3eGI1BjKHRHPKHe8R8WkiIiIiHhM10yKiIiIiMdUTIqIiIiIx1RMioiIiIjHVEyKiIiIiMdU\nTIqIiIiIx1RMioiIiIjH/n9LlLW1ZT9UOgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, + "execution_count": 5, "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -358,9 +400,9 @@ "# filter the dataframe to just select ones in the top_countries\n", "customers = customers[customers['Country'].isin(top_countries)]\n", "\n", - "################\n", - "# Grap Section #\n", - "################\n", + "#################\n", + "# Graph Section #\n", + "#################\n", "\n", "# creates the FaceGrid\n", "g = sns.FacetGrid(customers, col=\"Country\")\n", @@ -369,22 +411,962 @@ "g.map(plt.scatter, \"Quantity\", \"UnitPrice\", alpha=1)\n", "\n", "# adds legend\n", - "g.add_legend();" + "g.add_legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### BONUS: Create your own question and answer it." + "### Step 7. Investigate why the previous results look so uninformative.\n", + "\n", + "This section might seem a bit tedious to go through. But I've thought of it as some kind of a simulation of problems one might encounter when dealing with data and other people. Besides there is a prize at the end (i.e. Section 8).\n", + "\n", + "(But feel free to jump right ahead into Section 8 if you want; it doesn't require that you finish this section.)\n", + "\n", + "#### Step 7.1 Look at the first line of code in Step 6. And try to figure out if it leads to any kind of problem.\n", + "##### Step 7.1.1 Display the first few rows of that DataFrame." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 6, + "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", + "
QuantityUnitPrice
CustomerIDCountry
12346.0United Kingdom742151.04
12347.0Iceland2458481.21
12348.0Finland2341178.71
12349.0Italy631605.10
12350.0Norway19765.30
\n", + "
" + ], + "text/plain": [ + " Quantity UnitPrice\n", + "CustomerID Country \n", + "12346.0 United Kingdom 74215 1.04\n", + "12347.0 Iceland 2458 481.21\n", + "12348.0 Finland 2341 178.71\n", + "12349.0 Italy 631 605.10\n", + "12350.0 Norway 197 65.30" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#This takes our initial dataframe groups it primarily by 'CustomerID' and secondarily by 'Country'.\n", + "#It sums all the (non-indexical) columns that have numerical values under each group.\n", + "customers = online_rt.groupby(['CustomerID','Country']).sum().head()\n", + "\n", + "#Here's what it looks like:\n", + "customers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.1.2 Think about what that piece of code does and display the dtype of `UnitPrice`" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('float64')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "customers.UnitPrice.dtype\n", + "#So it's 'float64'\n", + "#But why did we sum 'UnitPrice', to begin with?\n", + "#If 'UnitPrice' wasn't something that we were interested in then it would be OK\n", + "#since we wouldn't care whether UnitPrice was being summed or not.\n", + "#But we want our graphs to reflect 'UnitPrice'!\n", + "#Note that summing up 'UnitPrice' can be highly misleading.\n", + "#It doesn't tell us much as to what the customer is doing.\n", + "#Suppose, a customer places one order of 1000 items that are worth $1 each.\n", + "#Another customer places a thousand orders of 1 item worth $1.\n", + "#There isn't much of a difference between what the former and the latter customers did.\n", + "#After all, they've spent the same amount of money.\n", + "#so we should be careful when we're summing columns. Sometimes we intend to sum just one column\n", + "#('Quantity' in this case) and another column like UnitPrice gets ito the mix." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.1.3 Pull data from `online_rt`for `CustomerID`s 12346.0 and 12347.0." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
42896657351122423REGENCY CAKESTAND 3 TIER610/31/11 12:2512.7512347.0Iceland
28663756203222423REGENCY CAKESTAND 3 TIER38/2/11 8:4812.7512347.0Iceland
7226754223722423REGENCY CAKESTAND 3 TIER31/26/11 14:3012.7512347.0Iceland
14830054922222423REGENCY CAKESTAND 3 TIER34/7/11 10:4312.7512347.0Iceland
42896757351123173REGENCY TEAPOT ROSES210/31/11 12:259.9512347.0Iceland
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "428966 573511 22423 REGENCY CAKESTAND 3 TIER 6 \n", + "286637 562032 22423 REGENCY CAKESTAND 3 TIER 3 \n", + "72267 542237 22423 REGENCY CAKESTAND 3 TIER 3 \n", + "148300 549222 22423 REGENCY CAKESTAND 3 TIER 3 \n", + "428967 573511 23173 REGENCY TEAPOT ROSES 2 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "428966 10/31/11 12:25 12.75 12347.0 Iceland \n", + "286637 8/2/11 8:48 12.75 12347.0 Iceland \n", + "72267 1/26/11 14:30 12.75 12347.0 Iceland \n", + "148300 4/7/11 10:43 12.75 12347.0 Iceland \n", + "428967 10/31/11 12:25 9.95 12347.0 Iceland " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
6161954143123166MEDIUM CERAMIC TOP STORAGE JAR742151/18/11 10:011.0412346.0United Kingdom
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "61619 541431 23166 MEDIUM CERAMIC TOP STORAGE JAR 74215 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "61619 1/18/11 10:01 1.04 12346.0 United Kingdom " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(online_rt[online_rt.CustomerID == 12347.0].\n", + " sort_values(by='UnitPrice', ascending = False).head())\n", + "display(online_rt[online_rt.CustomerID == 12346.0].\n", + " sort_values(by='UnitPrice', ascending = False).head())\n", + "#The result is exactly what we'd suspected. Customer 12346.0 placed\n", + "#one giant order, whereas 12347.0 placed a lot of smaller orders.\n", + "#So we've identified one potential reason why our plots looked so weird at section 6.\n", + "#At this stage we need to go back to the initial problem we've specified at section 6.\n", + "#And make it more precise." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 7.2 Reinterpreting the initial problem.\n", + "\n", + "To reiterate the question that we were dealing with: \n", + "\"Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries\"\n", + "\n", + "The question is open to a set of different interpretations.\n", + "We need to disambiguate.\n", + "\n", + "We could do a single plot by looking at all the data from the top 3 countries.\n", + "Or we could do one plot per country. To keep things consistent with the rest of the exercise,\n", + "let's stick to the latter oprion. So that's settled.\n", + "\n", + "But \"top 3 countries\" with respect to what? Two answers suggest themselves:\n", + "Total sales volume (i.e. total quantity sold) or total sales (i.e. revenue).\n", + "This exercise goes for sales volume, so let's stick to that.\n", + "\n", + "##### Step 7.2.1 Find out the top 3 countries in terms of sales volume." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Netherlands', 'EIRE', 'Germany'], dtype='object', name='Country')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sales_volume = online_rt.groupby('Country').Quantity.sum().sort_values(ascending=False)\n", + "\n", + "top3 = sales_volume.index[1:4] #We are excluding UK\n", + "top3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.2.2 \n", + "\n", + "Now that we have the top 3 countries, we can focus on the rest of the problem: \n", + "\"Quantity per UnitPrice by CustomerID\". \n", + "We need to unpack that.\n", + "\n", + "\"by CustomerID\" part is easy. That means we're going to be plotting one dot per CustomerID's on our plot. In other words, we're going to be grouping by CustomerID.\n", + "\n", + "\"Quantity per UnitPrice\" is trickier. Here's what we know: \n", + "*One axis will represent a Quantity assigned to a given customer. This is easy; we can just plot the total Quantity for each customer. \n", + "*The other axis will represent a UnitPrice assigned to a given customer. Remember a single customer can have any number of orders with different prices, so summing up prices isn't quite helpful. Besides it's not quite clear what we mean when we say \"unit price per customer\"; it sounds like price of the customer! A reasonable alternative is that we assign each customer the average amount each has paid per item. So let's settle that question in that manner.\n", + "\n", + "#### Step 7.3 Modify, select and plot data\n", + "##### Step 7.3.1 Add a column to online_rt called `Revenue` calculate the revenue (Quantity * UnitPrice) from each sale.\n", + "We will use this later to figure out an average price per customer." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryRevenue
053636585123AWHITE HANGING HEART T-LIGHT HOLDER612/1/10 8:262.5517850.0United Kingdom15.30
153636571053WHITE METAL LANTERN612/1/10 8:263.3917850.0United Kingdom20.34
253636584406BCREAM CUPID HEARTS COAT HANGER812/1/10 8:262.7517850.0United Kingdom22.00
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE612/1/10 8:263.3917850.0United Kingdom20.34
453636584029ERED WOOLLY HOTTIE WHITE HEART.612/1/10 8:263.3917850.0United Kingdom20.34
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", + "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country Revenue \n", + "0 12/1/10 8:26 2.55 17850.0 United Kingdom 15.30 \n", + "1 12/1/10 8:26 3.39 17850.0 United Kingdom 20.34 \n", + "2 12/1/10 8:26 2.75 17850.0 United Kingdom 22.00 \n", + "3 12/1/10 8:26 3.39 17850.0 United Kingdom 20.34 \n", + "4 12/1/10 8:26 3.39 17850.0 United Kingdom 20.34 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "online_rt['Revenue'] = online_rt.Quantity * online_rt.UnitPrice\n", + "online_rt.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.3.2 Group by `CustomerID` and `Country` and find out the average price (`AvgPrice`) each customer spends per unit." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "
QuantityRevenueAvgPriceCountry
CustomerIDCountry
12426.0Germany258582.732.258643Germany
12427.0Germany533825.801.549343Germany
12468.0Germany366729.541.993279Germany
12471.0Germany821219824.052.414034Germany
12472.0Germany41486572.111.584405Germany
\n", + "
" + ], + "text/plain": [ + " Quantity Revenue AvgPrice Country\n", + "CustomerID Country \n", + "12426.0 Germany 258 582.73 2.258643 Germany\n", + "12427.0 Germany 533 825.80 1.549343 Germany\n", + "12468.0 Germany 366 729.54 1.993279 Germany\n", + "12471.0 Germany 8212 19824.05 2.414034 Germany\n", + "12472.0 Germany 4148 6572.11 1.584405 Germany" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "grouped = online_rt[online_rt.Country.isin(top3)].groupby(['CustomerID','Country'])\n", + "\n", + "plottable = grouped['Quantity','Revenue'].agg('sum')\n", + "plottable['AvgPrice'] = plottable.Revenue / plottable.Quantity\n", + "\n", + "# get the value of the index and put in the column Country\n", + "plottable['Country'] = plottable.index.get_level_values(1)\n", + "plottable.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.3.3 Plot" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "####################\n", + "# Graph Section v 2#\n", + "####################\n", + "\n", + "# creates the FaceGrid\n", + "g = sns.FacetGrid(plottable, col=\"Country\")\n", + "\n", + "# map over a make a scatterplot\n", + "g.map(plt.scatter, \"Quantity\", \"AvgPrice\", alpha=1)\n", + "\n", + "# adds legend\n", + "g.add_legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 7.4 What to do now?\n", + "We aren't much better-off than what we started with. The data are still extremely scattered around and don't seem quite informative.\n", + "\n", + "But we shouldn't despair!\n", + "There are two things to realize:\n", + "1) The data seem to be skewed towaards the axes (e.g. we don't have any values where Quantity = 50000 and AvgPrice = 5). So that might suggest a trend.\n", + "2) We have more data! We've only been looking at the data from 3 different countries and they are plotted on different graphs.\n", + "\n", + "So: we should plot the data regardless of `Country` and hopefully see a less scattered graph.\n", + "\n", + "##### Step 7.4.1 Plot the data for each `CustomerID` on a single graph" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "grouped = online_rt.groupby(['CustomerID'])\n", + "plottable = grouped['Quantity','Revenue'].agg('sum')\n", + "plottable['AvgPrice'] = plottable.Revenue / plottable.Quantity\n", + "\n", + "# map over a make a scatterplot\n", + "plt.scatter(plottable.Quantity, plottable.AvgPrice)\n", + "plt.plot()\n", + "\n", + "\n", + "#Turns out the graph is still extremely skewed towards the axes like an exponential decay function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.4.2 Zoom in so we can see that curve more clearly" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "grouped = online_rt.groupby(['CustomerID','Country'])\n", + "plottable = grouped.agg({'Quantity': 'sum',\n", + " 'Revenue': 'sum'})\n", + "plottable['AvgPrice'] = plottable.Revenue / plottable.Quantity\n", + "\n", + "# map over a make a scatterplot\n", + "plt.scatter(plottable.Quantity, plottable.AvgPrice)\n", + "\n", + "#Zooming in. (I'm starting the axes from a negative value so that\n", + "#the dots can be plotted in the graph completely.)\n", + "plt.xlim(-40,2000) \n", + "plt.ylim(-1,80)\n", + "\n", + "plt.plot()\n", + "\n", + "\n", + "#And there is still that pattern, this time in close-up!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Plot a line chart showing revenue (y) per UnitPrice (x).\n", + "\n", + "Did Step 7 give us any insights about the data? Sure! As average price increases, the quantity ordered decreses. But that's hardly surprising. It would be surprising if that wasn't the case!\n", + "\n", + "Nevertheless the rate of drop in quantity is so drastic, it makes me wonder how our revenue changes with respect to item price. It would not be that surprising if it didn't change that much. But it would be interesting to know whether most of our revenue comes from expensive or inexpensive items, and how that relation looks like.\n", + "\n", + "That is what we are going to do now.\n", + "\n", + "#### 8.1 Group `UnitPrice` by intervals of 1 for prices [0,50), and sum `Quantity` and `Revenue`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "UnitPrice\n", + "(0, 1] 1.107775e+06\n", + "(1, 2] 2.691765e+06\n", + "(2, 3] 2.024143e+06\n", + "(3, 4] 8.651018e+05\n", + "(4, 5] 1.219377e+06\n", + "Name: Revenue, dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#These are the values for the graph.\n", + "#They are used both in selecting data from\n", + "#the DataFrame and plotting the data so I've assigned\n", + "#them to variables to increase consistency and make things easier\n", + "#when playing with the variables.\n", + "price_start = 0 \n", + "price_end = 50\n", + "price_interval = 1\n", + "\n", + "#Creating the buckets to collect the data accordingly\n", + "buckets = np.arange(price_start,price_end,price_interval)\n", + "\n", + "#Select the data and sum\n", + "revenue_per_price = online_rt.groupby(pd.cut(online_rt.UnitPrice, buckets)).Revenue.sum()\n", + "revenue_per_price.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8.3 Plot." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "revenue_per_price.plot()\n", + "plt.xlabel('Unit Price (in intervals of '+str(price_interval)+')')\n", + "plt.ylabel('Revenue')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8.4 Make it look nicer.\n", + "x-axis needs values. \n", + "y-axis isn't that easy to read; show in terms of millions." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "revenue_per_price.plot()\n", + "\n", + "#Place labels\n", + "plt.xlabel('Unit Price (in buckets of '+str(price_interval)+')') \n", + "plt.ylabel('Revenue')\n", + "\n", + "#Even though the data is bucketed in intervals of 1,\n", + "#I'll plot ticks a little bit further apart from each other to avoid cluttering.\n", + "plt.xticks(np.arange(price_start,price_end,3),\n", + " np.arange(price_start,price_end,3))\n", + "plt.yticks([0, 500000, 1000000, 1500000, 2000000, 2500000],\n", + " ['0', '$0.5M', '$1M', '$1.5M', '$2M', '$2.5M'])\n", + "plt.show()\n", + "\n", + "#Looks like a major chunk of our revenue comes from items worth $0-$3!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### BONUS: Create your own question and answer it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [] } diff --git a/07_Visualization/Online_Retail/Solutions.ipynb b/07_Visualization/Online_Retail/Solutions.ipynb index 55efdf5be..1c504d20e 100644 --- a/07_Visualization/Online_Retail/Solutions.ipynb +++ b/07_Visualization/Online_Retail/Solutions.ipynb @@ -20,21 +20,10 @@ }, { "cell_type": "code", - "execution_count": 197, + "execution_count": 1, "metadata": {}, "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "# set the graphs to show in the jupyter notebook\n", - "%matplotlib inline\n", - "\n", - "# set seabor graphs to a better style\n", - "sns.set(style=\"ticks\")" - ] + "source": [] }, { "cell_type": "markdown", @@ -47,18 +36,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Assign it to a variable called online_rt" + "### Step 3. Assign it to a variable called online_rt\n", + "Note: if you receive a utf-8 decode error, set `encoding = 'latin1'` in `pd.read_csv()`." ] }, { "cell_type": "code", - "execution_count": 198, + "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -149,7 +152,7 @@ "4 12/1/10 8:26 3.39 17850.0 United Kingdom " ] }, - "execution_count": 198, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -165,17 +168,19 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -190,13 +195,26 @@ }, { "cell_type": "code", - "execution_count": 200, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -287,7 +305,7 @@ "4 12/1/10 8:26 3.39 17850.0 United Kingdom " ] }, - "execution_count": 200, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -303,17 +321,29 @@ }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nIzY2FmMMkydPxmazERMTw7Rp04iNjcVms5GcnAzA3LlzmTJlCi6Xi6ioKNq2bevNYYiIiIjINViM\nMaa6g6gu2dnZ9OjRg7S0NPcNPSJyfcodEc8od6Q20kPLRURERMRjKiZFRERExGMqJkVERETEYyom\nRURERMRjKiZFRERExGMqJkVERETEYyomRURERMRjKiZFRERExGMqJkVERETEYyomRURERMRjKiZF\nRERExGMqJkVERETEY1Zv7ry4uJgZM2Zw/PhxioqKGDt2LPfccw/Tp0/Hx8eHsLAwZs+eDcDatWtZ\ns2YNfn5+jB07lq5du1JQUMDUqVPJycnBbreTlJRESEgIe/fuZeHChVitVjp27Eh8fLw3hyEiIiIi\n1+DVmcmPPvqIkJAQ3nnnHZYvX878+fNZtGgRkydPZuXKlbhcLjZt2sTZs2dZsWIFa9asYfny5SQn\nJ1NUVMTq1atp3rw577zzDv369WPJkiUAzJkzh5dffplVq1axf/9+MjMzvTkMEREREbkGrxaTjzzy\nCBMnTgSgpKQEX19fvvrqKyIjIwGIjo5m+/bt7N+/n4iICKxWK3a7naZNm5KZmUlGRgbR0dHubXfu\n3InD4aCoqIjQ0FAAOnXqxPbt2705DBERERG5Bq8Wk7fccgv169fH4XAwceJEJk2ahDHGvT4gIACH\nw4HT6SQwMNDdXvoZp9OJ3W53b5ubm1um7cp2EREREal6Xr1mEuDkyZPEx8czfPhw+vTpw4svvuhe\n53Q6CQoKwm6343A4rtrudDrdbYGBge4C9IfbXk9KSgqpqamVODKRukG5I+IZ5Y7UFV6dmTx79iwj\nR45k6tSpDBgwAICWLVuyZ88eALZs2UJERARt2rQhIyODwsJCcnNzOXr0KGFhYYSHh5Oeng5Aeno6\nkZGR2O12bDYbWVlZGGPYunUrERER140lISGBI0eOlPlKS0vz3uBFagnljohnlDtSV3h1ZnLZsmVc\nvHiRJUuWsHjxYiwWCzNnzmTBggUUFRXRrFkzevfujcViIS4ujtjYWIwxTJ48GZvNRkxMDNOmTSM2\nNhabzUZycjIAc+fOZcqUKbhcLqKiomjbtq03hyEiIiIi12AxV17EWMdkZ2fTo0cP0tLS3Df0iMj1\nKXdEPKPckdpIDy0XEREREY+pmBQRERERj6mYFBERERGPqZgUEREREY+pmBQRERERj6mYFBERERGP\n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\nvj1ffPEFvXv3Zu/evTRv3vy6n0lISCAhIaFMW3Z2Nj169PBWmOWa/kSHaulX5EbdbLkjUlNUZ+5Y\nLBZaNG3o9X5EoIae5n744Yex2WwMGzaMpKQkEhMTqzukG/LShM46xS1yHROGti13WUREbg41cmbS\nYrEwd+7c6g6jQj5O7lfdIYjUSA8/eBcPP3hXdYchIiLXUSNnJkVERETk5qBiUkREREQ8pmJSRERE\nRDymYlJEREREPKZiUkREREQ8pmJSRERERDymYlJEREREPKZiUkREREQ8pmJSRERERDymYlJERERE\nPKZiUkREREQ8pmJSRERERDymYlJEREREPGatjk6jo6Np2rQpAOHh4UyaNIm9e/eycOFCrFYrHTt2\nJD4+HoDU1FTS09OxWq0kJibStm1bzp8/z5QpUygoKOD2229n0aJF1KtXrzqGIiIiIlKnVXkx+d13\n39GqVSuWLl1apn3OnDmkpqYSGhrK6NGjyczMxOVy8a9//Yt3332XkydPkpCQwHvvvcfixYvp27cv\n/fv357XXXmP16tU8+eSTVT0UERERkTqvyk9zHzx4kFOnTjFixAjGjBnDsWPHcDgcFBUVERoaCkCn\nTp3Ytm0bGRkZREVFAXDHHXfgcrk4d+4c//73v+ncuTNweZZz586dVT0MEREREcHLM5Pvvfceb731\nVpm22bNnM2bMGH7961+TkZHBlClTWLx4MXa73b1NQEAAWVlZ+Pv7ExwcXKbd4XDgdDoJDAx0t+Xm\n5noUX0lJCQD/+7//69HnRX6Kn//851it1XKlyU+m3JHqpNwR8Yy3cser2Th48GAGDx5cpi0/Px9f\nX18AIiIiOHPmjLtILOV0OmnQoAF+fn44nU53u8PhICgoyL19w4YNyxSW5UlJSSE1NfWq6x5//HFP\nhifyk6Slpbln429myh252Sh3RDzjrdyp8j/tUlNTCQ4O5ve//z2ZmZnccccd2O12bDYbWVlZhIaG\nsnXrVuLj4/H19eWll17iqaee4uTJkxhjCA4Opn379mzZsoX+/fuzZcsWIiMjr9tvQkICCQkJZdry\n8/Np164dGzdudBe43tKjRw/S0tK82kdV9lOVfdW2fkr7+vnPf14lff1Uyp2a21dt66e0L+VOxdTW\nn39tGlNtyZ0qLyZHjx7N1KlT3XdoL1q0CLh8A86UKVNwuVxERUXRtm1b4PLs5dChQzHG8NxzzwEw\nbtw4pk2bxtq1awkJCSE5OdmjWPz9/QFo0qRJJYzs+qrqL+mq/Iu9to2pKo9dTT1NB8qdmtRXbesH\nlDs3ojb+/GvbmGpD7lR5RgYFBbFs2bIftbdr1441a9b8qD0+Pt79mKBSjRo1Yvny5V6LUUREREQq\nRg8tFxERERGPqZgUEREREY/5zpkzZ051B1HdHnroIfVzk/dV2/qp6r68pbb9XGrjz7+29VPVfXlL\nbfu51Maff23rx5t9WYwxxit7FhEREZFaT6e5RURERMRjKiZFRERExGMqJkVERETEYyomRURERMRj\nKiZFRERExGM1951U5YiOjqZp06YAhIeHM2nSJPbu3cvChQuxWq107NjR/Vad1NRU96sdExMTadu2\nLefPn2fKlCkUFBRw++23s2jRIurVq8fnn3/OkiVLsFqtDBo0iCFDhlw3FmMMc+bM4ciRI9hsNp5/\n/nkaN25c4bEMHDgQu90OXH7l0tixY5k+fTo+Pj6EhYUxe/ZsANauXcuaNWvw8/Nj7NixdO3alYKC\nAqZOnUpOTg52u52kpCRCQkLKHIu7776bb7/9lhUrVvDdd99V6r6vPM6zZs1iw4YN3HvvvQwbNozk\n5GT3zygmJoZHHnnkJ/dTXFzMwIEDyc7OxhhDQkICPXv2rPQxjR07lhkzZrBnzx4uXLjAz3/+c8aO\nHeuVMV3rd9RblDvKHeWOZ5Q7yp06nTumlvn222/N2LFjf9Ter18/k5WVZYwxZtSoUebw4cPm0KFD\n5oknnjDGGHPixAkzaNAgY4wx8+fPN+vWrTPGGLNs2TLz5ptvmqKiIvPwww+b3NxcU1hYaAYNGmRy\ncnKuG8/GjRvN9OnTjTHG7N2714wbN67CYykoKDADBgwo0zZ27FizZ88eY4wxzz33nPnss8/MmTNn\nzKOPPmqKiopMbm6uefTRR01hYaF54403TEpKijHGmE8++cQsWLCgzLH461//asLDw03fvn0rfd9X\nHucFCxaY+++/3wwdOtScOHHCdOvWzbzxxhtlxlUZ/aSkpJguXboYY4w5cuSIadWqlVfGlJqaav74\nxz+aJ554wly4cMF07tzZa2O61u+oNyh3lDvGKHc8odxR7hhTt3On1p3mPnjwIKdOnWLEiBGMGTOG\nY8eO4XA4KCoqcr9MvVOnTmzbto2MjAyioqIAuOOOO3C5XJw7d45///vfdO7cGbj81+aOHTv473//\nS5MmTbDb7fj5+REREcGePXuuG09GRoZ7X+3atePgwYMVHktmZiZ5eXmMHDmSJ598kn379vHVV18R\nGRnpjm379u3s37+fiIgIrFYrdrudpk2bkpmZSUZGBtHR0e5td+7cWeZYNGnShCeeeILc3FwADh06\nVGn7vvI45+XlERsb6z7OeXl5fPbZZwwfPpxZs2bhdDorpZ/69eu7/2q/7bbb3L8PlT0mX19fWrZs\nSVRUFC6Xi3r16nltTFf7HT1//nyFf4duhHJHuQPKHU8od5Q7ULdzp0YXk++99x59+/Yt83X77bcz\nZswY3n77bUaPHs2UKVNwOp3uKXuAgIAAcnNzcTqdBAYGlml3OBxl2svbtjQZyuNwOMp8zmq14nK5\nKjQ+f39/Ro4cyeuvv86cOXOYMmUK5opnzF8tXoD69eu720vHfeU4StsefvhhAgICKCkpAajUfV/Z\n3rhx4zL7CA4OZuTIkaxcuZLGjRuTmpr6o+PkST+FhYU0atQIh8PBxIkTady4cZljXVljys/Pp6io\nCJvNxsSJE3n66ae9NqZrxfpTKXeUO1e2K3cqTrmj3LmyXblzWY0uJgcPHszHH39c5qt169Z0794d\ngIiICM6cOeP+YZZyOp00aNAAu92O0+l0tzscDoKCgspsX3pQ7Xb7j/YRFBR03Rh/2IfL5cLHp2KH\nvWnTpvz2t791fx8cHExOTs6PYrhWbFf2XTqOHx6LS5cuYbVevnT2yrgqY99XHue8vDx3u81mo337\n9gD07NmTzMxMAgMDK6WfkydP8sQTTzBgwAD8/f3x9fX1yphKSkr4P//n/zBgwAD69Onj1TFd+fvz\nwyT3lHJHufPDfpQ7FaPcUe78sB/lTg0vJq8mNTWVt956C7g8XX/HHXdgt9ux2WxkZWVhjGHr1q1E\nREQQHh7O1q1bMcZw4sQJjDEEBwfTvn17tmzZAsCWLVuIjIx0XzB88eJFCgsL2bNnD/fff/9142nf\nvj3p6ekA7N27l+bNm1d4LO+//z5JSUkAnDp1CofDQVRUFLt373bHFhERQZs2bcjIyKCwsJDc3FyO\nHj1KWFgY4eHh7r7T09OJjIz80bHYs2cPAQEBANx3333uUyiVse8rj/OePXvcx/nbb78lKysLgB07\ndtCqVatK6eeuu+7irbfeYsqUKTz00EMYY2jVqlWlj6lZs2Z88MEHNGrUiP79+3t1TNf6HfUG5Y5y\nR7njGeWOcqeu506tezf3xYsXmTp1Knl5eVitVp577jnuuusu9u3bx8KFC3G5XERFRfH0008Dl/8R\n2LJlC8YYEhMTad++PTk5OUybNo28vDxCQkJITk7G39+fzZs3k5qaijGGwYMHExMTc914zBV31QEs\nWrSIu+66q0JjKSoqIjExkRMnTuDj48PUqVMJDg5m1qxZFBUV0axZMxYsWIDFYuHdd99lzZo1GGMY\nN24cPXv2JD8/n2nTpnHmzBlsNhvJyck0atSI/fv38/zzz+NyuWjbti2HDh3ib3/7G8eOHePZZ5+t\ntH1feZwXLlzIu+++yz333MOwYcN477338PPz47bbbmPevHkEBAT85H6ef/553n//fSwWC8YYmjRp\nQlJSEgsWLKjUMTmdTv7xj39Qr14993UkzzzzDOvXr6/0MV3rd9QblDvKHeWOZ5Q7yp26nju1rpgU\nERERkapT605zi4iIiEjVUTEpIiIiIh5TMSkiIiIiHlMxKSIiIiIeUzEpIiIiIh5TMSkiIiIiHlMx\nWcdcunSJpKQkevfuTf/+/YmLi2PXrl2V2kd2djYzZ84ELr+j9NlnnwVg7dq1bNiwoVL7Eqkqyh0R\nzyh3aj9rdQcgVWv8+PHcfffdfPLJJ/j6+nL48GHGjBnDK6+8QkRERKX0cfz4cfdT+Vu3bk3r1q0B\n+PLLL3nooYcqpQ+RqqbcEfGMcqf208xkHZKRkcGxY8dITEx0vzu0ZcuWjBs3jsWLFxMXF+d+BdTx\n48fd75r9z3/+w4gRIxgyZAjdu3dn5cqVwOUn5D/77LPExcXRs2dPli1bBsDzzz/PwYMHmT9/Prt3\n7yYuLo4dO3bw+eef8+c//5m0tDQ6dOjgfvfn8ePHefTRR6v6cIhUmHJHxDPKnbpBxWQdcuDAAVq2\nbFnmJfQADzzwAPv27cNisZRpL11+7733+MMf/sC7777LW2+9xcsvv+ze5j//+Q9vvvkma9euZdmy\nZTgcDmbNmkXr1q3dpxksFgu/+tWv6N69OxMmTKBHjx5069aNTz/9FIAPP/yQ/v37e3PoIj+JckfE\nM8qdukHFpJCfn4/L5brm+unTp1NQUMBrr73Gq6++yqVLl9zrHnroIXx9fWnYsCHBwcHk5uZWqM+B\nAweyfv16AP7+97/Tr1+/nzYIkWqg3BHxjHKndlExWYe0bt2aw4cPU1JSAsC5c+cA2LdvH61bt3a/\nqB6guLjY/bmJEyeyadMm7rnnHiZNmlRmnzabrcxyRV/1/sADD3Dq1Ck+++wzGjduzG233ebxuES8\nTbkj4hnlTt2gYrIOiYyM5K677iIpKYni4mLWrVvHsGHDWLp0KePHjyckJISvv/4agM8++8z9ue3b\ntzNhwgS6d+/O7t27gfKT19fX1/0Pxw/bi4qK3Mv9+/dnwYIFDBw4sLKGKOIVyh0Rzyh36gYVk3XM\nkiVLAOjTpw8ffvghvr6+3Hnnnfzzn//kqaeeYtWqVQwcOJDCwkL3ZxISEoiJiWHgwIFs27aN0NBQ\nsrOzf7Tv0mtdmjVrxsWLF5k2bVqZ9R07duS1115j48aNAPzmN78hPz+fHj16eGu4IpVGuSPiGeVO\n7WcxFZ0fllotPT2dLl26VFl/xhhWrVrFsWPH3M8GE6mJlDsinlHu1B4qJqVajB8/npMnT/L6668T\nEhJS3eGI1BjKHRHPKHe8R8WkiIiIiHhM10yKiIiIiMdUTIqIiIiIx1RMioiIiIjHVEyKiIiIiMdU\nTIqIiIiIx1RMioiIiIjH/n9LlLW1ZT9UOgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, + "execution_count": 5, "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -323,15 +353,827 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### BONUS: Create your own question and answer it." + "### Step 7. Investigate why the previous results look so uninformative.\n", + "\n", + "This section might seem a bit tedious to go through. But I've thought of it as some kind of a simulation of problems one might encounter when dealing with data and other people. Besides there is a prize at the end (i.e. Section 8).\n", + "\n", + "(But feel free to jump right ahead into Section 8 if you want; it doesn't require that you finish this section.)\n", + "\n", + "#### Step 7.1 Look at the first line of code in Step 6. And try to figure out if it leads to any kind of problem.\n", + "##### Step 7.1.1 Display the first few rows of that DataFrame." ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, + "execution_count": 6, + "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", + "
QuantityUnitPrice
CustomerIDCountry
12346.0United Kingdom742151.04
12347.0Iceland2458481.21
12348.0Finland2341178.71
12349.0Italy631605.10
12350.0Norway19765.30
\n", + "
" + ], + "text/plain": [ + " Quantity UnitPrice\n", + "CustomerID Country \n", + "12346.0 United Kingdom 74215 1.04\n", + "12347.0 Iceland 2458 481.21\n", + "12348.0 Finland 2341 178.71\n", + "12349.0 Italy 631 605.10\n", + "12350.0 Norway 197 65.30" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.1.2 Think about what that piece of code does and display the dtype of `UnitPrice`" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('float64')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.1.3 Pull data from `online_rt`for `CustomerID`s 12346.0 and 12347.0." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
42896657351122423REGENCY CAKESTAND 3 TIER610/31/11 12:2512.7512347.0Iceland
28663756203222423REGENCY CAKESTAND 3 TIER38/2/11 8:4812.7512347.0Iceland
7226754223722423REGENCY CAKESTAND 3 TIER31/26/11 14:3012.7512347.0Iceland
14830054922222423REGENCY CAKESTAND 3 TIER34/7/11 10:4312.7512347.0Iceland
42896757351123173REGENCY TEAPOT ROSES210/31/11 12:259.9512347.0Iceland
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "428966 573511 22423 REGENCY CAKESTAND 3 TIER 6 \n", + "286637 562032 22423 REGENCY CAKESTAND 3 TIER 3 \n", + "72267 542237 22423 REGENCY CAKESTAND 3 TIER 3 \n", + "148300 549222 22423 REGENCY CAKESTAND 3 TIER 3 \n", + "428967 573511 23173 REGENCY TEAPOT ROSES 2 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "428966 10/31/11 12:25 12.75 12347.0 Iceland \n", + "286637 8/2/11 8:48 12.75 12347.0 Iceland \n", + "72267 1/26/11 14:30 12.75 12347.0 Iceland \n", + "148300 4/7/11 10:43 12.75 12347.0 Iceland \n", + "428967 10/31/11 12:25 9.95 12347.0 Iceland " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountry
6161954143123166MEDIUM CERAMIC TOP STORAGE JAR742151/18/11 10:011.0412346.0United Kingdom
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "61619 541431 23166 MEDIUM CERAMIC TOP STORAGE JAR 74215 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country \n", + "61619 1/18/11 10:01 1.04 12346.0 United Kingdom " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 7.2 Reinterpreting the initial problem.\n", + "\n", + "To reiterate the question that we were dealing with: \n", + "\"Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries\"\n", + "\n", + "The question is open to a set of different interpretations.\n", + "We need to disambiguate.\n", + "\n", + "We could do a single plot by looking at all the data from the top 3 countries.\n", + "Or we could do one plot per country. To keep things consistent with the rest of the exercise,\n", + "let's stick to the latter oprion. So that's settled.\n", + "\n", + "But \"top 3 countries\" with respect to what? Two answers suggest themselves:\n", + "Total sales volume (i.e. total quantity sold) or total sales (i.e. revenue).\n", + "This exercise goes for sales volume, so let's stick to that.\n", + "\n", + "##### Step 7.2.1 Find out the top 3 countries in terms of sales volume." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Netherlands', 'EIRE', 'Germany'], dtype='object', name='Country')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.2.2 \n", + "\n", + "Now that we have the top 3 countries, we can focus on the rest of the problem: \n", + "\"Quantity per UnitPrice by CustomerID\". \n", + "We need to unpack that.\n", + "\n", + "\"by CustomerID\" part is easy. That means we're going to be plotting one dot per CustomerID's on our plot. In other words, we're going to be grouping by CustomerID.\n", + "\n", + "\"Quantity per UnitPrice\" is trickier. Here's what we know: \n", + "*One axis will represent a Quantity assigned to a given customer. This is easy; we can just plot the total Quantity for each customer. \n", + "*The other axis will represent a UnitPrice assigned to a given customer. Remember a single customer can have any number of orders with different prices, so summing up prices isn't quite helpful. Besides it's not quite clear what we mean when we say \"unit price per customer\"; it sounds like price of the customer! A reasonable alternative is that we assign each customer the average amount each has paid per item. So let's settle that question in that manner.\n", + "\n", + "#### Step 7.3 Modify, select and plot data\n", + "##### Step 7.3.1 Add a column to online_rt called `Revenue` calculate the revenue (Quantity * UnitPrice) from each sale.\n", + "We will use this later to figure out an average price per customer." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
InvoiceNoStockCodeDescriptionQuantityInvoiceDateUnitPriceCustomerIDCountryRevenue
053636585123AWHITE HANGING HEART T-LIGHT HOLDER612/1/10 8:262.5517850.0United Kingdom15.30
153636571053WHITE METAL LANTERN612/1/10 8:263.3917850.0United Kingdom20.34
253636584406BCREAM CUPID HEARTS COAT HANGER812/1/10 8:262.7517850.0United Kingdom22.00
353636584029GKNITTED UNION FLAG HOT WATER BOTTLE612/1/10 8:263.3917850.0United Kingdom20.34
453636584029ERED WOOLLY HOTTIE WHITE HEART.612/1/10 8:263.3917850.0United Kingdom20.34
\n", + "
" + ], + "text/plain": [ + " InvoiceNo StockCode Description Quantity \\\n", + "0 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6 \n", + "1 536365 71053 WHITE METAL LANTERN 6 \n", + "2 536365 84406B CREAM CUPID HEARTS COAT HANGER 8 \n", + "3 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6 \n", + "4 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6 \n", + "\n", + " InvoiceDate UnitPrice CustomerID Country Revenue \n", + "0 12/1/10 8:26 2.55 17850.0 United Kingdom 15.30 \n", + "1 12/1/10 8:26 3.39 17850.0 United Kingdom 20.34 \n", + "2 12/1/10 8:26 2.75 17850.0 United Kingdom 22.00 \n", + "3 12/1/10 8:26 3.39 17850.0 United Kingdom 20.34 \n", + "4 12/1/10 8:26 3.39 17850.0 United Kingdom 20.34 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.3.2 Group by `CustomerID` and `Country` and find out the average price (`AvgPrice`) each customer spends per unit." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "
QuantityRevenueAvgPriceCountry
CustomerIDCountry
12426.0Germany258582.732.258643Germany
12427.0Germany533825.801.549343Germany
12468.0Germany366729.541.993279Germany
12471.0Germany821219824.052.414034Germany
12472.0Germany41486572.111.584405Germany
\n", + "
" + ], + "text/plain": [ + " Quantity Revenue AvgPrice Country\n", + "CustomerID Country \n", + "12426.0 Germany 258 582.73 2.258643 Germany\n", + "12427.0 Germany 533 825.80 1.549343 Germany\n", + "12468.0 Germany 366 729.54 1.993279 Germany\n", + "12471.0 Germany 8212 19824.05 2.414034 Germany\n", + "12472.0 Germany 4148 6572.11 1.584405 Germany" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.3.3 Plot" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Step 7.4 What to do now?\n", + "We aren't much better-off than what we started with. The data are still extremely scattered around and don't seem quite informative.\n", + "\n", + "But we shouldn't despair!\n", + "There are two things to realize:\n", + "1) The data seem to be skewed towaards the axes (e.g. we don't have any values where Quantity = 50000 and AvgPrice = 5). So that might suggest a trend.\n", + "2) We have more data! We've only been looking at the data from 3 different countries and they are plotted on different graphs.\n", + "\n", + "So: we should plot the data regardless of `Country` and hopefully see a less scattered graph.\n", + "\n", + "##### Step 7.4.1 Plot the data for each `CustomerID` on a single graph" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Step 7.4.2 Zoom in so we can see that curve more clearly" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Plot a line chart showing revenue (y) per UnitPrice (x).\n", + "\n", + "Did Step 7 give us any insights about the data? Sure! As average price increases, the quantity ordered decreses. But that's hardly surprising. It would be surprising if that wasn't the case!\n", + "\n", + "Nevertheless the rate of drop in quantity is so drastic, it makes me wonder how our revenue changes with respect to item price. It would not be that surprising if it didn't change that much. But it would be interesting to know whether most of our revenue comes from expensive or inexpensive items, and how that relation looks like.\n", + "\n", + "That is what we are going to do now.\n", + "\n", + "#### 8.1 Group `UnitPrice` by intervals of 1 for prices [0,50), and sum `Quantity` and `Revenue`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "UnitPrice\n", + "(0, 1] 1.107775e+06\n", + "(1, 2] 2.691765e+06\n", + "(2, 3] 2.024143e+06\n", + "(3, 4] 8.651018e+05\n", + "(4, 5] 1.219377e+06\n", + "Name: Revenue, dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8.3 Plot." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8.4 Make it look nicer.\n", + "x-axis needs values. \n", + "y-axis isn't that easy to read; show in terms of millions." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### BONUS: Create your own question and answer it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [] } From 086ef81ed373fd212ac9e542ae3169539ed2ae8f Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 8 Dec 2018 11:43:02 +0100 Subject: [PATCH 57/92] include euro_data_base --- .DS_Store | Bin 14340 -> 14340 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index cdbd81a03bb4ba84dc8599b60d3f55a00c016aff..b727542f743b184759fcdb443de193acd219eeb4 100644 GIT binary patch delta 439 zcmZoEXepQ=#l*rjQO1~2Y+``<#s>||lMPH*CU#41KBX~_Y4af^XGU%Y21W)j;NaeP zQJiJ7I?oekMy`nyL^juGXE05iEVr3gAeEPqd$OXU!)70aYBp6d1_K5ohIj@yhD?SW zh7yKUh9V#rUt~p4EYR2lV^)PAWr4xF7cI2xKKY=G_~Z-f zESpcOy=`5zPt4G8yPF7TO*zBWF&9*sP_XFePB0b^FDlGGu zCKu|7Y*rA+VA@!s%ru$ZK$wl8je$Xd2WZlJ=E?jfx?sZ(fXtt4!y`R8#$@i~cyWo% NqN Date: Sat, 8 Dec 2018 11:44:35 +0100 Subject: [PATCH 58/92] euro database --- .../Euro12/Euro_2012_stats_TEAM.csv | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 02_Filtering_&_Sorting/Euro12/Euro_2012_stats_TEAM.csv diff --git a/02_Filtering_&_Sorting/Euro12/Euro_2012_stats_TEAM.csv b/02_Filtering_&_Sorting/Euro12/Euro_2012_stats_TEAM.csv new file mode 100644 index 000000000..f67ceaebf --- /dev/null +++ b/02_Filtering_&_Sorting/Euro12/Euro_2012_stats_TEAM.csv @@ -0,0 +1,17 @@ +Team,Goals,Shots on target,Shots off target,Shooting Accuracy,% Goals-to-shots,Total shots (inc. Blocked),Hit Woodwork,Penalty goals,Penalties not scored,Headed goals,Passes,Passes completed,Passing Accuracy,Touches,Crosses,Dribbles,Corners Taken,Tackles,Clearances,Interceptions,Clearances off line,Clean Sheets,Blocks,Goals conceded,Saves made,Saves-to-shots ratio,Fouls Won,Fouls Conceded,Offsides,Yellow Cards,Red Cards,Subs on,Subs off,Players Used +Croatia,4,13,12,51.9%,16.0%,32,0,0,0,2,1076,828,76.9%,1706,60,42,14,49,83,56,,0,10,3,13,81.3%,41,62,2,9,0,9,9,16 +Czech Republic,4,13,18,41.9%,12.9%,39,0,0,0,0,1565,1223,78.1%,2358,46,68,21,62,98,37,2,1,10,6,9,60.1%,53,73,8,7,0,11,11,19 +Denmark,4,10,10,50.0%,20.0%,27,1,0,0,3,1298,1082,83.3%,1873,43,32,16,40,61,59,0,1,10,5,10,66.7%,25,38,8,4,0,7,7,15 +England,5,11,18,50.0%,17.2%,40,0,0,0,3,1488,1200,80.6%,2440,58,60,16,86,106,72,1,2,29,3,22,88.1%,43,45,6,5,0,11,11,16 +France,3,22,24,37.9%,6.5%,65,1,0,0,0,2066,1803,87.2%,2909,55,76,28,71,76,58,0,1,7,5,6,54.6%,36,51,5,6,0,11,11,19 +Germany,10,32,32,47.8%,15.6%,80,2,1,0,2,2774,2427,87.4%,3761,101,60,35,91,73,69,0,1,11,6,10,62.6%,63,49,12,4,0,15,15,17 +Greece,5,8,18,30.7%,19.2%,32,1,1,1,0,1187,911,76.7%,2016,52,53,10,65,123,87,0,1,23,7,13,65.1%,67,48,12,9,1,12,12,20 +Italy,6,34,45,43.0%,7.5%,110,2,0,0,2,3016,2531,83.9%,4363,75,75,30,98,137,136,1,2,18,7,20,74.1%,101,89,16,16,0,18,18,19 +Netherlands,2,12,36,25.0%,4.1%,60,2,0,0,0,1556,1381,88.7%,2163,50,49,22,34,41,41,0,0,9,5,12,70.6%,35,30,3,5,0,7,7,15 +Poland,2,15,23,39.4%,5.2%,48,0,0,0,1,1059,852,80.4%,1724,55,39,14,67,87,62,0,0,8,3,6,66.7%,48,56,3,7,1,7,7,17 +Portugal,6,22,42,34.3%,9.3%,82,6,0,0,2,1891,1461,77.2%,2958,91,64,41,78,92,86,0,2,11,4,10,71.5%,73,90,10,12,0,14,14,16 +Republic of Ireland,1,7,12,36.8%,5.2%,28,0,0,0,1,851,606,71.2%,1433,43,18,8,45,78,43,1,0,23,9,17,65.4%,43,51,11,6,1,10,10,17 +Russia,5,9,31,22.5%,12.5%,59,2,0,0,1,1602,1345,83.9%,2278,40,40,21,65,74,58,0,0,8,3,10,77.0%,34,43,4,6,0,7,7,16 +Spain,12,42,33,55.9%,16.0%,100,0,1,0,2,4317,3820,88.4%,5585,69,106,44,122,102,79,0,5,8,1,15,93.8%,102,83,19,11,0,17,17,18 +Sweden,5,17,19,47.2%,13.8%,39,3,0,0,1,1192,965,80.9%,1806,44,29,7,56,54,45,0,1,12,5,8,61.6%,35,51,7,7,0,9,9,18 +Ukraine,2,7,26,21.2%,6.0%,38,0,0,0,2,1276,1043,81.7%,1894,33,26,18,65,97,29,0,0,4,4,13,76.5%,48,31,4,5,0,9,9,18 \ No newline at end of file From c5f8278071e0d758e2e70ec33349dfb7ff3accd0 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 8 Dec 2018 11:56:09 +0100 Subject: [PATCH 59/92] changes --- 02_Filtering_&_Sorting/.DS_Store | Bin 0 -> 8196 bytes 02_Filtering_&_Sorting/Euro12/Exercises.ipynb | 7 +++-- .../Euro12/Exercises_with_Solutions.ipynb | 15 ++++----- 02_Filtering_&_Sorting/Euro12/Solutions.ipynb | 7 +++-- LICENSE | 29 ++++++++++++++++++ 5 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 02_Filtering_&_Sorting/.DS_Store create mode 100644 LICENSE diff --git a/02_Filtering_&_Sorting/.DS_Store b/02_Filtering_&_Sorting/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..08337cd7f6e43ec401b997b2e7aca1e8f44e9f0a GIT binary patch literal 8196 zcmeHMO-vnC6g~$i+!>%;kQV0AmS-sz?L!|}z?Qao{3(Q*l0GOurP6tCrZ91s!8h|B z6pF!AcTKDAS~VKu#oh=I6;=S*WhIPn5$iRKcfH)tbbO}rZxa6aEbWr7`0E8k1 z@Cvml5Ab}V0VV=m^3ijpXZqO#2Cf*S80fpxcvP4ZCIVdY(RT;*-2sD{G00HRo1Ofk zo;hH`$FL3=2pQPSfcW_oLJwpi1NMge{qxj}X*g~?{x#<17i=pmVoYXoseC3mWzQyE z)y+DcYUZ@K8&KV;RL~x@ZF8-yrcN39>;$juvMpCNEIs2n8=6ig+u`_O$XE?!m*3nPuWM|~` zZnAbp40@a}<0xG(*|B@?LkHq5hmUowlx{EMa)n$uoHHCFW$Ht-hUQLOIj|+GKU&70H1z*Oicnx32H}D4D#1HW!{1`vM+xR6e`>V@aRqOF!wE^HA zYOMQ7l3IgLYI&n~Q){HVM}F$RQR}xQVz0r>>!~x$Q_|Z7VnI-Cs52NypcQ zrK}{m zZMY8a!>1&>W%vrdgCF20_#F|8upFzf8f$PD?!o=|Fdo1dHexG2frqgjk6;fziM`lI z@*Bh<9L5nGBl&5b{0z*XgIUax3}3*D_~M!jUm+R3iEsJpS`%Gwptb<;U23coT`rli zOxv2I{#Bu_cM0$Abq4bN0IEg)-?R1i|9d^maQz_zAp?KI02Xv7yF1BXtAk$T+EKdB z(j|(pTk_F!p~_3g3B7cjaP1F6YDdXb_#^^c@{xL|{OcbA!uP+RJ$(NQ7VhKnCzUhS Ar2qf` literal 0 HcmV?d00001 diff --git a/02_Filtering_&_Sorting/Euro12/Exercises.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises.ipynb index 8dcb5eb0c..3d95ed471 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises.ipynb @@ -29,7 +29,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/UEFA_European_Championship/Euro%202012/Euro%202012%20stats%20TEAM.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/02_Filtering_%26_Sorting/Euro12/Euro_2012_stats_TEAM.csv). " ] }, { @@ -227,8 +227,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -242,7 +243,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb index 91cf972eb..1fae2c983 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -31,7 +31,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/UEFA_European_Championship/Euro%202012/Euro%202012%20stats%20TEAM.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/02_Filtering_%26_Sorting/Euro12/Euro_2012_stats_TEAM.csv). " ] }, { @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -563,13 +563,13 @@ "[16 rows x 35 columns]" ] }, - "execution_count": 36, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "euro12 = pd.read_csv('https://raw.githubusercontent.com/jokecamp/FootballData/master/UEFA_European_Championship/Euro%202012/Euro%202012%20stats%20TEAM.csv', sep=',')\n", + "euro12 = pd.read_csv('https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/02_Filtering_%26_Sorting/Euro12/Euro_2012_stats_TEAM.csv', sep=',')\n", "euro12" ] }, @@ -2175,8 +2175,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -2190,7 +2191,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/02_Filtering_&_Sorting/Euro12/Solutions.ipynb b/02_Filtering_&_Sorting/Euro12/Solutions.ipynb index b0d5fc0f3..ae528ea09 100644 --- a/02_Filtering_&_Sorting/Euro12/Solutions.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Solutions.ipynb @@ -29,7 +29,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/jokecamp/FootballData/master/Euro%202012/Euro%202012%20stats%20TEAM.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/02_Filtering_%26_Sorting/Euro12/Euro_2012_stats_TEAM.csv). " ] }, { @@ -2138,8 +2138,9 @@ } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 2", + "display_name": "Python [default]", "language": "python", "name": "python2" }, @@ -2153,7 +2154,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..ae4fb82f1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2018, Guilherme Samora +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file From 3fa56feed68417dc061a4a660c84183d11efb4a2 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 8 Dec 2018 12:22:17 +0100 Subject: [PATCH 60/92] modified capitalize exercise --- .../Exercises.ipynb | 4 +- .../Exercises_with_solutions.ipynb | 280 +++++++-------- .../Solutions.ipynb | 325 +++++++++--------- .../Exercises_with_solutions_code.ipynb | 83 +++-- .../Online_Retail/Solutions.ipynb | 83 +++-- 5 files changed, 423 insertions(+), 352 deletions(-) diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb index 9dedce0ac..7ba8d2a23 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb @@ -70,7 +70,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Create a lambda function that captalize strings." + "### Step 5. Create a lambda function that capitalize strings." ] }, { @@ -118,7 +118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. Did you notice the original dataframe is still lowercase? Why is that? Fix it and captalize Mjob and Fjob." + "### Step 8. Did you notice the original dataframe is still lowercase? Why is that? Fix it and capitalize Mjob and Fjob." ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index 66beb92be..f38c65799 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -384,18 +384,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Create a lambda function that captalize strings." + "### Step 5. Create a lambda function that capitalize strings." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "captalizer = lambda x: x.upper()" + "capitalizer = lambda x: x.capitalize()" ] }, { @@ -407,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -415,78 +415,78 @@ { "data": { "text/plain": [ - "0 TEACHER\n", - "1 OTHER\n", - "2 OTHER\n", - "3 SERVICES\n", - "4 OTHER\n", - "5 OTHER\n", - "6 OTHER\n", - "7 TEACHER\n", - "8 OTHER\n", - "9 OTHER\n", - "10 HEALTH\n", - "11 OTHER\n", - "12 SERVICES\n", - "13 OTHER\n", - "14 OTHER\n", - "15 OTHER\n", - "16 SERVICES\n", - "17 OTHER\n", - "18 SERVICES\n", - "19 OTHER\n", - "20 OTHER\n", - "21 HEALTH\n", - "22 OTHER\n", - "23 OTHER\n", - "24 HEALTH\n", - "25 SERVICES\n", - "26 OTHER\n", - "27 SERVICES\n", - "28 OTHER\n", - "29 TEACHER\n", + "0 Teacher\n", + "1 Other\n", + "2 Other\n", + "3 Services\n", + "4 Other\n", + "5 Other\n", + "6 Other\n", + "7 Teacher\n", + "8 Other\n", + "9 Other\n", + "10 Health\n", + "11 Other\n", + "12 Services\n", + "13 Other\n", + "14 Other\n", + "15 Other\n", + "16 Services\n", + "17 Other\n", + "18 Services\n", + "19 Other\n", + "20 Other\n", + "21 Health\n", + "22 Other\n", + "23 Other\n", + "24 Health\n", + "25 Services\n", + "26 Other\n", + "27 Services\n", + "28 Other\n", + "29 Teacher\n", " ... \n", - "365 OTHER\n", - "366 SERVICES\n", - "367 SERVICES\n", - "368 SERVICES\n", - "369 TEACHER\n", - "370 SERVICES\n", - "371 SERVICES\n", - "372 AT_HOME\n", - "373 OTHER\n", - "374 OTHER\n", - "375 OTHER\n", - "376 OTHER\n", - "377 SERVICES\n", - "378 OTHER\n", - "379 OTHER\n", - "380 TEACHER\n", - "381 OTHER\n", - "382 SERVICES\n", - "383 SERVICES\n", - "384 OTHER\n", - "385 OTHER\n", - "386 AT_HOME\n", - "387 OTHER\n", - "388 SERVICES\n", - "389 OTHER\n", - "390 SERVICES\n", - "391 SERVICES\n", - "392 OTHER\n", - "393 OTHER\n", - "394 AT_HOME\n", + "365 Other\n", + "366 Services\n", + "367 Services\n", + "368 Services\n", + "369 Teacher\n", + "370 Services\n", + "371 Services\n", + "372 At_home\n", + "373 Other\n", + "374 Other\n", + "375 Other\n", + "376 Other\n", + "377 Services\n", + "378 Other\n", + "379 Other\n", + "380 Teacher\n", + "381 Other\n", + "382 Services\n", + "383 Services\n", + "384 Other\n", + "385 Other\n", + "386 At_home\n", + "387 Other\n", + "388 Services\n", + "389 Other\n", + "390 Services\n", + "391 Services\n", + "392 Other\n", + "393 Other\n", + "394 At_home\n", "Name: Fjob, dtype: object" ] }, - "execution_count": 5, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "stud_alcoh['Mjob'].apply(captalizer)\n", - "stud_alcoh['Fjob'].apply(captalizer)" + "stud_alcoh['Mjob'].apply(capitalizer)\n", + "stud_alcoh['Fjob'].apply(capitalizer)" ] }, { @@ -498,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -621,7 +621,7 @@ "394 course father " ] }, - "execution_count": 6, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -634,12 +634,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. Did you notice the original dataframe is still lowercase? Why is that? Fix it and captalize Mjob and Fjob." + "### Step 8. Did you notice the original dataframe is still lowercase? Why is that? Fix it and capitalize Mjob and Fjob." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -677,8 +677,8 @@ " A\n", " 2\n", " 2\n", - " SERVICES\n", - " SERVICES\n", + " Services\n", + " Services\n", " course\n", " other\n", " \n", @@ -692,8 +692,8 @@ " T\n", " 3\n", " 1\n", - " SERVICES\n", - " SERVICES\n", + " Services\n", + " Services\n", " course\n", " mother\n", " \n", @@ -707,8 +707,8 @@ " T\n", " 1\n", " 1\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " course\n", " other\n", " \n", @@ -722,8 +722,8 @@ " T\n", " 3\n", " 2\n", - " SERVICES\n", - " OTHER\n", + " Services\n", + " Other\n", " course\n", " mother\n", " \n", @@ -737,8 +737,8 @@ " T\n", " 1\n", " 1\n", - " OTHER\n", - " AT_HOME\n", + " Other\n", + " At_home\n", " course\n", " father\n", " \n", @@ -748,11 +748,11 @@ ], "text/plain": [ " school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n", - "390 MS M 20 U LE3 A 2 2 SERVICES SERVICES \n", - "391 MS M 17 U LE3 T 3 1 SERVICES SERVICES \n", - "392 MS M 21 R GT3 T 1 1 OTHER OTHER \n", - "393 MS M 18 R LE3 T 3 2 SERVICES OTHER \n", - "394 MS M 19 U LE3 T 1 1 OTHER AT_HOME \n", + "390 MS M 20 U LE3 A 2 2 Services Services \n", + "391 MS M 17 U LE3 T 3 1 Services Services \n", + "392 MS M 21 R GT3 T 1 1 Other Other \n", + "393 MS M 18 R LE3 T 3 2 Services Other \n", + "394 MS M 19 U LE3 T 1 1 Other At_home \n", "\n", " reason guardian \n", "390 course other \n", @@ -762,14 +762,14 @@ "394 course father " ] }, - "execution_count": 7, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "stud_alcoh['Mjob'] = stud_alcoh['Mjob'].apply(captalizer)\n", - "stud_alcoh['Fjob'] = stud_alcoh['Fjob'].apply(captalizer)\n", + "stud_alcoh['Mjob'] = stud_alcoh['Mjob'].apply(capitalizer)\n", + "stud_alcoh['Fjob'] = stud_alcoh['Fjob'].apply(capitalizer)\n", "stud_alcoh.tail()" ] }, @@ -782,7 +782,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -797,7 +797,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -836,8 +836,8 @@ " A\n", " 4\n", " 4\n", - " AT_HOME\n", - " TEACHER\n", + " At_home\n", + " Teacher\n", " course\n", " mother\n", " True\n", @@ -852,8 +852,8 @@ " T\n", " 1\n", " 1\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " course\n", " father\n", " False\n", @@ -868,8 +868,8 @@ " T\n", " 1\n", " 1\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " other\n", " mother\n", " False\n", @@ -884,8 +884,8 @@ " T\n", " 4\n", " 2\n", - " HEALTH\n", - " SERVICES\n", + " Health\n", + " Services\n", " home\n", " mother\n", " False\n", @@ -900,8 +900,8 @@ " T\n", " 3\n", " 3\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " father\n", " False\n", @@ -912,11 +912,11 @@ ], "text/plain": [ " school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n", - "0 GP F 18 U GT3 A 4 4 AT_HOME TEACHER \n", - "1 GP F 17 U GT3 T 1 1 AT_HOME OTHER \n", - "2 GP F 15 U LE3 T 1 1 AT_HOME OTHER \n", - "3 GP F 15 U GT3 T 4 2 HEALTH SERVICES \n", - "4 GP F 16 U GT3 T 3 3 OTHER OTHER \n", + "0 GP F 18 U GT3 A 4 4 At_home Teacher \n", + "1 GP F 17 U GT3 T 1 1 At_home Other \n", + "2 GP F 15 U LE3 T 1 1 At_home Other \n", + "3 GP F 15 U GT3 T 4 2 Health Services \n", + "4 GP F 16 U GT3 T 3 3 Other Other \n", "\n", " reason guardian legal_drinker \n", "0 course mother True \n", @@ -926,7 +926,7 @@ "4 home father False " ] }, - "execution_count": 9, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -946,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -960,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -999,8 +999,8 @@ " A\n", " 40\n", " 40\n", - " AT_HOME\n", - " TEACHER\n", + " At_home\n", + " Teacher\n", " course\n", " mother\n", " True\n", @@ -1015,8 +1015,8 @@ " T\n", " 10\n", " 10\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " course\n", " father\n", " False\n", @@ -1031,8 +1031,8 @@ " T\n", " 10\n", " 10\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " other\n", " mother\n", " False\n", @@ -1047,8 +1047,8 @@ " T\n", " 40\n", " 20\n", - " HEALTH\n", - " SERVICES\n", + " Health\n", + " Services\n", " home\n", " mother\n", " False\n", @@ -1063,8 +1063,8 @@ " T\n", " 30\n", " 30\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " father\n", " False\n", @@ -1079,8 +1079,8 @@ " T\n", " 40\n", " 30\n", - " SERVICES\n", - " OTHER\n", + " Services\n", + " Other\n", " reputation\n", " mother\n", " False\n", @@ -1095,8 +1095,8 @@ " T\n", " 20\n", " 20\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " mother\n", " False\n", @@ -1111,8 +1111,8 @@ " A\n", " 40\n", " 40\n", - " OTHER\n", - " TEACHER\n", + " Other\n", + " Teacher\n", " home\n", " mother\n", " False\n", @@ -1127,8 +1127,8 @@ " A\n", " 30\n", " 20\n", - " SERVICES\n", - " OTHER\n", + " Services\n", + " Other\n", " home\n", " mother\n", " False\n", @@ -1143,8 +1143,8 @@ " T\n", " 30\n", " 40\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " mother\n", " False\n", @@ -1155,16 +1155,16 @@ ], "text/plain": [ " school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n", - "0 GP F 180 U GT3 A 40 40 AT_HOME TEACHER \n", - "1 GP F 170 U GT3 T 10 10 AT_HOME OTHER \n", - "2 GP F 150 U LE3 T 10 10 AT_HOME OTHER \n", - "3 GP F 150 U GT3 T 40 20 HEALTH SERVICES \n", - "4 GP F 160 U GT3 T 30 30 OTHER OTHER \n", - "5 GP M 160 U LE3 T 40 30 SERVICES OTHER \n", - "6 GP M 160 U LE3 T 20 20 OTHER OTHER \n", - "7 GP F 170 U GT3 A 40 40 OTHER TEACHER \n", - "8 GP M 150 U LE3 A 30 20 SERVICES OTHER \n", - "9 GP M 150 U GT3 T 30 40 OTHER OTHER \n", + "0 GP F 180 U GT3 A 40 40 At_home Teacher \n", + "1 GP F 170 U GT3 T 10 10 At_home Other \n", + "2 GP F 150 U LE3 T 10 10 At_home Other \n", + "3 GP F 150 U GT3 T 40 20 Health Services \n", + "4 GP F 160 U GT3 T 30 30 Other Other \n", + "5 GP M 160 U LE3 T 40 30 Services Other \n", + "6 GP M 160 U LE3 T 20 20 Other Other \n", + "7 GP F 170 U GT3 A 40 40 Other Teacher \n", + "8 GP M 150 U LE3 A 30 20 Services Other \n", + "9 GP M 150 U GT3 T 30 40 Other Other \n", "\n", " reason guardian legal_drinker \n", "0 course mother True \n", @@ -1179,7 +1179,7 @@ "9 home mother False " ] }, - "execution_count": 11, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } diff --git a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb index 10407f5a9..0100aee5b 100644 --- a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb @@ -20,15 +20,12 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy" - ] + "source": [] }, { "cell_type": "markdown", @@ -46,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 2, "metadata": { "collapsed": false, "scrolled": false @@ -227,7 +224,7 @@ "[5 rows x 33 columns]" ] }, - "execution_count": 25, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -243,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -366,7 +363,7 @@ "4 home father " ] }, - "execution_count": 26, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -377,12 +374,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Create a lambda function that captalize strings." + "### Step 5. Create a lambda function that capitalize strings." ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -398,7 +395,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -406,71 +403,71 @@ { "data": { "text/plain": [ - "0 TEACHER\n", - "1 OTHER\n", - "2 OTHER\n", - "3 SERVICES\n", - "4 OTHER\n", - "5 OTHER\n", - "6 OTHER\n", - "7 TEACHER\n", - "8 OTHER\n", - "9 OTHER\n", - "10 HEALTH\n", - "11 OTHER\n", - "12 SERVICES\n", - "13 OTHER\n", - "14 OTHER\n", - "15 OTHER\n", - "16 SERVICES\n", - "17 OTHER\n", - "18 SERVICES\n", - "19 OTHER\n", - "20 OTHER\n", - "21 HEALTH\n", - "22 OTHER\n", - "23 OTHER\n", - "24 HEALTH\n", - "25 SERVICES\n", - "26 OTHER\n", - "27 SERVICES\n", - "28 OTHER\n", - "29 TEACHER\n", + "0 Teacher\n", + "1 Other\n", + "2 Other\n", + "3 Services\n", + "4 Other\n", + "5 Other\n", + "6 Other\n", + "7 Teacher\n", + "8 Other\n", + "9 Other\n", + "10 Health\n", + "11 Other\n", + "12 Services\n", + "13 Other\n", + "14 Other\n", + "15 Other\n", + "16 Services\n", + "17 Other\n", + "18 Services\n", + "19 Other\n", + "20 Other\n", + "21 Health\n", + "22 Other\n", + "23 Other\n", + "24 Health\n", + "25 Services\n", + "26 Other\n", + "27 Services\n", + "28 Other\n", + "29 Teacher\n", " ... \n", - "365 OTHER\n", - "366 SERVICES\n", - "367 SERVICES\n", - "368 SERVICES\n", - "369 TEACHER\n", - "370 SERVICES\n", - "371 SERVICES\n", - "372 AT_HOME\n", - "373 OTHER\n", - "374 OTHER\n", - "375 OTHER\n", - "376 OTHER\n", - "377 SERVICES\n", - "378 OTHER\n", - "379 OTHER\n", - "380 TEACHER\n", - "381 OTHER\n", - "382 SERVICES\n", - "383 SERVICES\n", - "384 OTHER\n", - "385 OTHER\n", - "386 AT_HOME\n", - "387 OTHER\n", - "388 SERVICES\n", - "389 OTHER\n", - "390 SERVICES\n", - "391 SERVICES\n", - "392 OTHER\n", - "393 OTHER\n", - "394 AT_HOME\n", + "365 Other\n", + "366 Services\n", + "367 Services\n", + "368 Services\n", + "369 Teacher\n", + "370 Services\n", + "371 Services\n", + "372 At_home\n", + "373 Other\n", + "374 Other\n", + "375 Other\n", + "376 Other\n", + "377 Services\n", + "378 Other\n", + "379 Other\n", + "380 Teacher\n", + "381 Other\n", + "382 Services\n", + "383 Services\n", + "384 Other\n", + "385 Other\n", + "386 At_home\n", + "387 Other\n", + "388 Services\n", + "389 Other\n", + "390 Services\n", + "391 Services\n", + "392 Other\n", + "393 Other\n", + "394 At_home\n", "Name: Fjob, dtype: object" ] }, - "execution_count": 28, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -486,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -609,7 +606,7 @@ "394 course father " ] }, - "execution_count": 29, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -620,12 +617,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. Did you notice the original dataframe is still lowercase? Why is that? Fix it and captalize Mjob and Fjob." + "### Step 8. Did you notice the original dataframe is still lowercase? Why is that? Fix it and capitalize Mjob and Fjob." ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -663,8 +660,8 @@ " A\n", " 2\n", " 2\n", - " SERVICES\n", - " SERVICES\n", + " Services\n", + " Services\n", " course\n", " other\n", " \n", @@ -678,8 +675,8 @@ " T\n", " 3\n", " 1\n", - " SERVICES\n", - " SERVICES\n", + " Services\n", + " Services\n", " course\n", " mother\n", " \n", @@ -693,8 +690,8 @@ " T\n", " 1\n", " 1\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " course\n", " other\n", " \n", @@ -708,8 +705,8 @@ " T\n", " 3\n", " 2\n", - " SERVICES\n", - " OTHER\n", + " Services\n", + " Other\n", " course\n", " mother\n", " \n", @@ -723,8 +720,8 @@ " T\n", " 1\n", " 1\n", - " OTHER\n", - " AT_HOME\n", + " Other\n", + " At_home\n", " course\n", " father\n", " \n", @@ -734,11 +731,11 @@ ], "text/plain": [ " school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n", - "390 MS M 20 U LE3 A 2 2 SERVICES SERVICES \n", - "391 MS M 17 U LE3 T 3 1 SERVICES SERVICES \n", - "392 MS M 21 R GT3 T 1 1 OTHER OTHER \n", - "393 MS M 18 R LE3 T 3 2 SERVICES OTHER \n", - "394 MS M 19 U LE3 T 1 1 OTHER AT_HOME \n", + "390 MS M 20 U LE3 A 2 2 Services Services \n", + "391 MS M 17 U LE3 T 3 1 Services Services \n", + "392 MS M 21 R GT3 T 1 1 Other Other \n", + "393 MS M 18 R LE3 T 3 2 Services Other \n", + "394 MS M 19 U LE3 T 1 1 Other At_home \n", "\n", " reason guardian \n", "390 course other \n", @@ -748,7 +745,7 @@ "394 course father " ] }, - "execution_count": 30, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -764,7 +761,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -773,7 +770,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -812,8 +809,8 @@ " A\n", " 4\n", " 4\n", - " AT_HOME\n", - " TEACHER\n", + " At_home\n", + " Teacher\n", " course\n", " mother\n", " True\n", @@ -828,8 +825,8 @@ " T\n", " 1\n", " 1\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " course\n", " father\n", " False\n", @@ -844,8 +841,8 @@ " T\n", " 1\n", " 1\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " other\n", " mother\n", " False\n", @@ -860,8 +857,8 @@ " T\n", " 4\n", " 2\n", - " HEALTH\n", - " SERVICES\n", + " Health\n", + " Services\n", " home\n", " mother\n", " False\n", @@ -876,8 +873,8 @@ " T\n", " 3\n", " 3\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " father\n", " False\n", @@ -888,11 +885,11 @@ ], "text/plain": [ " school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n", - "0 GP F 18 U GT3 A 4 4 AT_HOME TEACHER \n", - "1 GP F 17 U GT3 T 1 1 AT_HOME OTHER \n", - "2 GP F 15 U LE3 T 1 1 AT_HOME OTHER \n", - "3 GP F 15 U GT3 T 4 2 HEALTH SERVICES \n", - "4 GP F 16 U GT3 T 3 3 OTHER OTHER \n", + "0 GP F 18 U GT3 A 4 4 At_home Teacher \n", + "1 GP F 17 U GT3 T 1 1 At_home Other \n", + "2 GP F 15 U LE3 T 1 1 At_home Other \n", + "3 GP F 15 U GT3 T 4 2 Health Services \n", + "4 GP F 16 U GT3 T 3 3 Other Other \n", "\n", " reason guardian legal_drinker \n", "0 course mother True \n", @@ -902,7 +899,7 @@ "4 home father False " ] }, - "execution_count": 32, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -919,7 +916,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -928,7 +925,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -967,11 +964,11 @@ " A\n", " 40\n", " 40\n", - " AT_HOME\n", - " TEACHER\n", + " At_home\n", + " Teacher\n", " course\n", " mother\n", - " None\n", + " True\n", " \n", " \n", " 1\n", @@ -983,11 +980,11 @@ " T\n", " 10\n", " 10\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " course\n", " father\n", - " None\n", + " False\n", " \n", " \n", " 2\n", @@ -999,11 +996,11 @@ " T\n", " 10\n", " 10\n", - " AT_HOME\n", - " OTHER\n", + " At_home\n", + " Other\n", " other\n", " mother\n", - " None\n", + " False\n", " \n", " \n", " 3\n", @@ -1015,11 +1012,11 @@ " T\n", " 40\n", " 20\n", - " HEALTH\n", - " SERVICES\n", + " Health\n", + " Services\n", " home\n", " mother\n", - " None\n", + " False\n", " \n", " \n", " 4\n", @@ -1031,11 +1028,11 @@ " T\n", " 30\n", " 30\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " father\n", - " None\n", + " False\n", " \n", " \n", " 5\n", @@ -1047,11 +1044,11 @@ " T\n", " 40\n", " 30\n", - " SERVICES\n", - " OTHER\n", + " Services\n", + " Other\n", " reputation\n", " mother\n", - " None\n", + " False\n", " \n", " \n", " 6\n", @@ -1063,11 +1060,11 @@ " T\n", " 20\n", " 20\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " mother\n", - " None\n", + " False\n", " \n", " \n", " 7\n", @@ -1079,11 +1076,11 @@ " A\n", " 40\n", " 40\n", - " OTHER\n", - " TEACHER\n", + " Other\n", + " Teacher\n", " home\n", " mother\n", - " None\n", + " False\n", " \n", " \n", " 8\n", @@ -1095,11 +1092,11 @@ " A\n", " 30\n", " 20\n", - " SERVICES\n", - " OTHER\n", + " Services\n", + " Other\n", " home\n", " mother\n", - " None\n", + " False\n", " \n", " \n", " 9\n", @@ -1111,11 +1108,11 @@ " T\n", " 30\n", " 40\n", - " OTHER\n", - " OTHER\n", + " Other\n", + " Other\n", " home\n", " mother\n", - " None\n", + " False\n", " \n", " \n", "\n", @@ -1123,31 +1120,31 @@ ], "text/plain": [ " school sex age address famsize Pstatus Medu Fedu Mjob Fjob \\\n", - "0 GP F 180 U GT3 A 40 40 AT_HOME TEACHER \n", - "1 GP F 170 U GT3 T 10 10 AT_HOME OTHER \n", - "2 GP F 150 U LE3 T 10 10 AT_HOME OTHER \n", - "3 GP F 150 U GT3 T 40 20 HEALTH SERVICES \n", - "4 GP F 160 U GT3 T 30 30 OTHER OTHER \n", - "5 GP M 160 U LE3 T 40 30 SERVICES OTHER \n", - "6 GP M 160 U LE3 T 20 20 OTHER OTHER \n", - "7 GP F 170 U GT3 A 40 40 OTHER TEACHER \n", - "8 GP M 150 U LE3 A 30 20 SERVICES OTHER \n", - "9 GP M 150 U GT3 T 30 40 OTHER OTHER \n", + "0 GP F 180 U GT3 A 40 40 At_home Teacher \n", + "1 GP F 170 U GT3 T 10 10 At_home Other \n", + "2 GP F 150 U LE3 T 10 10 At_home Other \n", + "3 GP F 150 U GT3 T 40 20 Health Services \n", + "4 GP F 160 U GT3 T 30 30 Other Other \n", + "5 GP M 160 U LE3 T 40 30 Services Other \n", + "6 GP M 160 U LE3 T 20 20 Other Other \n", + "7 GP F 170 U GT3 A 40 40 Other Teacher \n", + "8 GP M 150 U LE3 A 30 20 Services Other \n", + "9 GP M 150 U GT3 T 30 40 Other Other \n", "\n", " reason guardian legal_drinker \n", - "0 course mother None \n", - "1 course father None \n", - "2 other mother None \n", - "3 home mother None \n", - "4 home father None \n", - "5 reputation mother None \n", - "6 home mother None \n", - "7 home mother None \n", - "8 home mother None \n", - "9 home mother None " + "0 course mother True \n", + "1 course father False \n", + "2 other mother False \n", + "3 home mother False \n", + "4 home father False \n", + "5 reputation mother False \n", + "6 home mother False \n", + "7 home mother False \n", + "8 home mother False \n", + "9 home mother False " ] }, - "execution_count": 42, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } diff --git a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb index 0d1d9da85..ec4459db3 100644 --- a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb +++ b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb @@ -21,7 +21,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pandas as pd\n", @@ -54,7 +56,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -186,7 +190,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -230,7 +236,9 @@ { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -359,7 +367,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -431,7 +441,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -534,7 +546,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -574,7 +588,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -783,7 +799,9 @@ { "cell_type": "code", "execution_count": 9, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -827,7 +845,9 @@ { "cell_type": "code", "execution_count": 10, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -962,7 +982,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1081,7 +1103,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1131,7 +1155,9 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1179,7 +1205,9 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1242,7 +1270,9 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1289,7 +1319,9 @@ { "cell_type": "code", "execution_count": 16, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1323,7 +1355,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1366,28 +1400,31 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda root]", "language": "python", - "name": "python3" + "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.0" + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, diff --git a/07_Visualization/Online_Retail/Solutions.ipynb b/07_Visualization/Online_Retail/Solutions.ipynb index 1c504d20e..e40cf75a8 100644 --- a/07_Visualization/Online_Retail/Solutions.ipynb +++ b/07_Visualization/Online_Retail/Solutions.ipynb @@ -21,7 +21,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] }, @@ -43,7 +45,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -169,7 +173,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -196,7 +202,9 @@ { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -322,7 +330,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -366,7 +376,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -462,7 +474,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -487,7 +501,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -686,7 +702,9 @@ { "cell_type": "code", "execution_count": 9, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -725,7 +743,9 @@ { "cell_type": "code", "execution_count": 10, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -857,7 +877,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -967,7 +989,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1004,7 +1028,9 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1041,7 +1067,9 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1086,7 +1114,9 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1117,7 +1147,9 @@ { "cell_type": "code", "execution_count": 16, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1146,7 +1178,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -1173,28 +1207,31 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { + "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [conda root]", "language": "python", - "name": "python3" + "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.0" + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, From 7fa948541521fa77a76b96dd5d4b91760b2c8750 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 8 Dec 2018 13:23:58 +0100 Subject: [PATCH 61/92] include requirements --- .../Chipotle/Exercises_with_solutions.ipynb | 673 +++++++++++++++--- requirements.txt | 4 + 2 files changed, 590 insertions(+), 87 deletions(-) create mode 100644 requirements.txt diff --git a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb index 0f7ba9bce..9dffe49a7 100644 --- a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -44,14 +44,14 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/chipotle.tsv'\n", - " \n", + "\n", "chipo = pd.read_csv(url, sep = '\\t')" ] }, @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -75,7 +75,7 @@ "12" ] }, - "execution_count": 22, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -119,156 +119,655 @@ " \n", " \n", " \n", + " order_id\n", + " quantity\n", " item_name\n", + " choice_description\n", " item_price\n", " \n", " \n", " \n", " \n", - " 606\n", - " Steak Salad Bowl\n", - " 11.89\n", + " 5\n", + " 3\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa (Mild), [Rice, Cheese, Sou...\n", + " 10.98\n", " \n", " \n", - " 1229\n", - " Barbacoa Salad Bowl\n", - " 11.89\n", + " 13\n", + " 7\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Fajita Vegetables, Rice,...\n", + " 11.25\n", + " \n", + " \n", + " 19\n", + " 10\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Red Chili Salsa, [Fajita Vegetables...\n", + " 8.75\n", " \n", " \n", - " 1132\n", - " Carnitas Salad Bowl\n", - " 11.89\n", + " 26\n", + " 13\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa (Medium), [Pinto Bea...\n", + " 8.49\n", " \n", " \n", - " 7\n", - " Steak Burrito\n", - " 11.75\n", + " 42\n", + " 20\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Rice, Black Beans,...\n", + " 11.25\n", " \n", " \n", - " 168\n", - " Barbacoa Crispy Tacos\n", - " 11.75\n", + " 76\n", + " 34\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Pinto...\n", + " 8.75\n", " \n", " \n", - " 39\n", - " Barbacoa Bowl\n", - " 11.75\n", + " 78\n", + " 34\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Chees...\n", + " 8.75\n", " \n", " \n", - " 738\n", - " Veggie Soft Tacos\n", + " 99\n", + " 44\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Red Chili Salsa, [Rice, Fajita Vege...\n", + " 8.75\n", + " \n", + " \n", + " 110\n", + " 49\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Red Chili Salsa, [Rice, Black Beans...\n", + " 8.75\n", + " \n", + " \n", + " 123\n", + " 54\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Guacamole, Cheese, Sour ...\n", " 11.25\n", " \n", " \n", - " 186\n", - " Veggie Salad Bowl\n", + " 138\n", + " 62\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Fajita Vegetables,...\n", " 11.25\n", " \n", " \n", - " 62\n", - " Veggie Bowl\n", + " 140\n", + " 63\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Sour Crea...\n", " 11.25\n", " \n", " \n", - " 57\n", - " Veggie Burrito\n", + " 142\n", + " 64\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Fajita Vegetables, Rice,...\n", " 11.25\n", " \n", " \n", - " 250\n", - " Chicken Salad\n", + " 160\n", + " 73\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa (Mild), [Black Beans, Rice...\n", + " 8.49\n", + " \n", + " \n", + " 176\n", + " 79\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa (Medium), [Black Bea...\n", " 10.98\n", " \n", " \n", - " 5\n", + " 182\n", + " 82\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Sour ...\n", + " 8.75\n", + " \n", + " \n", + " 193\n", + " 86\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream]]\n", + " 8.75\n", + " \n", + " \n", + " 199\n", + " 89\n", + " 1\n", " Chicken Bowl\n", + " [[Roasted Chili Corn Salsa (Medium), Tomatillo...\n", " 10.98\n", " \n", " \n", - " 8\n", - " Steak Soft Tacos\n", - " 9.25\n", + " 206\n", + " 92\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Cheese, Lettuce]]\n", + " 8.75\n", " \n", " \n", - " 554\n", - " Carnitas Crispy Tacos\n", - " 9.25\n", + " 209\n", + " 93\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Fajita Vegetables,...\n", + " 11.25\n", " \n", " \n", - " 237\n", - " Carnitas Soft Tacos\n", - " 9.25\n", + " 211\n", + " 93\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Fajita Vegetables,...\n", + " 11.25\n", + " \n", + " \n", + " 218\n", + " 96\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Black Bea...\n", + " 8.75\n", + " \n", + " \n", + " 220\n", + " 97\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Rice, Black Beans,...\n", + " 8.75\n", " \n", " \n", - " 56\n", - " Barbacoa Soft Tacos\n", - " 9.25\n", + " 224\n", + " 98\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Pinto Bea...\n", + " 8.75\n", " \n", " \n", - " 92\n", - " Steak Crispy Tacos\n", - " 9.25\n", + " 231\n", + " 102\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Fajita Vegetables, Rice,...\n", + " 8.75\n", " \n", " \n", - " 664\n", - " Steak Salad\n", - " 8.99\n", + " 252\n", + " 110\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Red Chili Salsa, [Rice, Cheese, Let...\n", + " 8.75\n", " \n", " \n", - " 54\n", - " Steak Bowl\n", - " 8.99\n", + " 257\n", + " 111\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Cheese]]\n", + " 8.75\n", " \n", " \n", - " 3750\n", - " Carnitas Salad\n", - " 8.99\n", + " 284\n", + " 124\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream]]\n", + " 8.75\n", + " \n", + " \n", + " 290\n", + " 126\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Fajita Vegetables,...\n", + " 11.25\n", + " \n", + " \n", + " 291\n", + " 127\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Sour Crea...\n", + " 11.25\n", + " \n", + " \n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " \n", + " \n", + " 4443\n", + " 1771\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Pinto Bea...\n", + " 8.75\n", + " \n", + " \n", + " 4444\n", + " 1771\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Sour ...\n", + " 8.75\n", + " \n", + " \n", + " 4465\n", + " 1779\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Cheese]]\n", + " 8.75\n", + " \n", + " \n", + " 4481\n", + " 1786\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, Rice]\n", + " 8.75\n", + " \n", + " \n", + " 4483\n", + " 1786\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Pinto Beans, Chees...\n", + " 11.25\n", + " \n", + " \n", + " 4484\n", + " 1786\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Fajita Vegetables, Rice,...\n", + " 11.25\n", + " \n", + " \n", + " 4486\n", + " 1786\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Chees...\n", + " 11.25\n", + " \n", + " \n", + " 4488\n", + " 1786\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Fajita Vegetables, Rice,...\n", + " 8.75\n", + " \n", + " \n", + " 4495\n", + " 1788\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Pinto Beans, Sour ...\n", + " 11.25\n", + " \n", + " \n", + " 4498\n", + " 1789\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Fajita Vegetabl...\n", + " 11.25\n", + " \n", + " \n", + " 4506\n", + " 1792\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream...\n", + " 11.25\n", + " \n", + " \n", + " 4511\n", + " 1794\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Rice, Fajita Veget...\n", + " 8.75\n", + " \n", + " \n", + " 4532\n", + " 1802\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Rice, Black Beans,...\n", + " 8.75\n", + " \n", + " \n", + " 4537\n", + " 1804\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Chees...\n", + " 8.75\n", + " \n", + " \n", + " 4540\n", + " 1805\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Fajita Vegetabl...\n", + " 11.25\n", + " \n", + " \n", + " 4553\n", + " 1810\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Black Beans, Sour ...\n", + " 11.25\n", + " \n", + " \n", + " 4555\n", + " 1811\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Fajita Vegetables,...\n", + " 8.75\n", + " \n", + " \n", + " 4564\n", + " 1815\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Fajita Vegetables, Rice,...\n", + " 11.25\n", + " \n", + " \n", + " 4574\n", + " 1819\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Rice, Cheese, Lett...\n", + " 8.75\n", + " \n", + " \n", + " 4576\n", + " 1820\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream...\n", + " 11.25\n", + " \n", + " \n", + " 4581\n", + " 1822\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Red Chili Salsa, [Rice, Black Beans...\n", + " 8.75\n", + " \n", + " \n", + " 4583\n", + " 1823\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Black Bea...\n", + " 8.75\n", + " \n", + " \n", + " 4586\n", + " 1824\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Chees...\n", + " 11.25\n", + " \n", + " \n", + " 4587\n", + " 1824\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Chees...\n", + " 11.25\n", + " \n", + " \n", + " 4589\n", + " 1825\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Sour ...\n", + " 11.25\n", + " \n", + " \n", + " 4590\n", + " 1825\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Rice, Black Beans,...\n", + " 11.25\n", + " \n", + " \n", + " 4591\n", + " 1825\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Red Chili Salsa, [Rice, Black Beans...\n", + " 8.75\n", + " \n", + " \n", + " 4595\n", + " 1826\n", + " 1\n", + " Chicken Bowl\n", + " [Tomatillo Green Chili Salsa, [Rice, Black Bea...\n", + " 8.75\n", + " \n", + " \n", + " 4599\n", + " 1827\n", + " 1\n", + " Chicken Bowl\n", + " [Roasted Chili Corn Salsa, [Cheese, Lettuce]]\n", + " 8.75\n", + " \n", + " \n", + " 4604\n", + " 1828\n", + " 1\n", + " Chicken Bowl\n", + " [Fresh Tomato Salsa, [Rice, Black Beans, Chees...\n", + " 8.75\n", " \n", " \n", "\n", + "

693 rows × 5 columns

\n", "" ], "text/plain": [ - " item_name item_price\n", - "606 Steak Salad Bowl 11.89\n", - "1229 Barbacoa Salad Bowl 11.89\n", - "1132 Carnitas Salad Bowl 11.89\n", - "7 Steak Burrito 11.75\n", - "168 Barbacoa Crispy Tacos 11.75\n", - "39 Barbacoa Bowl 11.75\n", - "738 Veggie Soft Tacos 11.25\n", - "186 Veggie Salad Bowl 11.25\n", - "62 Veggie Bowl 11.25\n", - "57 Veggie Burrito 11.25\n", - "250 Chicken Salad 10.98\n", - "5 Chicken Bowl 10.98\n", - "8 Steak Soft Tacos 9.25\n", - "554 Carnitas Crispy Tacos 9.25\n", - "237 Carnitas Soft Tacos 9.25\n", - "56 Barbacoa Soft Tacos 9.25\n", - "92 Steak Crispy Tacos 9.25\n", - "664 Steak Salad 8.99\n", - "54 Steak Bowl 8.99\n", - "3750 Carnitas Salad 8.99" + " order_id quantity item_name \\\n", + "5 3 1 Chicken Bowl \n", + "13 7 1 Chicken Bowl \n", + "19 10 1 Chicken Bowl \n", + "26 13 1 Chicken Bowl \n", + "42 20 1 Chicken Bowl \n", + "76 34 1 Chicken Bowl \n", + "78 34 1 Chicken Bowl \n", + "99 44 1 Chicken Bowl \n", + "110 49 1 Chicken Bowl \n", + "123 54 1 Chicken Bowl \n", + "138 62 1 Chicken Bowl \n", + "140 63 1 Chicken Bowl \n", + "142 64 1 Chicken Bowl \n", + "160 73 1 Chicken Bowl \n", + "176 79 1 Chicken Bowl \n", + "182 82 1 Chicken Bowl \n", + "193 86 1 Chicken Bowl \n", + "199 89 1 Chicken Bowl \n", + "206 92 1 Chicken Bowl \n", + "209 93 1 Chicken Bowl \n", + "211 93 1 Chicken Bowl \n", + "218 96 1 Chicken Bowl \n", + "220 97 1 Chicken Bowl \n", + "224 98 1 Chicken Bowl \n", + "231 102 1 Chicken Bowl \n", + "252 110 1 Chicken Bowl \n", + "257 111 1 Chicken Bowl \n", + "284 124 1 Chicken Bowl \n", + "290 126 1 Chicken Bowl \n", + "291 127 1 Chicken Bowl \n", + "... ... ... ... \n", + "4443 1771 1 Chicken Bowl \n", + "4444 1771 1 Chicken Bowl \n", + "4465 1779 1 Chicken Bowl \n", + "4481 1786 1 Chicken Bowl \n", + "4483 1786 1 Chicken Bowl \n", + "4484 1786 1 Chicken Bowl \n", + "4486 1786 1 Chicken Bowl \n", + "4488 1786 1 Chicken Bowl \n", + "4495 1788 1 Chicken Bowl \n", + "4498 1789 1 Chicken Bowl \n", + "4506 1792 1 Chicken Bowl \n", + "4511 1794 1 Chicken Bowl \n", + "4532 1802 1 Chicken Bowl \n", + "4537 1804 1 Chicken Bowl \n", + "4540 1805 1 Chicken Bowl \n", + "4553 1810 1 Chicken Bowl \n", + "4555 1811 1 Chicken Bowl \n", + "4564 1815 1 Chicken Bowl \n", + "4574 1819 1 Chicken Bowl \n", + "4576 1820 1 Chicken Bowl \n", + "4581 1822 1 Chicken Bowl \n", + "4583 1823 1 Chicken Bowl \n", + "4586 1824 1 Chicken Bowl \n", + "4587 1824 1 Chicken Bowl \n", + "4589 1825 1 Chicken Bowl \n", + "4590 1825 1 Chicken Bowl \n", + "4591 1825 1 Chicken Bowl \n", + "4595 1826 1 Chicken Bowl \n", + "4599 1827 1 Chicken Bowl \n", + "4604 1828 1 Chicken Bowl \n", + "\n", + " choice_description item_price \n", + "5 [Fresh Tomato Salsa (Mild), [Rice, Cheese, Sou... 10.98 \n", + "13 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "19 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 8.75 \n", + "26 [Roasted Chili Corn Salsa (Medium), [Pinto Bea... 8.49 \n", + "42 [Roasted Chili Corn Salsa, [Rice, Black Beans,... 11.25 \n", + "76 [Fresh Tomato Salsa, [Rice, Black Beans, Pinto... 8.75 \n", + "78 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 8.75 \n", + "99 [Tomatillo Red Chili Salsa, [Rice, Fajita Vege... 8.75 \n", + "110 [Tomatillo Red Chili Salsa, [Rice, Black Beans... 8.75 \n", + "123 [Fresh Tomato Salsa, [Guacamole, Cheese, Sour ... 11.25 \n", + "138 [Fresh Tomato Salsa, [Rice, Fajita Vegetables,... 11.25 \n", + "140 [Tomatillo Green Chili Salsa, [Rice, Sour Crea... 11.25 \n", + "142 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "160 [Fresh Tomato Salsa (Mild), [Black Beans, Rice... 8.49 \n", + "176 [Roasted Chili Corn Salsa (Medium), [Black Bea... 10.98 \n", + "182 [Fresh Tomato Salsa, [Rice, Black Beans, Sour ... 8.75 \n", + "193 [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream]] 8.75 \n", + "199 [[Roasted Chili Corn Salsa (Medium), Tomatillo... 10.98 \n", + "206 [Fresh Tomato Salsa, [Rice, Cheese, Lettuce]] 8.75 \n", + "209 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 11.25 \n", + "211 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 11.25 \n", + "218 [Tomatillo Green Chili Salsa, [Rice, Black Bea... 8.75 \n", + "220 [Roasted Chili Corn Salsa, [Rice, Black Beans,... 8.75 \n", + "224 [Tomatillo Green Chili Salsa, [Rice, Pinto Bea... 8.75 \n", + "231 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 8.75 \n", + "252 [Tomatillo Red Chili Salsa, [Rice, Cheese, Let... 8.75 \n", + "257 [Fresh Tomato Salsa, [Rice, Black Beans, Cheese]] 8.75 \n", + "284 [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream]] 8.75 \n", + "290 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 11.25 \n", + "291 [Tomatillo Green Chili Salsa, [Rice, Sour Crea... 11.25 \n", + "... ... ... \n", + "4443 [Tomatillo Green Chili Salsa, [Rice, Pinto Bea... 8.75 \n", + "4444 [Fresh Tomato Salsa, [Rice, Black Beans, Sour ... 8.75 \n", + "4465 [Fresh Tomato Salsa, [Rice, Black Beans, Cheese]] 8.75 \n", + "4481 [Fresh Tomato Salsa, Rice] 8.75 \n", + "4483 [Fresh Tomato Salsa, [Rice, Pinto Beans, Chees... 11.25 \n", + "4484 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "4486 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 11.25 \n", + "4488 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 8.75 \n", + "4495 [Fresh Tomato Salsa, [Rice, Pinto Beans, Sour ... 11.25 \n", + "4498 [Tomatillo Green Chili Salsa, [Fajita Vegetabl... 11.25 \n", + "4506 [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream... 11.25 \n", + "4511 [Roasted Chili Corn Salsa, [Rice, Fajita Veget... 8.75 \n", + "4532 [Roasted Chili Corn Salsa, [Rice, Black Beans,... 8.75 \n", + "4537 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 8.75 \n", + "4540 [Tomatillo Green Chili Salsa, [Fajita Vegetabl... 11.25 \n", + "4553 [Roasted Chili Corn Salsa, [Black Beans, Sour ... 11.25 \n", + "4555 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 8.75 \n", + "4564 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "4574 [Roasted Chili Corn Salsa, [Rice, Cheese, Lett... 8.75 \n", + "4576 [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream... 11.25 \n", + "4581 [Tomatillo Red Chili Salsa, [Rice, Black Beans... 8.75 \n", + "4583 [Tomatillo Green Chili Salsa, [Rice, Black Bea... 8.75 \n", + "4586 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 11.25 \n", + "4587 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 11.25 \n", + "4589 [Fresh Tomato Salsa, [Rice, Black Beans, Sour ... 11.25 \n", + "4590 [Roasted Chili Corn Salsa, [Rice, Black Beans,... 11.25 \n", + "4591 [Tomatillo Red Chili Salsa, [Rice, Black Beans... 8.75 \n", + "4595 [Tomatillo Green Chili Salsa, [Rice, Black Bea... 8.75 \n", + "4599 [Roasted Chili Corn Salsa, [Cheese, Lettuce]] 8.75 \n", + "4604 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 8.75 \n", + "\n", + "[693 rows x 5 columns]" ] }, - "execution_count": 24, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# delete the duplicates in item_name and quantity\n", - "chipo_filtered = chipo.drop_duplicates(['item_name','quantity'])\n", + "# chipo_filtered = chipo.drop_duplicates(['item_name','quantity'])\n", + "chipo[(chipo['item_name'] == 'Chicken Bowl') & (chipo['quantity'] == 1)]\n", "\n", "# select only the products with quantity equals to 1\n", - "chipo_one_prod = chipo_filtered[chipo_filtered.quantity == 1]\n", + "# chipo_one_prod = chipo_filtered[chipo_filtered.quantity == 1]\n", "\n", "# select only the item_name and item_price columns\n", - "price_per_item = chipo_one_prod[['item_name', 'item_price']]\n", + "# price_per_item = chipo_one_prod[['item_name', 'item_price']]\n", "\n", "# sort the values from the most to less expensive\n", - "price_per_item.sort_values(by = \"item_price\", ascending = False).head(20)" + "# price_per_item.sort_values(by = \"item_price\", ascending = False).head(20)" ] }, { @@ -1005,7 +1504,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1016,7 +1515,7 @@ "18" ] }, - "execution_count": 27, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..45d521309 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +numpy==1.13.1 +matplotlib==2.0.2 +seaborn==0.8.1 +pandas==0.23.4 \ No newline at end of file From 25dd611036c6461f73956b1bb140611021f1d475 Mon Sep 17 00:00:00 2001 From: njutn95 Date: Wed, 12 Dec 2018 01:00:15 +0100 Subject: [PATCH 62/92] Update Exercise_with_solutions.ipynb Fix the code to match result with what the text asks for. i.e. If text asks to retrieve from 3rd up to 7th (but not including) column to retrieve data from 3rd up and including to 6th column rather than from 4th to 6th, and couple more scenarios corrected. --- .../Exercise_with_solutions.ipynb | 571 +++++++++++------- 1 file changed, 352 insertions(+), 219 deletions(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb index 279d939a4..684954d98 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb @@ -23,9 +23,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -41,9 +39,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Create an example dataframe about a fictional army\n", @@ -71,32 +67,25 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "army = pd.DataFrame(raw_data, columns = ['regiment', 'company', 'deaths', 'battles', 'size', 'veterans', 'readiness', 'armored', 'deserters', 'origin'])" - ] - }, - { - "cell_type": "markdown", "metadata": {}, - "source": [ - "### Step 4. Set the 'origin' colum as the index of the dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -110,23 +99,12 @@ " \n", " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -136,9 +114,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -148,9 +127,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -160,9 +140,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -172,9 +153,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -184,9 +166,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -196,9 +179,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -208,9 +192,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -220,9 +205,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -232,9 +218,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -244,9 +231,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -256,9 +244,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -268,53 +257,68 @@ " \n", " \n", " \n", + " \n", " \n", " \n", "
readinessarmoreddeserters
origin
Arizona0Nighthawks1st523114Arizona
California1Nighthawks1st522024California
Texas2Nighthawks2nd253131Texas
Florida3Nighthawks2nd616312Florida
Maine4Dragoons1st43203Maine
Iowa5Dragoons1st234114Iowa
Alaska6Dragoons2nd5232024Alaska
Washington7Dragoons2nd623131Washington
Oregon8Scouts1st62202Oregon
Wyoming9Scouts1st73103Wyoming
Louisana10Scouts2nd37212Louisana
Georgia11Scouts2nd35313Georgia
\n", "
" ], "text/plain": [ - " regiment company deaths battles size veterans readiness \\\n", - "origin \n", - "Arizona Nighthawks 1st 523 5 1045 1 1 \n", - "California Nighthawks 1st 52 42 957 5 2 \n", - "Texas Nighthawks 2nd 25 2 1099 62 3 \n", - "Florida Nighthawks 2nd 616 2 1400 26 3 \n", - "Maine Dragoons 1st 43 4 1592 73 2 \n", - "Iowa Dragoons 1st 234 7 1006 37 1 \n", - "Alaska Dragoons 2nd 523 8 987 949 2 \n", - "Washington Dragoons 2nd 62 3 849 48 3 \n", - "Oregon Scouts 1st 62 4 973 48 2 \n", - "Wyoming Scouts 1st 73 7 1005 435 1 \n", - "Louisana Scouts 2nd 37 8 1099 63 2 \n", - "Georgia Scouts 2nd 35 9 1523 345 3 \n", + " regiment company deaths battles size veterans readiness armored \\\n", + "0 Nighthawks 1st 523 5 1045 1 1 1 \n", + "1 Nighthawks 1st 52 42 957 5 2 0 \n", + "2 Nighthawks 2nd 25 2 1099 62 3 1 \n", + "3 Nighthawks 2nd 616 2 1400 26 3 1 \n", + "4 Dragoons 1st 43 4 1592 73 2 0 \n", + "5 Dragoons 1st 234 7 1006 37 1 1 \n", + "6 Dragoons 2nd 523 8 987 949 2 0 \n", + "7 Dragoons 2nd 62 3 849 48 3 1 \n", + "8 Scouts 1st 62 4 973 48 2 0 \n", + "9 Scouts 1st 73 7 1005 435 1 0 \n", + "10 Scouts 2nd 37 8 1099 63 2 1 \n", + "11 Scouts 2nd 35 9 1523 345 3 1 \n", "\n", - " armored deserters \n", - "origin \n", - "Arizona 1 4 \n", - "California 0 24 \n", - "Texas 1 31 \n", - "Florida 1 2 \n", - "Maine 0 3 \n", - "Iowa 1 4 \n", - "Alaska 0 24 \n", - "Washington 1 31 \n", - "Oregon 0 2 \n", - "Wyoming 0 3 \n", - "Louisana 1 2 \n", - "Georgia 1 3 " + " deserters origin \n", + "0 4 Arizona \n", + "1 24 California \n", + "2 31 Texas \n", + "3 2 Florida \n", + "4 3 Maine \n", + "5 4 Iowa \n", + "6 24 Alaska \n", + "7 31 Washington \n", + "8 2 Oregon \n", + "9 3 Wyoming \n", + "10 2 Louisana \n", + "11 3 Georgia " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "army = army.set_index('origin')\n", + "army = pd.DataFrame(data=raw_data)\n", "army" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Set the 'origin' colum as the index of the dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "army.set_index('origin', inplace=True)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -325,9 +329,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -354,7 +356,7 @@ } ], "source": [ - "army['veterans']" + "army.veterans" ] }, { @@ -367,14 +369,25 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -476,7 +489,7 @@ } ], "source": [ - "army[['veterans', 'deaths']]" + "army[[\"veterans\", \"deaths\"]]" ] }, { @@ -489,15 +502,13 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Index([u'regiment', u'company', u'deaths', u'battles', u'size', u'veterans',\n", - " u'readiness', u'armored', u'deserters'],\n", + "Index(['regiment', 'company', 'deaths', 'battles', 'size', 'veterans',\n", + " 'readiness', 'armored', 'deserters'],\n", " dtype='object')" ] }, @@ -520,14 +531,25 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -573,8 +595,7 @@ } ], "source": [ - "# Select all rows with the index label \"Maine\" and \"Alaska\"\n", - "army.loc[['Maine','Alaska'] , [\"deaths\",\"size\",\"deserters\"]]" + "army.loc[[\"Maine\", \"Alaska\"], [\"deaths\", \"size\", \"deserters\"]]" ] }, { @@ -587,18 +608,30 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -608,29 +641,41 @@ " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -640,12 +685,13 @@ "" ], "text/plain": [ - " battles size veterans\n", - "origin \n", - "Florida 2 1400 26\n", - "Maine 4 1592 73\n", - "Iowa 7 1006 37\n", - "Alaska 8 987 949" + " deaths battles size veterans\n", + "origin \n", + "Texas 25 2 1099 62\n", + "Florida 616 2 1400 26\n", + "Maine 43 4 1592 73\n", + "Iowa 234 7 1006 37\n", + "Alaska 523 8 987 949" ] }, "execution_count": 9, @@ -654,8 +700,7 @@ } ], "source": [ - "#\n", - "army.iloc[3:7, 3:6]" + "army.iloc[2:7, 2:6]" ] }, { @@ -668,14 +713,25 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
deathsbattlessizeveterans
Texas252109962
Florida6162140026
Maine434159273
Iowa2347100637
Alaska5238987949
\n", " \n", " \n", @@ -705,18 +761,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -817,21 +861,19 @@ "" ], "text/plain": [ - " regiment company deaths battles size veterans readiness \\\n", - "origin \n", - "Florida Nighthawks 2nd 616 2 1400 26 3 \n", - "Maine Dragoons 1st 43 4 1592 73 2 \n", - "Iowa Dragoons 1st 234 7 1006 37 1 \n", - "Alaska Dragoons 2nd 523 8 987 949 2 \n", - "Washington Dragoons 2nd 62 3 849 48 3 \n", - "Oregon Scouts 1st 62 4 973 48 2 \n", - "Wyoming Scouts 1st 73 7 1005 435 1 \n", - "Louisana Scouts 2nd 37 8 1099 63 2 \n", - "Georgia Scouts 2nd 35 9 1523 345 3 \n", + " regiment company deaths battles size veterans readiness \\\n", + "origin \n", + "Maine Dragoons 1st 43 4 1592 73 2 \n", + "Iowa Dragoons 1st 234 7 1006 37 1 \n", + "Alaska Dragoons 2nd 523 8 987 949 2 \n", + "Washington Dragoons 2nd 62 3 849 48 3 \n", + "Oregon Scouts 1st 62 4 973 48 2 \n", + "Wyoming Scouts 1st 73 7 1005 435 1 \n", + "Louisana Scouts 2nd 37 8 1099 63 2 \n", + "Georgia Scouts 2nd 35 9 1523 345 3 \n", "\n", " armored deserters \n", "origin \n", - "Florida 1 2 \n", "Maine 0 3 \n", "Iowa 1 4 \n", "Alaska 0 24 \n", @@ -848,7 +890,7 @@ } ], "source": [ - "army.iloc[3:]" + "army.iloc[4:, :]" ] }, { @@ -861,14 +903,25 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
FloridaNighthawks2nd6162140026312
MaineDragoons1st
\n", " \n", " \n", @@ -933,6 +986,18 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
131
FloridaNighthawks2nd6162140026312
\n", "
" @@ -943,12 +1008,14 @@ "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "California Nighthawks 1st 52 42 957 5 2 \n", "Texas Nighthawks 2nd 25 2 1099 62 3 \n", + "Florida Nighthawks 2nd 616 2 1400 26 3 \n", "\n", " armored deserters \n", "origin \n", "Arizona 1 4 \n", "California 0 24 \n", - "Texas 1 31 " + "Texas 1 31 \n", + "Florida 1 2 " ] }, "execution_count": 11, @@ -957,7 +1024,7 @@ } ], "source": [ - "army.iloc[:3]" + "army.iloc[:4, :]" ] }, { @@ -970,18 +1037,31 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -991,77 +1071,103 @@ " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1071,20 +1177,20 @@ "" ], "text/plain": [ - " size veterans readiness\n", - "origin \n", - "Arizona 1045 1 1\n", - "California 957 5 2\n", - "Texas 1099 62 3\n", - "Florida 1400 26 3\n", - "Maine 1592 73 2\n", - "Iowa 1006 37 1\n", - "Alaska 987 949 2\n", - "Washington 849 48 3\n", - "Oregon 973 48 2\n", - "Wyoming 1005 435 1\n", - "Louisana 1099 63 2\n", - "Georgia 1523 345 3" + " deaths battles size veterans readiness\n", + "origin \n", + "Arizona 523 5 1045 1 1\n", + "California 52 42 957 5 2\n", + "Texas 25 2 1099 62 3\n", + "Florida 616 2 1400 26 3\n", + "Maine 43 4 1592 73 2\n", + "Iowa 234 7 1006 37 1\n", + "Alaska 523 8 987 949 2\n", + "Washington 62 3 849 48 3\n", + "Oregon 62 4 973 48 2\n", + "Wyoming 73 7 1005 435 1\n", + "Louisana 37 8 1099 63 2\n", + "Georgia 35 9 1523 345 3" ] }, "execution_count": 12, @@ -1093,10 +1199,7 @@ } ], "source": [ - "# the first : means all\n", - "# after the comma you select the range\n", - "\n", - "army.iloc[: , 4:7]" + "army.iloc[:, 2:7]" ] }, { @@ -1109,14 +1212,25 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
deathsbattlessizeveteransreadiness
Arizona5235104511
California524295752
Texas2521099623
Florida61621400263
Maine4341592732
Iowa23471006371
Alaska52389879492
Washington623849483
Oregon624973482
Wyoming73710054351
Louisana3781099632
Georgia35915233453
\n", " \n", " \n", @@ -1275,7 +1389,7 @@ } ], "source": [ - "army[army['deaths'] > 50]" + "army[army[\"deaths\"] > 50]" ] }, { @@ -1288,14 +1402,25 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1440,7 +1565,7 @@ } ], "source": [ - "army[(army['deaths'] > 500) | (army['deaths'] < 50)]" + "army[(army[\"deaths\"] > 500) | (army[\"deaths\"] < 50)]" ] }, { @@ -1453,14 +1578,25 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1619,7 +1755,7 @@ } ], "source": [ - "army[(army['regiment'] != 'Dragoons')]" + "army[army[\"regiment\"] != \"Dragoons\"]" ] }, { @@ -1632,14 +1768,25 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1669,18 +1816,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -1692,6 +1827,18 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
ArizonaNighthawks1st523510451114
TexasNighthawks2nd131
ArizonaNighthawks1st523510451114
\n", "
" @@ -1699,13 +1846,13 @@ "text/plain": [ " regiment company deaths battles size veterans readiness \\\n", "origin \n", - "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "Texas Nighthawks 2nd 25 2 1099 62 3 \n", + "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "\n", " armored deserters \n", "origin \n", - "Arizona 1 4 \n", - "Texas 1 31 " + "Texas 1 31 \n", + "Arizona 1 4 " ] }, "execution_count": 16, @@ -1714,7 +1861,7 @@ } ], "source": [ - "army.loc[['Arizona', 'Texas']]" + "army.loc[[\"Texas\", \"Arizona\"], :]" ] }, { @@ -1727,9 +1874,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1745,11 +1890,7 @@ } ], "source": [ - "army.loc[['Arizona'], ['deaths']]\n", - "\n", - "#OR\n", - "\n", - "army.iloc[[0], army.columns.get_loc('deaths')]" + "army.loc[[\"Arizona\"]].iloc[:, 2]" ] }, { @@ -1762,16 +1903,13 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "origin\n", - "Texas 25\n", - "Name: deaths, dtype: int64" + "deaths 25\n", + "Name: Texas, dtype: int64" ] }, "execution_count": 18, @@ -1780,34 +1918,29 @@ } ], "source": [ - "army.loc['Texas', 'deaths']\n", - "\n", - "#OR\n", - "\n", - "army.iloc[[2], army.columns.get_loc('deaths')]\n" + "army.loc[:, [\"deaths\"]].iloc[2]" ] } ], "metadata": { - "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.6.5" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From 1ae7c0da9fe3dacc7e27cc2aa281958022286fc2 Mon Sep 17 00:00:00 2001 From: GermaVinsmoke Date: Thu, 21 Feb 2019 10:43:19 +0530 Subject: [PATCH 63/92] Added some more ways for 2 questions --- .../Occupation/Exercise_with_Solution.ipynb | 80 +++++++------------ 1 file changed, 27 insertions(+), 53 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb index ce670abbd..8d24cee60 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb @@ -20,9 +20,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -45,9 +43,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "users = pd.read_table('https://raw.githubusercontent.com/justmarkham/DAT8/master/data/u.user', \n", @@ -65,7 +61,6 @@ "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -320,7 +315,6 @@ "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -454,9 +448,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -483,9 +475,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -512,9 +502,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -541,9 +529,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -574,9 +560,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -607,9 +591,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -702,9 +684,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -718,7 +698,9 @@ } ], "source": [ - "users.occupation.nunique()" + "users.occupation.nunique()\n", + "#or by using value_counts() which returns the count of unique elements\n", + "#users.occupation.value_counts().count()" ] }, { @@ -731,9 +713,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -752,7 +732,10 @@ } ], "source": [ - "users.occupation.value_counts().head()" + "users.occupation.value_counts().head()\n", + "#or\n", + "#Because \"most\" is asked\n", + "#users.occupation.value_counts().head(1).index[0]" ] }, { @@ -765,9 +748,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -849,7 +830,6 @@ "cell_type": "code", "execution_count": 15, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -983,9 +963,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1016,9 +994,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1045,9 +1021,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1073,23 +1047,23 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.6.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From dff220609015d7e715a2ee9b432d719363f044a6 Mon Sep 17 00:00:00 2001 From: Gaurang Tandon <1gaurangtandon@gmail.com> Date: Thu, 9 May 2019 14:42:58 +0530 Subject: [PATCH 64/92] Update Solutions.ipynb --- 03_Grouping/Alcohol_Consumption/Solutions.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/03_Grouping/Alcohol_Consumption/Solutions.ipynb b/03_Grouping/Alcohol_Consumption/Solutions.ipynb index 42e9a809d..b8bd6950c 100644 --- a/03_Grouping/Alcohol_Consumption/Solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Solutions.ipynb @@ -245,7 +245,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print the mean alcoohol consumption per continent for every column" + "### Step 6. Print the mean alcohol consumption per continent for every column" ] }, { @@ -345,7 +345,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Print the median alcoohol consumption per continent for every column" + "### Step 7. Print the median alcohol consumption per continent for every column" ] }, { @@ -549,4 +549,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} From 080cd35098085c2bc76f16f2875ef83a0d74d5dc Mon Sep 17 00:00:00 2001 From: Gaurang Tandon <1gaurangtandon@gmail.com> Date: Thu, 9 May 2019 14:44:01 +0530 Subject: [PATCH 65/92] Update Exercise_with_solutions.ipynb --- .../Alcohol_Consumption/Exercise_with_solutions.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb index 55258575d..e15d8e4bd 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb @@ -254,7 +254,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print the mean alcoohol consumption per continent for every column" + "### Step 6. Print the mean alcohol consumption per continent for every column" ] }, { @@ -356,7 +356,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Print the median alcoohol consumption per continent for every column" + "### Step 7. Print the median alcohol consumption per continent for every column" ] }, { @@ -564,4 +564,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} From fac3ee80a641413a3cac8eaa57318c0b7a8a4961 Mon Sep 17 00:00:00 2001 From: Gaurang Tandon <1gaurangtandon@gmail.com> Date: Thu, 9 May 2019 14:44:13 +0530 Subject: [PATCH 66/92] Update Exercise.ipynb --- 03_Grouping/Alcohol_Consumption/Exercise.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/03_Grouping/Alcohol_Consumption/Exercise.ipynb b/03_Grouping/Alcohol_Consumption/Exercise.ipynb index 7ca680cec..7f2e3404e 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise.ipynb @@ -89,7 +89,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print the mean alcoohol consumption per continent for every column" + "### Step 6. Print the mean alcohol consumption per continent for every column" ] }, { @@ -105,7 +105,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Print the median alcoohol consumption per continent for every column" + "### Step 7. Print the median alcohol consumption per continent for every column" ] }, { @@ -156,4 +156,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} From f0c5b480ec901c86af3f361aeca0cc5cf3fa16fe Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Thu, 20 Jun 2019 17:52:35 +0200 Subject: [PATCH 67/92] update data link titanic --- .../Titanic_Desaster/Exercises.ipynb | 34 ++++++------------- .../Exercises_code_with_solutions.ipynb | 34 ++++++------------- .../Titanic_Desaster/Solutions.ipynb | 34 ++++++------------- 3 files changed, 30 insertions(+), 72 deletions(-) diff --git a/07_Visualization/Titanic_Desaster/Exercises.ipynb b/07_Visualization/Titanic_Desaster/Exercises.ipynb index e5a05c630..001f52f7c 100644 --- a/07_Visualization/Titanic_Desaster/Exercises.ipynb +++ b/07_Visualization/Titanic_Desaster/Exercises.ipynb @@ -23,9 +23,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -33,7 +31,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Titanic_Desaster/train.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Titanic_Desaster/train.csv)" ] }, { @@ -46,9 +44,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -62,9 +58,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -78,9 +72,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -94,9 +86,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -110,9 +100,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -126,9 +114,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -165,9 +151,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.16" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb b/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb index 94aa215c1..2d438d85a 100644 --- a/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb +++ b/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb @@ -23,9 +23,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -40,7 +38,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Titanic_Desaster/train.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Titanic_Desaster/train.csv) " ] }, { @@ -53,9 +51,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -205,9 +201,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -364,9 +358,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -432,9 +424,7 @@ { "cell_type": "code", "execution_count": 67, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -480,9 +470,7 @@ { "cell_type": "code", "execution_count": 68, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -509,9 +497,7 @@ { "cell_type": "code", "execution_count": 48, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -578,9 +564,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.16" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/07_Visualization/Titanic_Desaster/Solutions.ipynb b/07_Visualization/Titanic_Desaster/Solutions.ipynb index 7824ff8a7..1f6e71784 100644 --- a/07_Visualization/Titanic_Desaster/Solutions.ipynb +++ b/07_Visualization/Titanic_Desaster/Solutions.ipynb @@ -23,9 +23,7 @@ { "cell_type": "code", "execution_count": 80, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -40,7 +38,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/Visualization/Titanic_Desaster/train.csv). " + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/07_Visualization/Titanic_Desaster/train.csv) " ] }, { @@ -53,9 +51,7 @@ { "cell_type": "code", "execution_count": 23, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -199,9 +195,7 @@ { "cell_type": "code", "execution_count": 22, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -356,9 +350,7 @@ { "cell_type": "code", "execution_count": 24, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -383,9 +375,7 @@ { "cell_type": "code", "execution_count": 67, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -420,9 +410,7 @@ { "cell_type": "code", "execution_count": 68, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -447,9 +435,7 @@ { "cell_type": "code", "execution_count": 93, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -497,9 +483,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.16" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From bec0b85c81a03dee11fd32ecbdfb24cb8cbaf329 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Fri, 9 Aug 2019 05:45:06 +0200 Subject: [PATCH 68/92] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..3e8cce62d --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at gui.psamora@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq From 159cd4943ef5f54b5eae9db738a5f3eae3116c34 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 17 Aug 2019 10:09:21 +0200 Subject: [PATCH 69/92] test --- .DS_Store | Bin 14340 -> 14340 bytes 10_Deleting/.DS_Store | Bin 0 -> 6148 bytes Template/Solutions.ipynb | 301 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 301 insertions(+) create mode 100644 10_Deleting/.DS_Store create mode 100644 Template/Solutions.ipynb diff --git a/.DS_Store b/.DS_Store index b727542f743b184759fcdb443de193acd219eeb4..797e60ef37548d4293cbcec150552b24d2521912 100644 GIT binary patch delta 185 zcmZoEXepTB&nUSuU^hP_@8m)~k-h608hhD3%EhE$j&aj|1XaK delta 48 zcmZoEXepTB&nUJrU^hP_*W^MykDi;xmI3$V#&14>;`|? E0fa*k0{{R3 diff --git a/10_Deleting/.DS_Store b/10_Deleting/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f372239509f030e65c1c13b988b86b88e8907d5f GIT binary patch literal 6148 zcmeH~F^70sFVa3b;3<8?WIwkBDIf);fE17d zQeZ|3+P_@gl09MAO)nrM1e)mM?e2}^#A7nNsCe` zAO+q`0UNf5?S?OvXY14JdHtAGUpG1#moq&41TgWVctsE6e(?oaldY2#ntlXA1_deb HQU(41^+FPy literal 0 HcmV?d00001 diff --git a/Template/Solutions.ipynb b/Template/Solutions.ipynb new file mode 100644 index 000000000..c0ef7644d --- /dev/null +++ b/Template/Solutions.ipynb @@ -0,0 +1,301 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ex - " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introduction:\n", + "\n", + "This time you will create a data \n", + "\n", + "Special thanks to: https://github.com/justmarkham for sharing the dataset and materials.\n", + "\n", + "### Step 1. Import the necessary libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2. Import the dataset from this [address](https://raw.githubusercontent.com/justmarkham/DAT8/master/data/chipotle.tsv). " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3. Assign it to a variable called " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 8. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 9. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 10. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 11. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 12. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 13. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 14. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 15. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 16. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### BONUS: Create your own question and answer it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 1efec5f37ba164ac65cd310f0eadc443f265e54d Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sat, 17 Aug 2019 10:19:23 +0200 Subject: [PATCH 70/92] alcohol typo --- .../Alcohol_Consumption/Exercise.ipynb | 38 ++++++------------- .../Exercise_with_solutions.ipynb | 38 ++++++------------- .../Alcohol_Consumption/Solutions.ipynb | 38 ++++++------------- 3 files changed, 36 insertions(+), 78 deletions(-) diff --git a/03_Grouping/Alcohol_Consumption/Exercise.ipynb b/03_Grouping/Alcohol_Consumption/Exercise.ipynb index 7ca680cec..ade81f187 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise.ipynb @@ -24,9 +24,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -63,9 +59,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -79,9 +73,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -89,15 +81,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print the mean alcoohol consumption per continent for every column" + "### Step 6. Print the mean alcohol consumption per continent for every column" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -105,15 +95,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Print the median alcoohol consumption per continent for every column" + "### Step 7. Print the median alcohol consumption per continent for every column" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -128,9 +116,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] } @@ -151,9 +137,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.16" } }, "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file + "nbformat_minor": 1 +} diff --git a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb index 55258575d..70bcfe42a 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb @@ -24,9 +24,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -49,9 +47,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -155,9 +151,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -190,9 +184,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -254,15 +246,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print the mean alcoohol consumption per continent for every column" + "### Step 6. Print the mean alcohol consumption per continent for every column" ] }, { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -356,15 +346,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Print the median alcoohol consumption per continent for every column" + "### Step 7. Print the median alcohol consumption per continent for every column" ] }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -465,9 +453,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -559,9 +545,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.16" } }, "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file + "nbformat_minor": 1 +} diff --git a/03_Grouping/Alcohol_Consumption/Solutions.ipynb b/03_Grouping/Alcohol_Consumption/Solutions.ipynb index 42e9a809d..b396d0e89 100644 --- a/03_Grouping/Alcohol_Consumption/Solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Solutions.ipynb @@ -24,9 +24,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -47,9 +45,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -150,9 +146,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -183,9 +177,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -245,15 +237,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print the mean alcoohol consumption per continent for every column" + "### Step 6. Print the mean alcohol consumption per continent for every column" ] }, { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -345,15 +335,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Print the median alcoohol consumption per continent for every column" + "### Step 7. Print the median alcohol consumption per continent for every column" ] }, { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -452,9 +440,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -544,9 +530,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.16" } }, "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file + "nbformat_minor": 1 +} From cf8ef3188a62ce6efd3d7969264977ec63653cd6 Mon Sep 17 00:00:00 2001 From: zaheer031 <55192832+zaheer031@users.noreply.github.com> Date: Sun, 22 Sep 2019 19:04:45 +0530 Subject: [PATCH 71/92] Update Exercise_with_Solutions.ipynb --- 07_Visualization/Chipotle/Exercise_with_Solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb index 39a64b0cb..446a2f52d 100644 --- a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb +++ b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb @@ -26,7 +26,7 @@ "outputs": [], "source": [ "import pandas as pd\n", - "import collections\n", + "from collections import Counter \n", "import matplotlib.pyplot as plt \n", "\n", "# set this so the \n", From 71d0c4829897495f768678e3cfcd4916a399e91e Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 13 Oct 2019 15:18:53 +0200 Subject: [PATCH 72/92] made all exercise file consistent --- .DS_Store | Bin 14340 -> 14340 bytes .../Chipotle/Exercise_with_Solutions.ipynb | 37 ++++++------------ 07_Visualization/Chipotle/Exercises.ipynb | 37 ++++++------------ 07_Visualization/Chipotle/Solutions.ipynb | 37 ++++++------------ 4 files changed, 39 insertions(+), 72 deletions(-) diff --git a/.DS_Store b/.DS_Store index 797e60ef37548d4293cbcec150552b24d2521912..55b642fb35e2eea5638cede95af34587094958f2 100644 GIT binary patch delta 34 qcmZoEXeroWEXBw$Sx`!9v!7HG>%>Cq&D;t{`6m{dZ)P|6%MJj=X$yA% delta 30 jcmZoEXeroWEHznCQhKwWR1+&B Date: Sun, 13 Oct 2019 15:49:13 +0200 Subject: [PATCH 73/92] updated all files --- .../Fictional Army/Exercise.ipynb | 84 +-- .../Exercise_with_solutions.ipynb | 575 +++++++++------- .../Fictional Army/Solutions.ipynb | 611 ++++++++++++------ 3 files changed, 781 insertions(+), 489 deletions(-) diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb index 3e0ddbfdb..f2bd279e3 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise.ipynb @@ -23,9 +23,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -71,9 +69,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -87,9 +83,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -103,9 +97,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -119,9 +111,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -135,9 +125,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -151,9 +139,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -167,9 +153,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -177,15 +161,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. Select every row after the fourth row" + "### Step 10. Select every row after the fourth row and all columns" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -193,15 +175,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 11. Select every row up to the 4th row" + "### Step 11. Select every row up to the 4th row and all columns" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -215,9 +195,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -231,9 +209,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -247,9 +223,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -263,9 +237,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -279,9 +251,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -295,9 +265,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -311,32 +279,30 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb index 279d939a4..9d98ce4c0 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb @@ -23,9 +23,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -41,9 +39,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# Create an example dataframe about a fictional army\n", @@ -71,32 +67,25 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "army = pd.DataFrame(raw_data, columns = ['regiment', 'company', 'deaths', 'battles', 'size', 'veterans', 'readiness', 'armored', 'deserters', 'origin'])" - ] - }, - { - "cell_type": "markdown", "metadata": {}, - "source": [ - "### Step 4. Set the 'origin' colum as the index of the dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -110,23 +99,12 @@ " \n", " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -136,9 +114,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -148,9 +127,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -160,9 +140,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -172,9 +153,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -184,9 +166,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -196,9 +179,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -208,9 +192,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -220,9 +205,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -232,9 +218,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -244,9 +231,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -256,9 +244,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -268,53 +257,68 @@ " \n", " \n", " \n", + " \n", " \n", " \n", "
readinessarmoreddeserters
origin
Arizona0Nighthawks1st523114Arizona
California1Nighthawks1st522024California
Texas2Nighthawks2nd253131Texas
Florida3Nighthawks2nd616312Florida
Maine4Dragoons1st43203Maine
Iowa5Dragoons1st234114Iowa
Alaska6Dragoons2nd5232024Alaska
Washington7Dragoons2nd623131Washington
Oregon8Scouts1st62202Oregon
Wyoming9Scouts1st73103Wyoming
Louisana10Scouts2nd37212Louisana
Georgia11Scouts2nd35313Georgia
\n", "
" ], "text/plain": [ - " regiment company deaths battles size veterans readiness \\\n", - "origin \n", - "Arizona Nighthawks 1st 523 5 1045 1 1 \n", - "California Nighthawks 1st 52 42 957 5 2 \n", - "Texas Nighthawks 2nd 25 2 1099 62 3 \n", - "Florida Nighthawks 2nd 616 2 1400 26 3 \n", - "Maine Dragoons 1st 43 4 1592 73 2 \n", - "Iowa Dragoons 1st 234 7 1006 37 1 \n", - "Alaska Dragoons 2nd 523 8 987 949 2 \n", - "Washington Dragoons 2nd 62 3 849 48 3 \n", - "Oregon Scouts 1st 62 4 973 48 2 \n", - "Wyoming Scouts 1st 73 7 1005 435 1 \n", - "Louisana Scouts 2nd 37 8 1099 63 2 \n", - "Georgia Scouts 2nd 35 9 1523 345 3 \n", + " regiment company deaths battles size veterans readiness armored \\\n", + "0 Nighthawks 1st 523 5 1045 1 1 1 \n", + "1 Nighthawks 1st 52 42 957 5 2 0 \n", + "2 Nighthawks 2nd 25 2 1099 62 3 1 \n", + "3 Nighthawks 2nd 616 2 1400 26 3 1 \n", + "4 Dragoons 1st 43 4 1592 73 2 0 \n", + "5 Dragoons 1st 234 7 1006 37 1 1 \n", + "6 Dragoons 2nd 523 8 987 949 2 0 \n", + "7 Dragoons 2nd 62 3 849 48 3 1 \n", + "8 Scouts 1st 62 4 973 48 2 0 \n", + "9 Scouts 1st 73 7 1005 435 1 0 \n", + "10 Scouts 2nd 37 8 1099 63 2 1 \n", + "11 Scouts 2nd 35 9 1523 345 3 1 \n", "\n", - " armored deserters \n", - "origin \n", - "Arizona 1 4 \n", - "California 0 24 \n", - "Texas 1 31 \n", - "Florida 1 2 \n", - "Maine 0 3 \n", - "Iowa 1 4 \n", - "Alaska 0 24 \n", - "Washington 1 31 \n", - "Oregon 0 2 \n", - "Wyoming 0 3 \n", - "Louisana 1 2 \n", - "Georgia 1 3 " + " deserters origin \n", + "0 4 Arizona \n", + "1 24 California \n", + "2 31 Texas \n", + "3 2 Florida \n", + "4 3 Maine \n", + "5 4 Iowa \n", + "6 24 Alaska \n", + "7 31 Washington \n", + "8 2 Oregon \n", + "9 3 Wyoming \n", + "10 2 Louisana \n", + "11 3 Georgia " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "army = army.set_index('origin')\n", + "army = pd.DataFrame(data=raw_data)\n", "army" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Set the 'origin' colum as the index of the dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "army.set_index('origin', inplace=True)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -325,9 +329,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -354,7 +356,7 @@ } ], "source": [ - "army['veterans']" + "army.veterans" ] }, { @@ -367,14 +369,25 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -476,7 +489,7 @@ } ], "source": [ - "army[['veterans', 'deaths']]" + "army[[\"veterans\", \"deaths\"]]" ] }, { @@ -489,15 +502,13 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Index([u'regiment', u'company', u'deaths', u'battles', u'size', u'veterans',\n", - " u'readiness', u'armored', u'deserters'],\n", + "Index(['regiment', 'company', 'deaths', 'battles', 'size', 'veterans',\n", + " 'readiness', 'armored', 'deserters'],\n", " dtype='object')" ] }, @@ -520,14 +531,25 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -573,8 +595,7 @@ } ], "source": [ - "# Select all rows with the index label \"Maine\" and \"Alaska\"\n", - "army.loc[['Maine','Alaska'] , [\"deaths\",\"size\",\"deserters\"]]" + "army.loc[[\"Maine\", \"Alaska\"], [\"deaths\", \"size\", \"deserters\"]]" ] }, { @@ -587,18 +608,30 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -608,29 +641,41 @@ " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -640,12 +685,13 @@ "" ], "text/plain": [ - " battles size veterans\n", - "origin \n", - "Florida 2 1400 26\n", - "Maine 4 1592 73\n", - "Iowa 7 1006 37\n", - "Alaska 8 987 949" + " deaths battles size veterans\n", + "origin \n", + "Texas 25 2 1099 62\n", + "Florida 616 2 1400 26\n", + "Maine 43 4 1592 73\n", + "Iowa 234 7 1006 37\n", + "Alaska 523 8 987 949" ] }, "execution_count": 9, @@ -654,28 +700,38 @@ } ], "source": [ - "#\n", - "army.iloc[3:7, 3:6]" + "army.iloc[2:7, 2:6]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. Select every row after the fourth row" + "### Step 10. Select every row after the fourth row and all columns" ] }, { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
deathsbattlessizeveterans
Texas252109962
Florida6162140026
Maine434159273
Iowa2347100637
Alaska5238987949
\n", " \n", " \n", @@ -705,18 +761,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -817,21 +861,19 @@ "" ], "text/plain": [ - " regiment company deaths battles size veterans readiness \\\n", - "origin \n", - "Florida Nighthawks 2nd 616 2 1400 26 3 \n", - "Maine Dragoons 1st 43 4 1592 73 2 \n", - "Iowa Dragoons 1st 234 7 1006 37 1 \n", - "Alaska Dragoons 2nd 523 8 987 949 2 \n", - "Washington Dragoons 2nd 62 3 849 48 3 \n", - "Oregon Scouts 1st 62 4 973 48 2 \n", - "Wyoming Scouts 1st 73 7 1005 435 1 \n", - "Louisana Scouts 2nd 37 8 1099 63 2 \n", - "Georgia Scouts 2nd 35 9 1523 345 3 \n", + " regiment company deaths battles size veterans readiness \\\n", + "origin \n", + "Maine Dragoons 1st 43 4 1592 73 2 \n", + "Iowa Dragoons 1st 234 7 1006 37 1 \n", + "Alaska Dragoons 2nd 523 8 987 949 2 \n", + "Washington Dragoons 2nd 62 3 849 48 3 \n", + "Oregon Scouts 1st 62 4 973 48 2 \n", + "Wyoming Scouts 1st 73 7 1005 435 1 \n", + "Louisana Scouts 2nd 37 8 1099 63 2 \n", + "Georgia Scouts 2nd 35 9 1523 345 3 \n", "\n", " armored deserters \n", "origin \n", - "Florida 1 2 \n", "Maine 0 3 \n", "Iowa 1 4 \n", "Alaska 0 24 \n", @@ -848,27 +890,38 @@ } ], "source": [ - "army.iloc[3:]" + "army.iloc[4:, :]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 11. Select every row up to the 4th row" + "### Step 11. Select every row up to the 4th row and all columns" ] }, { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
FloridaNighthawks2nd6162140026312
MaineDragoons1st
\n", " \n", " \n", @@ -933,6 +986,18 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
131
FloridaNighthawks2nd6162140026312
\n", "
" @@ -943,12 +1008,14 @@ "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "California Nighthawks 1st 52 42 957 5 2 \n", "Texas Nighthawks 2nd 25 2 1099 62 3 \n", + "Florida Nighthawks 2nd 616 2 1400 26 3 \n", "\n", " armored deserters \n", "origin \n", "Arizona 1 4 \n", "California 0 24 \n", - "Texas 1 31 " + "Texas 1 31 \n", + "Florida 1 2 " ] }, "execution_count": 11, @@ -957,7 +1024,7 @@ } ], "source": [ - "army.iloc[:3]" + "army.iloc[:4, :]" ] }, { @@ -970,18 +1037,31 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -991,77 +1071,103 @@ " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1071,20 +1177,20 @@ "" ], "text/plain": [ - " size veterans readiness\n", - "origin \n", - "Arizona 1045 1 1\n", - "California 957 5 2\n", - "Texas 1099 62 3\n", - "Florida 1400 26 3\n", - "Maine 1592 73 2\n", - "Iowa 1006 37 1\n", - "Alaska 987 949 2\n", - "Washington 849 48 3\n", - "Oregon 973 48 2\n", - "Wyoming 1005 435 1\n", - "Louisana 1099 63 2\n", - "Georgia 1523 345 3" + " deaths battles size veterans readiness\n", + "origin \n", + "Arizona 523 5 1045 1 1\n", + "California 52 42 957 5 2\n", + "Texas 25 2 1099 62 3\n", + "Florida 616 2 1400 26 3\n", + "Maine 43 4 1592 73 2\n", + "Iowa 234 7 1006 37 1\n", + "Alaska 523 8 987 949 2\n", + "Washington 62 3 849 48 3\n", + "Oregon 62 4 973 48 2\n", + "Wyoming 73 7 1005 435 1\n", + "Louisana 37 8 1099 63 2\n", + "Georgia 35 9 1523 345 3" ] }, "execution_count": 12, @@ -1093,10 +1199,7 @@ } ], "source": [ - "# the first : means all\n", - "# after the comma you select the range\n", - "\n", - "army.iloc[: , 4:7]" + "army.iloc[:, 2:7]" ] }, { @@ -1109,14 +1212,25 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
deathsbattlessizeveteransreadiness
Arizona5235104511
California524295752
Texas2521099623
Florida61621400263
Maine4341592732
Iowa23471006371
Alaska52389879492
Washington623849483
Oregon624973482
Wyoming73710054351
Louisana3781099632
Georgia35915233453
\n", " \n", " \n", @@ -1275,7 +1389,7 @@ } ], "source": [ - "army[army['deaths'] > 50]" + "army[army[\"deaths\"] > 50]" ] }, { @@ -1288,14 +1402,25 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1440,7 +1565,7 @@ } ], "source": [ - "army[(army['deaths'] > 500) | (army['deaths'] < 50)]" + "army[(army[\"deaths\"] > 500) | (army[\"deaths\"] < 50)]" ] }, { @@ -1453,14 +1578,25 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1619,7 +1755,7 @@ } ], "source": [ - "army[(army['regiment'] != 'Dragoons')]" + "army[army[\"regiment\"] != \"Dragoons\"]" ] }, { @@ -1632,14 +1768,25 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1669,18 +1816,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -1692,6 +1827,18 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
ArizonaNighthawks1st523510451114
TexasNighthawks2nd131
ArizonaNighthawks1st523510451114
\n", "
" @@ -1699,13 +1846,13 @@ "text/plain": [ " regiment company deaths battles size veterans readiness \\\n", "origin \n", - "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "Texas Nighthawks 2nd 25 2 1099 62 3 \n", + "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "\n", " armored deserters \n", "origin \n", - "Arizona 1 4 \n", - "Texas 1 31 " + "Texas 1 31 \n", + "Arizona 1 4 " ] }, "execution_count": 16, @@ -1714,7 +1861,7 @@ } ], "source": [ - "army.loc[['Arizona', 'Texas']]" + "army.loc[[\"Texas\", \"Arizona\"], :]" ] }, { @@ -1727,9 +1874,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1745,11 +1890,7 @@ } ], "source": [ - "army.loc[['Arizona'], ['deaths']]\n", - "\n", - "#OR\n", - "\n", - "army.iloc[[0], army.columns.get_loc('deaths')]" + "army.loc[[\"Arizona\"]].iloc[:, 2]" ] }, { @@ -1762,16 +1903,13 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "origin\n", - "Texas 25\n", - "Name: deaths, dtype: int64" + "deaths 25\n", + "Name: Texas, dtype: int64" ] }, "execution_count": 18, @@ -1780,34 +1918,29 @@ } ], "source": [ - "army.loc['Texas', 'deaths']\n", - "\n", - "#OR\n", - "\n", - "army.iloc[[2], army.columns.get_loc('deaths')]\n" + "army.loc[:, [\"deaths\"]].iloc[2]" ] } ], "metadata": { - "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb index d90d2f5b9..9d98ce4c0 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Solutions.ipynb @@ -23,11 +23,11 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "import pandas as pd" + ] }, { "cell_type": "markdown", @@ -39,11 +39,21 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Create an example dataframe about a fictional army\n", + "raw_data = {'regiment': ['Nighthawks', 'Nighthawks', 'Nighthawks', 'Nighthawks', 'Dragoons', 'Dragoons', 'Dragoons', 'Dragoons', 'Scouts', 'Scouts', 'Scouts', 'Scouts'],\n", + " 'company': ['1st', '1st', '2nd', '2nd', '1st', '1st', '2nd', '2nd','1st', '1st', '2nd', '2nd'],\n", + " 'deaths': [523, 52, 25, 616, 43, 234, 523, 62, 62, 73, 37, 35],\n", + " 'battles': [5, 42, 2, 2, 4, 7, 8, 3, 4, 7, 8, 9],\n", + " 'size': [1045, 957, 1099, 1400, 1592, 1006, 987, 849, 973, 1005, 1099, 1523],\n", + " 'veterans': [1, 5, 62, 26, 73, 37, 949, 48, 48, 435, 63, 345],\n", + " 'readiness': [1, 2, 3, 3, 2, 1, 2, 3, 2, 1, 2, 3],\n", + " 'armored': [1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1],\n", + " 'deserters': [4, 24, 31, 2, 3, 4, 24, 31, 2, 3, 2, 3],\n", + " 'origin': ['Arizona', 'California', 'Texas', 'Florida', 'Maine', 'Iowa', 'Alaska', 'Washington', 'Oregon', 'Wyoming', 'Louisana', 'Georgia']}" + ] }, { "cell_type": "markdown", @@ -57,30 +67,25 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", "metadata": {}, - "source": [ - "### Step 4. Set the 'origin' colum as the index of the dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -94,23 +99,12 @@ " \n", " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -120,9 +114,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -132,9 +127,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -144,9 +140,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -156,9 +153,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -168,9 +166,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -180,9 +179,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -192,9 +192,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -204,9 +205,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -216,9 +218,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -228,9 +231,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -240,9 +244,10 @@ " \n", " \n", " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -252,49 +257,67 @@ " \n", " \n", " \n", + " \n", " \n", " \n", "
readinessarmoreddeserters
origin
Arizona0Nighthawks1st523114Arizona
California1Nighthawks1st522024California
Texas2Nighthawks2nd253131Texas
Florida3Nighthawks2nd616312Florida
Maine4Dragoons1st43203Maine
Iowa5Dragoons1st234114Iowa
Alaska6Dragoons2nd5232024Alaska
Washington7Dragoons2nd623131Washington
Oregon8Scouts1st62202Oregon
Wyoming9Scouts1st73103Wyoming
Louisana10Scouts2nd37212Louisana
Georgia11Scouts2nd35313Georgia
\n", "
" ], "text/plain": [ - " regiment company deaths battles size veterans readiness \\\n", - "origin \n", - "Arizona Nighthawks 1st 523 5 1045 1 1 \n", - "California Nighthawks 1st 52 42 957 5 2 \n", - "Texas Nighthawks 2nd 25 2 1099 62 3 \n", - "Florida Nighthawks 2nd 616 2 1400 26 3 \n", - "Maine Dragoons 1st 43 4 1592 73 2 \n", - "Iowa Dragoons 1st 234 7 1006 37 1 \n", - "Alaska Dragoons 2nd 523 8 987 949 2 \n", - "Washington Dragoons 2nd 62 3 849 48 3 \n", - "Oregon Scouts 1st 62 4 973 48 2 \n", - "Wyoming Scouts 1st 73 7 1005 435 1 \n", - "Louisana Scouts 2nd 37 8 1099 63 2 \n", - "Georgia Scouts 2nd 35 9 1523 345 3 \n", + " regiment company deaths battles size veterans readiness armored \\\n", + "0 Nighthawks 1st 523 5 1045 1 1 1 \n", + "1 Nighthawks 1st 52 42 957 5 2 0 \n", + "2 Nighthawks 2nd 25 2 1099 62 3 1 \n", + "3 Nighthawks 2nd 616 2 1400 26 3 1 \n", + "4 Dragoons 1st 43 4 1592 73 2 0 \n", + "5 Dragoons 1st 234 7 1006 37 1 1 \n", + "6 Dragoons 2nd 523 8 987 949 2 0 \n", + "7 Dragoons 2nd 62 3 849 48 3 1 \n", + "8 Scouts 1st 62 4 973 48 2 0 \n", + "9 Scouts 1st 73 7 1005 435 1 0 \n", + "10 Scouts 2nd 37 8 1099 63 2 1 \n", + "11 Scouts 2nd 35 9 1523 345 3 1 \n", "\n", - " armored deserters \n", - "origin \n", - "Arizona 1 4 \n", - "California 0 24 \n", - "Texas 1 31 \n", - "Florida 1 2 \n", - "Maine 0 3 \n", - "Iowa 1 4 \n", - "Alaska 0 24 \n", - "Washington 1 31 \n", - "Oregon 0 2 \n", - "Wyoming 0 3 \n", - "Louisana 1 2 \n", - "Georgia 1 3 " + " deserters origin \n", + "0 4 Arizona \n", + "1 24 California \n", + "2 31 Texas \n", + "3 2 Florida \n", + "4 3 Maine \n", + "5 4 Iowa \n", + "6 24 Alaska \n", + "7 31 Washington \n", + "8 2 Oregon \n", + "9 3 Wyoming \n", + "10 2 Louisana \n", + "11 3 Georgia " ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "army = pd.DataFrame(data=raw_data)\n", + "army" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Set the 'origin' colum as the index of the dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "army.set_index('origin', inplace=True)" + ] }, { "cell_type": "markdown", @@ -306,9 +329,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -334,7 +355,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.veterans" + ] }, { "cell_type": "markdown", @@ -346,14 +369,25 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -454,7 +488,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army[[\"veterans\", \"deaths\"]]" + ] }, { "cell_type": "markdown", @@ -466,15 +502,13 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Index([u'regiment', u'company', u'deaths', u'battles', u'size', u'veterans',\n", - " u'readiness', u'armored', u'deserters'],\n", + "Index(['regiment', 'company', 'deaths', 'battles', 'size', 'veterans',\n", + " 'readiness', 'armored', 'deserters'],\n", " dtype='object')" ] }, @@ -483,7 +517,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.columns" + ] }, { "cell_type": "markdown", @@ -495,14 +531,25 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -547,7 +594,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.loc[[\"Maine\", \"Alaska\"], [\"deaths\", \"size\", \"deserters\"]]" + ] }, { "cell_type": "markdown", @@ -559,18 +608,30 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -580,29 +641,41 @@ " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", @@ -612,12 +685,13 @@ "" ], "text/plain": [ - " battles size veterans\n", - "origin \n", - "Florida 2 1400 26\n", - "Maine 4 1592 73\n", - "Iowa 7 1006 37\n", - "Alaska 8 987 949" + " deaths battles size veterans\n", + "origin \n", + "Texas 25 2 1099 62\n", + "Florida 616 2 1400 26\n", + "Maine 43 4 1592 73\n", + "Iowa 234 7 1006 37\n", + "Alaska 523 8 987 949" ] }, "execution_count": 9, @@ -625,26 +699,39 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.iloc[2:7, 2:6]" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 10. Select every row after the fourth row" + "### Step 10. Select every row after the fourth row and all columns" ] }, { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
deathsbattlessizeveterans
Texas252109962
Florida6162140026
Maine434159273
Iowa2347100637
Alaska5238987949
\n", " \n", " \n", @@ -674,18 +761,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -786,21 +861,19 @@ "" ], "text/plain": [ - " regiment company deaths battles size veterans readiness \\\n", - "origin \n", - "Florida Nighthawks 2nd 616 2 1400 26 3 \n", - "Maine Dragoons 1st 43 4 1592 73 2 \n", - "Iowa Dragoons 1st 234 7 1006 37 1 \n", - "Alaska Dragoons 2nd 523 8 987 949 2 \n", - "Washington Dragoons 2nd 62 3 849 48 3 \n", - "Oregon Scouts 1st 62 4 973 48 2 \n", - "Wyoming Scouts 1st 73 7 1005 435 1 \n", - "Louisana Scouts 2nd 37 8 1099 63 2 \n", - "Georgia Scouts 2nd 35 9 1523 345 3 \n", + " regiment company deaths battles size veterans readiness \\\n", + "origin \n", + "Maine Dragoons 1st 43 4 1592 73 2 \n", + "Iowa Dragoons 1st 234 7 1006 37 1 \n", + "Alaska Dragoons 2nd 523 8 987 949 2 \n", + "Washington Dragoons 2nd 62 3 849 48 3 \n", + "Oregon Scouts 1st 62 4 973 48 2 \n", + "Wyoming Scouts 1st 73 7 1005 435 1 \n", + "Louisana Scouts 2nd 37 8 1099 63 2 \n", + "Georgia Scouts 2nd 35 9 1523 345 3 \n", "\n", " armored deserters \n", "origin \n", - "Florida 1 2 \n", "Maine 0 3 \n", "Iowa 1 4 \n", "Alaska 0 24 \n", @@ -816,26 +889,39 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.iloc[4:, :]" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 11. Select every row up to the 4th row" + "### Step 11. Select every row up to the 4th row and all columns" ] }, { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
FloridaNighthawks2nd6162140026312
MaineDragoons1st
\n", " \n", " \n", @@ -900,6 +986,18 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
131
FloridaNighthawks2nd6162140026312
\n", "
" @@ -910,12 +1008,14 @@ "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "California Nighthawks 1st 52 42 957 5 2 \n", "Texas Nighthawks 2nd 25 2 1099 62 3 \n", + "Florida Nighthawks 2nd 616 2 1400 26 3 \n", "\n", " armored deserters \n", "origin \n", "Arizona 1 4 \n", "California 0 24 \n", - "Texas 1 31 " + "Texas 1 31 \n", + "Florida 1 2 " ] }, "execution_count": 11, @@ -923,7 +1023,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.iloc[:4, :]" + ] }, { "cell_type": "markdown", @@ -935,18 +1037,31 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -956,77 +1071,103 @@ " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1036,20 +1177,20 @@ "" ], "text/plain": [ - " size veterans readiness\n", - "origin \n", - "Arizona 1045 1 1\n", - "California 957 5 2\n", - "Texas 1099 62 3\n", - "Florida 1400 26 3\n", - "Maine 1592 73 2\n", - "Iowa 1006 37 1\n", - "Alaska 987 949 2\n", - "Washington 849 48 3\n", - "Oregon 973 48 2\n", - "Wyoming 1005 435 1\n", - "Louisana 1099 63 2\n", - "Georgia 1523 345 3" + " deaths battles size veterans readiness\n", + "origin \n", + "Arizona 523 5 1045 1 1\n", + "California 52 42 957 5 2\n", + "Texas 25 2 1099 62 3\n", + "Florida 616 2 1400 26 3\n", + "Maine 43 4 1592 73 2\n", + "Iowa 234 7 1006 37 1\n", + "Alaska 523 8 987 949 2\n", + "Washington 62 3 849 48 3\n", + "Oregon 62 4 973 48 2\n", + "Wyoming 73 7 1005 435 1\n", + "Louisana 37 8 1099 63 2\n", + "Georgia 35 9 1523 345 3" ] }, "execution_count": 12, @@ -1057,7 +1198,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.iloc[:, 2:7]" + ] }, { "cell_type": "markdown", @@ -1069,14 +1212,25 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
deathsbattlessizeveteransreadiness
Arizona5235104511
California524295752
Texas2521099623
Florida61621400263
Maine4341592732
Iowa23471006371
Alaska52389879492
Washington623849483
Oregon624973482
Wyoming73710054351
Louisana3781099632
Georgia35915233453
\n", " \n", " \n", @@ -1234,7 +1388,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army[army[\"deaths\"] > 50]" + ] }, { "cell_type": "markdown", @@ -1246,14 +1402,25 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1397,7 +1564,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army[(army[\"deaths\"] > 500) | (army[\"deaths\"] < 50)]" + ] }, { "cell_type": "markdown", @@ -1409,14 +1578,25 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1574,7 +1754,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army[army[\"regiment\"] != \"Dragoons\"]" + ] }, { "cell_type": "markdown", @@ -1586,14 +1768,25 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1623,18 +1816,6 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -1646,6 +1827,18 @@ " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", "
ArizonaNighthawks1st523510451114
TexasNighthawks2nd131
ArizonaNighthawks1st523510451114
\n", "
" @@ -1653,13 +1846,13 @@ "text/plain": [ " regiment company deaths battles size veterans readiness \\\n", "origin \n", - "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "Texas Nighthawks 2nd 25 2 1099 62 3 \n", + "Arizona Nighthawks 1st 523 5 1045 1 1 \n", "\n", " armored deserters \n", "origin \n", - "Arizona 1 4 \n", - "Texas 1 31 " + "Texas 1 31 \n", + "Arizona 1 4 " ] }, "execution_count": 16, @@ -1667,7 +1860,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.loc[[\"Texas\", \"Arizona\"], :]" + ] }, { "cell_type": "markdown", @@ -1679,9 +1874,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1696,7 +1889,9 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.loc[[\"Arizona\"]].iloc[:, 2]" + ] }, { "cell_type": "markdown", @@ -1708,16 +1903,13 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "origin\n", - "Texas 25\n", - "Name: deaths, dtype: int64" + "deaths 25\n", + "Name: Texas, dtype: int64" ] }, "execution_count": 18, @@ -1725,29 +1917,30 @@ "output_type": "execute_result" } ], - "source": [] + "source": [ + "army.loc[:, [\"deaths\"]].iloc[2]" + ] } ], "metadata": { - "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From 5cfd4015964f7575b2ca6d43e084e1e55c9a558f Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 13 Oct 2019 16:19:23 +0200 Subject: [PATCH 74/92] update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 46366aead..3551f1a97 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,10 @@ There will be three different types of files:       2. Solutions without code       3. Solutions with code and comments -My suggestion is that you learn a topic in a tutorial or video and then do exercises. -Learn one more topic and do exercises. If you got the answer wrong, don't go directly to the solution with code. +My suggestion is that you learn a topic in a tutorial, video or documentation and then do the first exercises. +Learn one more topic and do more exercises. If you are stuck, don't go directly to the solution with code files. Check the solutions only and try to get the correct answer. -Suggestions and collaborations are more than welcome. Please open an issue or make a PR. :) +Suggestions and collaborations are more than welcome.🙂 Please open an issue or make a PR indicating the exercise and your problem/solution. # Lessons From bf02d3230405f8023295971f3df018cb98ea9e72 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 13 Oct 2019 19:14:16 +0200 Subject: [PATCH 75/92] included read_csv 06_StatsWind_Stats --- .../Wind_Stats/Exercises_with_solutions.ipynb | 307 +++++++++++------- 1 file changed, 188 insertions(+), 119 deletions(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 7dbfa83b1..221220124 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -27,9 +27,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -64,19 +62,15 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "### Step 1. Import the necessary libraries" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -100,14 +94,25 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -236,7 +241,7 @@ "source": [ "# parse_dates gets 0, 1, 2 columns and parses them as the index\n", "data_url = 'https://raw.githubusercontent.com/guipsamora/pandas_exercises/master/06_Stats/Wind_Stats/wind.data'\n", - "data = pd.read_table(data_url, sep = \"\\s+\", parse_dates = [[0,1,2]]) \n", + "data = pd.read_csv(data_url, sep = \"\\s+\", parse_dates = [[0,1,2]]) \n", "data.head()" ] }, @@ -250,14 +255,25 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -408,14 +424,25 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -574,9 +601,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -615,9 +640,8 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -639,16 +663,16 @@ "dtype: int64" ] }, - "execution_count": 7, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# number of columns minus the number of missing values for each location\n", + "#number of columns minus the number of missing values for each location\n", "data.shape[0] - data.isnull().sum()\n", "\n", - "# OR\n", + "#or\n", "\n", "data.notnull().sum()" ] @@ -663,10 +687,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, + "execution_count": 11, + "metadata": {}, "outputs": [ { "data": { @@ -674,7 +696,7 @@ "10.223864592840483" ] }, - "execution_count": 8, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -694,23 +716,26 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, + "execution_count": 12, + "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "//anaconda/lib/python2.7/site-packages/numpy/lib/function_base.py:4291: RuntimeWarning: Invalid value encountered in percentile\n", - " interpolation=interpolation)\n" - ] - }, { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -792,18 +817,18 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -830,7 +855,7 @@ "mean 12.362987 10.644314 11.660526 6.306468 10.455834 \n", "std 5.618413 5.267356 5.008450 3.605811 4.936125 \n", "min 0.670000 0.210000 1.500000 0.000000 0.130000 \n", - "50% NaN NaN NaN NaN NaN \n", + "50% 11.710000 10.170000 10.920000 5.750000 9.960000 \n", "max 35.800000 33.370000 33.840000 28.460000 37.540000 \n", "\n", " BIR DUB CLA MUL CLO \\\n", @@ -838,7 +863,7 @@ "mean 7.092254 9.797343 8.495053 8.493590 8.707332 \n", "std 3.968683 4.977555 4.499449 4.166872 4.503954 \n", "min 0.000000 0.000000 0.000000 0.000000 0.040000 \n", - "50% 6.830000 NaN NaN NaN NaN \n", + "50% 6.830000 9.210000 8.080000 8.170000 8.290000 \n", "max 26.160000 30.370000 31.080000 25.880000 28.210000 \n", "\n", " BEL MAL \n", @@ -846,11 +871,11 @@ "mean 13.121007 15.599079 \n", "std 5.835037 6.699794 \n", "min 0.130000 0.670000 \n", - "50% 12.500000 NaN \n", + "50% 12.500000 15.000000 \n", "max 42.380000 42.540000 " ] }, - "execution_count": 9, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -870,15 +895,26 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, + "execution_count": 13, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
50%NaNNaNNaNNaNNaN11.71000010.17000010.9200005.7500009.9600006.830000NaNNaNNaNNaN9.2100008.0800008.1700008.29000012.500000NaN15.000000
max
\n", " \n", " \n", @@ -946,7 +982,7 @@ "1961-01-05 6.17 13.33 10.630000 2.445356" ] }, - "execution_count": 10, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -974,10 +1010,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, + "execution_count": 14, + "metadata": {}, "outputs": [ { "data": { @@ -997,7 +1031,7 @@ "dtype: float64" ] }, - "execution_count": 11, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1015,15 +1049,26 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, + "execution_count": 15, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -1376,7 +1421,7 @@ "1978 9.489342 8.800466 9.089753 8.301699 12.967397 16.771370 " ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1394,15 +1439,26 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, + "execution_count": 16, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -2489,7 +2545,7 @@ "[216 rows x 12 columns]" ] }, - "execution_count": 13, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -2508,9 +2564,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3684,15 +3738,30 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, + "execution_count": 17, + "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", + "\n", "
\n", " \n", " \n", @@ -4015,38 +4084,38 @@ "1961-03-05 10.96 13.33 12.101429 0.997721 8.83 17.00 12.951429 \n", "1961-03-12 4.88 14.79 9.376667 3.732263 8.08 16.96 11.578571 \n", "\n", - " ROS ... CLO BEL \\\n", - " std min max ... mean std min \n", - "Yr_Mo_Dy ... \n", - "1961-01-08 3.949525 7.62 12.33 ... 8.497143 1.704941 5.46 \n", - "1961-01-15 3.148945 7.08 19.50 ... 7.571429 4.084293 5.25 \n", - "1961-01-22 3.837785 7.29 20.79 ... 8.124286 4.783952 6.50 \n", - "1961-01-29 5.170224 12.67 25.84 ... 15.640000 3.713368 14.04 \n", - "1961-02-05 5.187395 9.04 19.70 ... 9.460000 2.839501 9.17 \n", - "1961-02-12 3.608373 13.67 21.34 ... 14.440000 1.746749 15.21 \n", - "1961-02-19 3.575012 6.13 19.41 ... 13.542857 2.531361 14.09 \n", - "1961-02-26 5.147348 6.08 22.42 ... 12.730000 4.920064 9.59 \n", - "1961-03-05 2.851955 8.17 13.67 ... 12.370000 1.593685 11.58 \n", - "1961-03-12 3.230167 7.54 16.38 ... 10.458571 3.655113 10.21 \n", + " ROS ... CLO BEL \\\n", + " std min max ... mean std min max \n", + "Yr_Mo_Dy ... \n", + "1961-01-08 3.949525 7.62 12.33 ... 8.497143 1.704941 5.46 17.54 \n", + "1961-01-15 3.148945 7.08 19.50 ... 7.571429 4.084293 5.25 20.71 \n", + "1961-01-22 3.837785 7.29 20.79 ... 8.124286 4.783952 6.50 15.92 \n", + "1961-01-29 5.170224 12.67 25.84 ... 15.640000 3.713368 14.04 27.71 \n", + "1961-02-05 5.187395 9.04 19.70 ... 9.460000 2.839501 9.17 19.33 \n", + "1961-02-12 3.608373 13.67 21.34 ... 14.440000 1.746749 15.21 26.38 \n", + "1961-02-19 3.575012 6.13 19.41 ... 13.542857 2.531361 14.09 29.63 \n", + "1961-02-26 5.147348 6.08 22.42 ... 12.730000 4.920064 9.59 23.21 \n", + "1961-03-05 2.851955 8.17 13.67 ... 12.370000 1.593685 11.58 23.45 \n", + "1961-03-12 3.230167 7.54 16.38 ... 10.458571 3.655113 10.21 22.71 \n", "\n", - " MAL \n", - " max mean std min max mean std \n", - "Yr_Mo_Dy \n", - "1961-01-08 17.54 12.481429 4.349139 10.88 16.46 13.238571 1.773062 \n", - "1961-01-15 20.71 11.125714 5.552215 5.17 16.92 11.024286 4.692355 \n", - "1961-01-22 15.92 9.821429 3.626584 6.79 17.96 11.434286 4.237239 \n", - "1961-01-29 27.71 20.930000 5.210726 17.50 27.63 22.530000 3.874721 \n", - "1961-02-05 19.33 14.012857 4.210858 7.17 19.25 11.935714 4.336104 \n", - "1961-02-12 26.38 21.832857 4.063753 17.04 21.84 19.155714 1.828705 \n", - "1961-02-19 29.63 21.167143 5.910938 10.96 22.58 16.584286 4.685377 \n", - "1961-02-26 23.21 16.304286 5.091162 6.67 23.87 14.322857 6.182283 \n", - "1961-03-05 23.45 17.842857 4.332331 8.83 17.54 13.951667 3.021387 \n", - "1961-03-12 22.71 16.701429 4.358759 5.54 22.54 14.420000 5.769890 \n", + " MAL \n", + " mean std min max mean std \n", + "Yr_Mo_Dy \n", + "1961-01-08 12.481429 4.349139 10.88 16.46 13.238571 1.773062 \n", + "1961-01-15 11.125714 5.552215 5.17 16.92 11.024286 4.692355 \n", + "1961-01-22 9.821429 3.626584 6.79 17.96 11.434286 4.237239 \n", + "1961-01-29 20.930000 5.210726 17.50 27.63 22.530000 3.874721 \n", + "1961-02-05 14.012857 4.210858 7.17 19.25 11.935714 4.336104 \n", + "1961-02-12 21.832857 4.063753 17.04 21.84 19.155714 1.828705 \n", + "1961-02-19 21.167143 5.910938 10.96 22.58 16.584286 4.685377 \n", + "1961-02-26 16.304286 5.091162 6.67 23.87 14.322857 6.182283 \n", + "1961-03-05 17.842857 4.332331 8.83 17.54 13.951667 3.021387 \n", + "1961-03-12 16.701429 4.358759 5.54 22.54 14.420000 5.769890 \n", "\n", "[10 rows x 48 columns]" ] }, - "execution_count": 15, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -4063,23 +4132,23 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From 8e2884cc4ef317400dfcf81617db940240c3f0f5 Mon Sep 17 00:00:00 2001 From: RomanS <54567576+RomanSnsk@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:44:33 +0700 Subject: [PATCH 76/92] Update Exercises_with_solutions.ipynb corrected the code in the step8 so that the average value is correctly calculated taking into account NA's (which shouldn't be equal to zeros) --- 06_Stats/Wind_Stats/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 221220124..097ddc0c1 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -702,7 +702,7 @@ } ], "source": [ - "data.fillna(0).values.flatten().mean()" + "data.sum().sum() / data.notna().sum().sum()" ] }, { From 1948f418ebe9e16ddbbc37d121b09fda5ef93d48 Mon Sep 17 00:00:00 2001 From: RomanS <54567576+RomanSnsk@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:46:23 +0700 Subject: [PATCH 77/92] Update Solutions.ipynb corrected step 8 answer in accordance with the corrected solution --- 06_Stats/Wind_Stats/Solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Solutions.ipynb b/06_Stats/Wind_Stats/Solutions.ipynb index 9df3caa2b..be9f07149 100644 --- a/06_Stats/Wind_Stats/Solutions.ipynb +++ b/06_Stats/Wind_Stats/Solutions.ipynb @@ -631,7 +631,7 @@ { "data": { "text/plain": [ - "10.223864592840483" + "10.227883764282167" ] }, "execution_count": 8, From aca35cef969dee08ea80ac00b896a0029d758f34 Mon Sep 17 00:00:00 2001 From: RomanS <54567576+RomanSnsk@users.noreply.github.com> Date: Tue, 15 Oct 2019 15:48:19 +0700 Subject: [PATCH 78/92] Update Exercises_with_solutions.ipynb correct answer too --- 06_Stats/Wind_Stats/Exercises_with_solutions.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 097ddc0c1..4a7363065 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -693,7 +693,7 @@ { "data": { "text/plain": [ - "10.223864592840483" + "10.227883764282167" ] }, "execution_count": 11, From 2e2c79028089a3ab0a39a4a39dd1a7509c92455b Mon Sep 17 00:00:00 2001 From: nate Date: Mon, 9 Dec 2019 22:18:42 -0800 Subject: [PATCH 79/92] Add in videos done by Dec 9 --- .../Chipotle/Exercise_with_Solutions.ipynb | 4 +++- 01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb | 4 +++- .../Occupation/Exercise_with_Solution.ipynb | 4 +++- 01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb | 4 +++- 05_Merge/Auto_MPG/Exercises_with_solutions.ipynb | 4 +++- 05_Merge/Auto_MPG/Solutions.ipynb | 4 +++- README.md | 5 +++++ 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb index 893af8518..32d1e7df8 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Exercise_with_Solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex2 - Getting and Knowing your Data" + "# Ex2 - Getting and Knowing your Data\n", + "\n", + "Check out [Chipotle Exercises Video Tutorial](https://www.youtube.com/watch?v=lpuYZ5EUyS8&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv&index=2) to watch a data scientist go through the exercises" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb index c976934dd..b497173bf 100644 --- a/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Chipotle/Solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex2 - Getting and Knowing your Data" + "# Ex2 - Getting and Knowing your Data\n", + "\n", + "Check out [Chipotle Exercises Video Tutorial](https://www.youtube.com/watch?v=lpuYZ5EUyS8&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv&index=2) to watch a data scientist go through the exercises" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb index 43f676e55..d2bd0ab07 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex3 - Getting and Knowing your Data" + "# Ex3 - Getting and Knowing your Data\n", + "\n", + "Check out [Occupation Exercises Video Tutorial](https://www.youtube.com/watch?v=W8AB5s-L3Rw&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv&index=4) to watch a data scientist go through the exercises" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb index 5d487fb76..04149fd34 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex3 - Getting and Knowing your Data" + "# Ex3 - Getting and Knowing your Data\n", + "\n", + "Check out [Occupation Exercises Video Tutorial](https://www.youtube.com/watch?v=W8AB5s-L3Rw&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv&index=4) to watch a data scientist go through the exercises" ] }, { diff --git a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb index 68f6512d7..6a85e6af5 100644 --- a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb +++ b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# MPG Cars" + "# MPG Cars\n", + "\n", + "Check out [Cars Exercises Video Tutorial](https://www.youtube.com/watch?v=avzLRBxoguU&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv&index=3) to watch a data scientist go through the exercises" ] }, { diff --git a/05_Merge/Auto_MPG/Solutions.ipynb b/05_Merge/Auto_MPG/Solutions.ipynb index 6d48301a5..24e1f8a5a 100644 --- a/05_Merge/Auto_MPG/Solutions.ipynb +++ b/05_Merge/Auto_MPG/Solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# MPG Cars" + "# MPG Cars\n", + "\n", + "Check out [Cars Exercises Video Tutorial](https://www.youtube.com/watch?v=avzLRBxoguU&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv&index=3) to watch a data scientist go through the exercises" ] }, { diff --git a/README.md b/README.md index 3551f1a97..a1cb6b3a8 100644 --- a/README.md +++ b/README.md @@ -69,3 +69,8 @@ Suggestions and collaborations are more than welcome.🙂 Please open an issue o [Iris](https://github.com/guipsamora/pandas_exercises/tree/master/10_Deleting/Iris) [Wine](https://github.com/guipsamora/pandas_exercises/tree/master/10_Deleting/Wine) +# Video Solutions + +Video tutorials of data scientists working through the above exercises: + +[Data Talks - Pandas Learning By Doing](https://www.youtube.com/watch?v=pu3IpU937xs&list=PLgJhDSE2ZLxaY_DigHeiIDC1cD09rXgJv) From 80ef4654ee4ed593f43eac0fe4a4937a405caf7b Mon Sep 17 00:00:00 2001 From: Max Alletsee Date: Tue, 28 Jan 2020 07:01:32 +0100 Subject: [PATCH 80/92] Typo fixes Typo fixes in the wine exercise and solutions --- 10_Deleting/Wine/Exercises.ipynb | 2 +- 10_Deleting/Wine/Exercises_code_and_solutions.ipynb | 2 +- 10_Deleting/Wine/Solutions.ipynb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/10_Deleting/Wine/Exercises.ipynb b/10_Deleting/Wine/Exercises.ipynb index 9bde6e972..a89c6f6e2 100644 --- a/10_Deleting/Wine/Exercises.ipynb +++ b/10_Deleting/Wine/Exercises.ipynb @@ -73,7 +73,7 @@ "source": [ "### Step 5. Assign the columns as below:\n", "\n", - "The attributes are (dontated by Riccardo Leardi, riclea '@' anchem.unige.it): \n", + "The attributes are (donated by Riccardo Leardi, riclea '@' anchem.unige.it): \n", "1) alcohol \n", "2) malic_acid \n", "3) alcalinity_of_ash \n", diff --git a/10_Deleting/Wine/Exercises_code_and_solutions.ipynb b/10_Deleting/Wine/Exercises_code_and_solutions.ipynb index 74c5373c6..265a2071a 100644 --- a/10_Deleting/Wine/Exercises_code_and_solutions.ipynb +++ b/10_Deleting/Wine/Exercises_code_and_solutions.ipynb @@ -306,7 +306,7 @@ "source": [ "### Step 5. Assign the columns as below:\n", "\n", - "The attributes are (dontated by Riccardo Leardi, riclea '@' anchem.unige.it): \n", + "The attributes are (donated by Riccardo Leardi, riclea '@' anchem.unige.it): \n", "1) alcohol \n", "2) malic_acid \n", "3) alcalinity_of_ash \n", diff --git a/10_Deleting/Wine/Solutions.ipynb b/10_Deleting/Wine/Solutions.ipynb index df9b41387..d91227bfc 100644 --- a/10_Deleting/Wine/Solutions.ipynb +++ b/10_Deleting/Wine/Solutions.ipynb @@ -294,7 +294,7 @@ "source": [ "### Step 5. Assign the columns as below:\n", "\n", - "The attributes are (dontated by Riccardo Leardi, riclea '@' anchem.unige.it): \n", + "The attributes are (donated by Riccardo Leardi, riclea '@' anchem.unige.it): \n", "1) alcohol \n", "2) malic_acid \n", "3) alcalinity_of_ash \n", From 5a1bfb431d37bfb6dead77f815415a796d9f3a3a Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Wed, 29 Jan 2020 15:36:56 +0100 Subject: [PATCH 81/92] mudancas pra pull origin --- .DS_Store | Bin 14340 -> 14340 bytes 02_Filtering_&_Sorting/.DS_Store | Bin 8196 -> 8196 bytes .../Chipotle/Exercises_with_solutions.ipynb | 712 +++++++++++++++++- 06_Stats/Wind_Stats/Solutions.ipynb | 73 +- 4 files changed, 696 insertions(+), 89 deletions(-) diff --git a/.DS_Store b/.DS_Store index 55b642fb35e2eea5638cede95af34587094958f2..99ad0b6ca7a4c1fb9238d6f5aa57c35a50001665 100644 GIT binary patch delta 59 zcmZoEXepTB&nUGqV7ELY&tyeKhs{0;YuP!|Qi_w4^7C^TC+p}MZ2qa9$i8{9ei{ci IT%3Uc0Au45n*aa+ delta 49 zcmZoEXepTB&nUSuV7ELY_hdyyhs{0;YuPs&X(X~wj*?%yncd(MJ9kcTnR8N3ei8!% F69A`t5C#AM diff --git a/02_Filtering_&_Sorting/.DS_Store b/02_Filtering_&_Sorting/.DS_Store index 08337cd7f6e43ec401b997b2e7aca1e8f44e9f0a..b086e3fb3008bb17f1378fe0f9b3ac6c64697707 100644 GIT binary patch delta 86 zcmZp1XmOa}FUrcmz`)4BAi%(o&rrgU!;qSmQk=Z8a2or>2Hwr=94s7iAQc=8&I}n0 enG6NUs*>{aa~L=C2;5`e%r5bbW%C0Oc4h!h%oTG0 delta 63 zcmZp1XmOa}FUrEez`)4BAi%(2$Y7LIUR;orlb^J)a2or>2Hwr=94s7+ESoh2?g6>7 So7pA4v22zSeakelK?(r;qY=jd diff --git a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb index 9dffe49a7..b0ddbd821 100644 --- a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb @@ -19,10 +19,8 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -44,10 +42,8 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, + "execution_count": 28, + "metadata": {}, "outputs": [], "source": [ "url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/chipotle.tsv'\n", @@ -64,18 +60,662 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, + "execution_count": 21, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
order_idquantityitem_namechoice_descriptionitem_price
422Chicken Bowl[Tomatillo-Red Chili Salsa (Hot), [Black Beans...16.98
531Chicken Bowl[Fresh Tomato Salsa (Mild), [Rice, Cheese, Sou...10.98
741Steak Burrito[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.75
1371Chicken Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
23121Chicken Burrito[[Tomatillo-Green Chili Salsa (Medium), Tomati...10.98
39191Barbacoa Bowl[Roasted Chili Corn Salsa, [Fajita Vegetables,...11.75
42201Chicken Bowl[Roasted Chili Corn Salsa, [Rice, Black Beans,...11.25
43201Steak Burrito[Fresh Tomato Salsa, [Rice, Pinto Beans, Chees...11.75
45211Chicken Burrito[Tomatillo-Red Chili Salsa (Hot), [Black Beans...10.98
52241Chicken Burrito[Roasted Chili Corn Salsa (Medium), [Black Bea...10.98
57261Veggie Burrito[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
58271Barbacoa Bowl[Roasted Chili Corn Salsa, [Fajita Vegetables,...11.75
62281Veggie Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
68301Chicken Burrito[Tomatillo-Red Chili Salsa (Hot), [Black Beans...10.98
79351Chicken Soft Tacos[Roasted Chili Corn Salsa, [Rice, Cheese, Lett...11.25
90401Steak Bowl[Fresh Tomato Salsa, [Rice, Black Beans, Chees...11.75
91401Steak Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Chees...11.75
93411Carnitas Burrito[Roasted Chili Corn Salsa, [Sour Cream, Guacam...11.75
97431Carnitas Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.75
123541Chicken Bowl[Fresh Tomato Salsa, [Guacamole, Cheese, Sour ...11.25
130571Barbacoa Burrito[Roasted Chili Corn Salsa, [Rice, Pinto Beans,...11.75
134591Chicken Burrito[Roasted Chili Corn Salsa (Medium), [Rice, Bla...10.98
135602Chicken Salad Bowl[Tomatillo Green Chili Salsa, [Sour Cream, Che...22.50
136611Barbacoa Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.75
138621Chicken Bowl[Fresh Tomato Salsa, [Rice, Fajita Vegetables,...11.25
140631Chicken Bowl[Tomatillo Green Chili Salsa, [Rice, Sour Crea...11.25
142641Chicken Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
143641Veggie Bowl[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
144651Barbacoa Burrito[Tomatillo Red Chili Salsa, [Rice, Sour Cream,...11.75
147661Steak Burrito[Tomatillo-Green Chili Salsa (Medium), [Rice, ...11.48
..................
450417911Carnitas Bowl[Fresh Tomato Salsa, [Rice, Sour Cream, Guacam...11.75
450617921Chicken Bowl[Fresh Tomato Salsa, [Rice, Cheese, Sour Cream...11.25
451017931Barbacoa Bowl[Guacamole]11.49
451817961Steak Bowl[Tomatillo Red Chili Salsa, [Rice, Black Beans...11.75
452117981Chicken Burrito[Roasted Chili Corn Salsa, [Guacamole, Lettuce...11.25
452317981Steak Crispy Tacos[Tomatillo Green Chili Salsa, [Cheese, Sour Cr...11.75
453318021Chicken Burrito[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
454018051Chicken Bowl[Tomatillo Green Chili Salsa, [Fajita Vegetabl...11.25
455318101Chicken Bowl[Roasted Chili Corn Salsa, [Black Beans, Sour ...11.25
455418101Steak Crispy Tacos[Roasted Chili Corn Salsa, [Fajita Vegetables,...11.75
455618111Chicken Burrito[Tomatillo Green Chili Salsa, [Fajita Vegetabl...11.25
455918121Chicken Burrito[Tomatillo Red Chili Salsa, [Rice, Cheese, Gua...11.25
456118132Chicken Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Pinto...17.50
456418151Chicken Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Rice,...11.25
457618201Chicken Bowl[Fresh Tomato Salsa, [Rice, Cheese, Sour Cream...11.25
458018221Chicken Salad Bowl[Fresh Tomato Salsa, [Black Beans, Cheese, Gua...11.25
458618241Chicken Bowl[Fresh Tomato Salsa, [Rice, Black Beans, Chees...11.25
458718241Chicken Bowl[Fresh Tomato Salsa, [Rice, Black Beans, Chees...11.25
458918251Chicken Bowl[Fresh Tomato Salsa, [Rice, Black Beans, Sour ...11.25
459018251Chicken Bowl[Roasted Chili Corn Salsa, [Rice, Black Beans,...11.25
459218251Barbacoa Burrito[Tomatillo Red Chili Salsa, [Rice, Fajita Vege...11.75
459318251Carnitas Bowl[Roasted Chili Corn Salsa, [Rice, Sour Cream, ...11.75
459418251Barbacoa Bowl[Roasted Chili Corn Salsa, [Pinto Beans, Sour ...11.75
460718291Steak Burrito[Tomatillo Green Chili Salsa, [Rice, Cheese, S...11.75
460818291Veggie Burrito[Tomatillo Red Chili Salsa, [Fajita Vegetables...11.25
461018301Steak Burrito[Fresh Tomato Salsa, [Rice, Sour Cream, Cheese...11.75
461118301Veggie Burrito[Tomatillo Green Chili Salsa, [Rice, Fajita Ve...11.25
461718331Steak Burrito[Fresh Tomato Salsa, [Rice, Black Beans, Sour ...11.75
461818331Steak Burrito[Fresh Tomato Salsa, [Rice, Sour Cream, Cheese...11.75
461918341Chicken Salad Bowl[Fresh Tomato Salsa, [Fajita Vegetables, Pinto...11.25
\n", + "

1130 rows × 5 columns

\n", + "
" + ], "text/plain": [ - "12" + " order_id quantity item_name \\\n", + "4 2 2 Chicken Bowl \n", + "5 3 1 Chicken Bowl \n", + "7 4 1 Steak Burrito \n", + "13 7 1 Chicken Bowl \n", + "23 12 1 Chicken Burrito \n", + "39 19 1 Barbacoa Bowl \n", + "42 20 1 Chicken Bowl \n", + "43 20 1 Steak Burrito \n", + "45 21 1 Chicken Burrito \n", + "52 24 1 Chicken Burrito \n", + "57 26 1 Veggie Burrito \n", + "58 27 1 Barbacoa Bowl \n", + "62 28 1 Veggie Bowl \n", + "68 30 1 Chicken Burrito \n", + "79 35 1 Chicken Soft Tacos \n", + "90 40 1 Steak Bowl \n", + "91 40 1 Steak Bowl \n", + "93 41 1 Carnitas Burrito \n", + "97 43 1 Carnitas Bowl \n", + "123 54 1 Chicken Bowl \n", + "130 57 1 Barbacoa Burrito \n", + "134 59 1 Chicken Burrito \n", + "135 60 2 Chicken Salad Bowl \n", + "136 61 1 Barbacoa Bowl \n", + "138 62 1 Chicken Bowl \n", + "140 63 1 Chicken Bowl \n", + "142 64 1 Chicken Bowl \n", + "143 64 1 Veggie Bowl \n", + "144 65 1 Barbacoa Burrito \n", + "147 66 1 Steak Burrito \n", + "... ... ... ... \n", + "4504 1791 1 Carnitas Bowl \n", + "4506 1792 1 Chicken Bowl \n", + "4510 1793 1 Barbacoa Bowl \n", + "4518 1796 1 Steak Bowl \n", + "4521 1798 1 Chicken Burrito \n", + "4523 1798 1 Steak Crispy Tacos \n", + "4533 1802 1 Chicken Burrito \n", + "4540 1805 1 Chicken Bowl \n", + "4553 1810 1 Chicken Bowl \n", + "4554 1810 1 Steak Crispy Tacos \n", + "4556 1811 1 Chicken Burrito \n", + "4559 1812 1 Chicken Burrito \n", + "4561 1813 2 Chicken Salad Bowl \n", + "4564 1815 1 Chicken Bowl \n", + "4576 1820 1 Chicken Bowl \n", + "4580 1822 1 Chicken Salad Bowl \n", + "4586 1824 1 Chicken Bowl \n", + "4587 1824 1 Chicken Bowl \n", + "4589 1825 1 Chicken Bowl \n", + "4590 1825 1 Chicken Bowl \n", + "4592 1825 1 Barbacoa Burrito \n", + "4593 1825 1 Carnitas Bowl \n", + "4594 1825 1 Barbacoa Bowl \n", + "4607 1829 1 Steak Burrito \n", + "4608 1829 1 Veggie Burrito \n", + "4610 1830 1 Steak Burrito \n", + "4611 1830 1 Veggie Burrito \n", + "4617 1833 1 Steak Burrito \n", + "4618 1833 1 Steak Burrito \n", + "4619 1834 1 Chicken Salad Bowl \n", + "\n", + " choice_description item_price \n", + "4 [Tomatillo-Red Chili Salsa (Hot), [Black Beans... 16.98 \n", + "5 [Fresh Tomato Salsa (Mild), [Rice, Cheese, Sou... 10.98 \n", + "7 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.75 \n", + "13 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "23 [[Tomatillo-Green Chili Salsa (Medium), Tomati... 10.98 \n", + "39 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 11.75 \n", + "42 [Roasted Chili Corn Salsa, [Rice, Black Beans,... 11.25 \n", + "43 [Fresh Tomato Salsa, [Rice, Pinto Beans, Chees... 11.75 \n", + "45 [Tomatillo-Red Chili Salsa (Hot), [Black Beans... 10.98 \n", + "52 [Roasted Chili Corn Salsa (Medium), [Black Bea... 10.98 \n", + "57 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "58 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 11.75 \n", + "62 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "68 [Tomatillo-Red Chili Salsa (Hot), [Black Beans... 10.98 \n", + "79 [Roasted Chili Corn Salsa, [Rice, Cheese, Lett... 11.25 \n", + "90 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 11.75 \n", + "91 [Fresh Tomato Salsa, [Fajita Vegetables, Chees... 11.75 \n", + "93 [Roasted Chili Corn Salsa, [Sour Cream, Guacam... 11.75 \n", + "97 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.75 \n", + "123 [Fresh Tomato Salsa, [Guacamole, Cheese, Sour ... 11.25 \n", + "130 [Roasted Chili Corn Salsa, [Rice, Pinto Beans,... 11.75 \n", + "134 [Roasted Chili Corn Salsa (Medium), [Rice, Bla... 10.98 \n", + "135 [Tomatillo Green Chili Salsa, [Sour Cream, Che... 22.50 \n", + "136 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.75 \n", + "138 [Fresh Tomato Salsa, [Rice, Fajita Vegetables,... 11.25 \n", + "140 [Tomatillo Green Chili Salsa, [Rice, Sour Crea... 11.25 \n", + "142 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "143 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "144 [Tomatillo Red Chili Salsa, [Rice, Sour Cream,... 11.75 \n", + "147 [Tomatillo-Green Chili Salsa (Medium), [Rice, ... 11.48 \n", + "... ... ... \n", + "4504 [Fresh Tomato Salsa, [Rice, Sour Cream, Guacam... 11.75 \n", + "4506 [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream... 11.25 \n", + "4510 [Guacamole] 11.49 \n", + "4518 [Tomatillo Red Chili Salsa, [Rice, Black Beans... 11.75 \n", + "4521 [Roasted Chili Corn Salsa, [Guacamole, Lettuce... 11.25 \n", + "4523 [Tomatillo Green Chili Salsa, [Cheese, Sour Cr... 11.75 \n", + "4533 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "4540 [Tomatillo Green Chili Salsa, [Fajita Vegetabl... 11.25 \n", + "4553 [Roasted Chili Corn Salsa, [Black Beans, Sour ... 11.25 \n", + "4554 [Roasted Chili Corn Salsa, [Fajita Vegetables,... 11.75 \n", + "4556 [Tomatillo Green Chili Salsa, [Fajita Vegetabl... 11.25 \n", + "4559 [Tomatillo Red Chili Salsa, [Rice, Cheese, Gua... 11.25 \n", + "4561 [Fresh Tomato Salsa, [Fajita Vegetables, Pinto... 17.50 \n", + "4564 [Fresh Tomato Salsa, [Fajita Vegetables, Rice,... 11.25 \n", + "4576 [Fresh Tomato Salsa, [Rice, Cheese, Sour Cream... 11.25 \n", + "4580 [Fresh Tomato Salsa, [Black Beans, Cheese, Gua... 11.25 \n", + "4586 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 11.25 \n", + "4587 [Fresh Tomato Salsa, [Rice, Black Beans, Chees... 11.25 \n", + "4589 [Fresh Tomato Salsa, [Rice, Black Beans, Sour ... 11.25 \n", + "4590 [Roasted Chili Corn Salsa, [Rice, Black Beans,... 11.25 \n", + "4592 [Tomatillo Red Chili Salsa, [Rice, Fajita Vege... 11.75 \n", + "4593 [Roasted Chili Corn Salsa, [Rice, Sour Cream, ... 11.75 \n", + "4594 [Roasted Chili Corn Salsa, [Pinto Beans, Sour ... 11.75 \n", + "4607 [Tomatillo Green Chili Salsa, [Rice, Cheese, S... 11.75 \n", + "4608 [Tomatillo Red Chili Salsa, [Fajita Vegetables... 11.25 \n", + "4610 [Fresh Tomato Salsa, [Rice, Sour Cream, Cheese... 11.75 \n", + "4611 [Tomatillo Green Chili Salsa, [Rice, Fajita Ve... 11.25 \n", + "4617 [Fresh Tomato Salsa, [Rice, Black Beans, Sour ... 11.75 \n", + "4618 [Fresh Tomato Salsa, [Rice, Sour Cream, Cheese... 11.75 \n", + "4619 [Fresh Tomato Salsa, [Fajita Vegetables, Pinto... 11.25 \n", + "\n", + "[1130 rows x 5 columns]" ] }, - "execution_count": 4, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -88,12 +728,20 @@ "chipo.item_price = prices\n", "\n", "# delete the duplicates in item_name and quantity\n", - "chipo_filtered = chipo.drop_duplicates(['item_name','quantity'])\n", + "chipo_filtered = chipo.drop_duplicates(['item_name','quantity','choice_description'])\n", + "\n", + "# chipo_filtered\n", "\n", "# select only the products with quantity equals to 1\n", "chipo_one_prod = chipo_filtered[chipo_filtered.quantity == 1]\n", + "chipo_one_prod\n", + "\n", + "# chipo_one_prod[chipo_one_prod['item_price']>10].item_name.nunique()\n", + "# chipo_one_prod[chipo_one_prod['item_price']>10]\n", + "\n", "\n", - "chipo_one_prod[chipo_one_prod['item_price']>10].item_name.nunique()" + "\n", + "chipo.query('price_per_item > 10').item_name.nunique()" ] }, { @@ -107,9 +755,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -780,9 +1426,7 @@ { "cell_type": "code", "execution_count": 25, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1446,9 +2090,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1505,9 +2147,7 @@ { "cell_type": "code", "execution_count": 18, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1536,9 +2176,7 @@ { "cell_type": "code", "execution_count": 28, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1560,23 +2198,23 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/06_Stats/Wind_Stats/Solutions.ipynb b/06_Stats/Wind_Stats/Solutions.ipynb index 9df3caa2b..bc4085ac6 100644 --- a/06_Stats/Wind_Stats/Solutions.ipynb +++ b/06_Stats/Wind_Stats/Solutions.ipynb @@ -27,9 +27,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -64,9 +62,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "### Step 1. Import the necessary libraries" ] @@ -74,9 +70,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -97,9 +91,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -242,9 +234,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -387,9 +377,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -544,9 +532,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -584,7 +570,6 @@ "cell_type": "code", "execution_count": 7, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -624,9 +609,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -653,9 +636,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stderr", @@ -827,9 +808,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -920,9 +899,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -959,9 +936,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1336,9 +1311,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2447,9 +2420,7 @@ { "cell_type": "code", "execution_count": 14, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3622,9 +3593,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -3994,23 +3963,23 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.4" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From a955fa6090ec1602f8a3c8166b15a057cabd31dc Mon Sep 17 00:00:00 2001 From: Jaco Jansen van Vuuren Date: Sat, 8 Feb 2020 19:57:06 +0200 Subject: [PATCH 82/92] Various spelling and grammar improvements --- .../Occupation/Exercise_with_Solution.ipynb | 2 +- 01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb | 2 +- 01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb | 2 +- 02_Filtering_&_Sorting/Chipotle/Exercises.ipynb | 4 ++-- .../Chipotle/Exercises_with_solutions.ipynb | 4 ++-- 02_Filtering_&_Sorting/Chipotle/Solutions.ipynb | 4 ++-- 03_Grouping/Alcohol_Consumption/Exercise.ipynb | 2 +- 03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb | 2 +- 03_Grouping/Alcohol_Consumption/Solutions.ipynb | 2 +- 03_Grouping/Regiment/Exercises.ipynb | 2 +- 03_Grouping/Regiment/Exercises_solutions.ipynb | 2 +- 03_Grouping/Regiment/Solutions.ipynb | 2 +- 04_Apply/Students_Alcohol_Consumption/Exercises.ipynb | 4 ++-- .../Exercises_with_solutions.ipynb | 4 ++-- 04_Apply/Students_Alcohol_Consumption/Solutions.ipynb | 4 ++-- 04_Apply/US_Crime_Rates/Exercises.ipynb | 2 +- 04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb | 2 +- 04_Apply/US_Crime_Rates/Solutions.ipynb | 2 +- 05_Merge/Auto_MPG/Exercises.ipynb | 4 ++-- 05_Merge/Auto_MPG/Exercises_with_solutions.ipynb | 4 ++-- 05_Merge/Auto_MPG/Solutions.ipynb | 4 ++-- 05_Merge/Fictitous Names/Exercises.ipynb | 2 +- 05_Merge/Fictitous Names/Exercises_with_solutions.ipynb | 2 +- 05_Merge/Fictitous Names/Solutions.ipynb | 2 +- 05_Merge/Housing Market/Exercises.ipynb | 2 +- 05_Merge/Housing Market/Exercises_with_solutions.ipynb | 2 +- 05_Merge/Housing Market/Solutions.ipynb | 2 +- 27 files changed, 36 insertions(+), 36 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb index d2bd0ab07..caf683c83 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercise_with_Solution.ipynb @@ -706,7 +706,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 12. How many different occupations there are in this dataset?" + "### Step 12. How many different occupations are in this dataset?" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb index 9c5106f88..f32d9ce9f 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Exercises.ipynb @@ -183,7 +183,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 12. How many different occupations there are in this dataset?" + "### Step 12. How many different occupations are in this dataset?" ] }, { diff --git a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb index 04149fd34..345cb8f83 100644 --- a/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/Occupation/Solutions.ipynb @@ -682,7 +682,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 12. How many different occupations there are in this dataset?" + "### Step 12. How many different occupations are in this dataset?" ] }, { diff --git a/02_Filtering_&_Sorting/Chipotle/Exercises.ipynb b/02_Filtering_&_Sorting/Chipotle/Exercises.ipynb index b8aa55a99..dfb68245d 100644 --- a/02_Filtering_&_Sorting/Chipotle/Exercises.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Exercises.ipynb @@ -118,7 +118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. How many times were a Veggie Salad Bowl ordered?" + "### Step 8. How many times was a Veggie Salad Bowl ordered?" ] }, { @@ -134,7 +134,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. How many times people orderd more than one Canned Soda?" + "### Step 9. How many times did someone order more than one Canned Soda?" ] }, { diff --git a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb index 9dffe49a7..17626d16b 100644 --- a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb @@ -1499,7 +1499,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. How many times were a Veggie Salad Bowl ordered?" + "### Step 8. How many times was a Veggie Salad Bowl ordered?" ] }, { @@ -1530,7 +1530,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. How many times people orderd more than one Canned Soda?" + "### Step 9. How many times did someone order more than one Canned Soda?" ] }, { diff --git a/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb index fff0f5952..d21f74f3e 100644 --- a/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Solutions.ipynb @@ -989,7 +989,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. How many times were a Veggie Salad Bowl ordered?" + "### Step 8. How many times was a Veggie Salad Bowl ordered?" ] }, { @@ -1016,7 +1016,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. How many times people orderd more than one Canned Soda?" + "### Step 9. How many times did someone order more than one Canned Soda?" ] }, { diff --git a/03_Grouping/Alcohol_Consumption/Exercise.ipynb b/03_Grouping/Alcohol_Consumption/Exercise.ipynb index 36d2fa4cb..d49a518b5 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise.ipynb @@ -13,7 +13,7 @@ "source": [ "### Introduction:\n", "\n", - "GroupBy can be summarizes as Split-Apply-Combine.\n", + "GroupBy can be summarized as Split-Apply-Combine.\n", "\n", "Special thanks to: https://github.com/justmarkham for sharing the dataset and materials.\n", "\n", diff --git a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb index 70c043997..bf2ed5124 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb @@ -13,7 +13,7 @@ "source": [ "### Introduction:\n", "\n", - "GroupBy can be summarizes as Split-Apply-Combine.\n", + "GroupBy can be summarized as Split-Apply-Combine.\n", "\n", "Special thanks to: https://github.com/justmarkham for sharing the dataset and materials.\n", "\n", diff --git a/03_Grouping/Alcohol_Consumption/Solutions.ipynb b/03_Grouping/Alcohol_Consumption/Solutions.ipynb index fee3dd1f1..3783e0b23 100644 --- a/03_Grouping/Alcohol_Consumption/Solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Solutions.ipynb @@ -13,7 +13,7 @@ "source": [ "### Introduction:\n", "\n", - "GroupBy can be summarizes as Split-Apply-Combine.\n", + "GroupBy can be summarized as Split-Apply-Combine.\n", "\n", "Special thanks to: https://github.com/justmarkham for sharing the dataset and materials.\n", "\n", diff --git a/03_Grouping/Regiment/Exercises.ipynb b/03_Grouping/Regiment/Exercises.ipynb index 98f544eba..abf1c126b 100644 --- a/03_Grouping/Regiment/Exercises.ipynb +++ b/03_Grouping/Regiment/Exercises.ipynb @@ -102,7 +102,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. What is the mean each company's preTestScore?" + "### Step 6. What is the mean of each company's preTestScore?" ] }, { diff --git a/03_Grouping/Regiment/Exercises_solutions.ipynb b/03_Grouping/Regiment/Exercises_solutions.ipynb index fa2b19220..f71a8519d 100644 --- a/03_Grouping/Regiment/Exercises_solutions.ipynb +++ b/03_Grouping/Regiment/Exercises_solutions.ipynb @@ -430,7 +430,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. What is the mean each company's preTestScore?" + "### Step 6. What is the mean of each company's preTestScore?" ] }, { diff --git a/03_Grouping/Regiment/Solutions.ipynb b/03_Grouping/Regiment/Solutions.ipynb index cdb0dc7b0..53fe58be1 100644 --- a/03_Grouping/Regiment/Solutions.ipynb +++ b/03_Grouping/Regiment/Solutions.ipynb @@ -421,7 +421,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. What is the mean each company's preTestScore?" + "### Step 6. What is the mean of each company's preTestScore?" ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb index 7ba8d2a23..052017f1d 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises.ipynb @@ -70,7 +70,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Create a lambda function that capitalize strings." + "### Step 5. Create a lambda function that will capitalize strings." ] }, { @@ -134,7 +134,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" + "### Step 9. Create a function called majority that returns a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb index f38c65799..41645d028 100644 --- a/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Exercises_with_solutions.ipynb @@ -384,7 +384,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Create a lambda function that capitalize strings." + "### Step 5. Create a lambda function that will capitalize strings." ] }, { @@ -777,7 +777,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" + "### Step 9. Create a function called majority that returns a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" ] }, { diff --git a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb index 0100aee5b..e7ec9f4a3 100644 --- a/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb +++ b/04_Apply/Students_Alcohol_Consumption/Solutions.ipynb @@ -374,7 +374,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Create a lambda function that capitalize strings." + "### Step 5. Create a lambda function that will capitalize strings." ] }, { @@ -756,7 +756,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Create a function called majority that return a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" + "### Step 9. Create a function called majority that returns a boolean value to a new column called legal_drinker (Consider majority as older than 17 years old)" ] }, { diff --git a/04_Apply/US_Crime_Rates/Exercises.ipynb b/04_Apply/US_Crime_Rates/Exercises.ipynb index e8fbffa2c..27aac665c 100644 --- a/04_Apply/US_Crime_Rates/Exercises.ipynb +++ b/04_Apply/US_Crime_Rates/Exercises.ipynb @@ -141,7 +141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. What is the mos dangerous decade to live in the US?" + "### Step 9. What is the most dangerous decade to live in the US?" ] }, { diff --git a/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb b/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb index 81924c1d7..8e807b326 100644 --- a/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb +++ b/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb @@ -738,7 +738,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. What is the mos dangerous decade to live in the US?" + "### Step 9. What is the most dangerous decade to live in the US?" ] }, { diff --git a/04_Apply/US_Crime_Rates/Solutions.ipynb b/04_Apply/US_Crime_Rates/Solutions.ipynb index 8f5234f00..c76d11cdf 100644 --- a/04_Apply/US_Crime_Rates/Solutions.ipynb +++ b/04_Apply/US_Crime_Rates/Solutions.ipynb @@ -705,7 +705,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. What is the mos dangerous decade to live in the US?" + "### Step 9. What is the most dangerous decade to live in the US?" ] }, { diff --git a/05_Merge/Auto_MPG/Exercises.ipynb b/05_Merge/Auto_MPG/Exercises.ipynb index d5c56e11f..1f741a04f 100644 --- a/05_Merge/Auto_MPG/Exercises.ipynb +++ b/05_Merge/Auto_MPG/Exercises.ipynb @@ -54,7 +54,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 4. Ops it seems our first dataset has some unnamed blank columns, fix cars1" + "### Step 4. Oops, it seems our first dataset has some unnamed blank columns, fix cars1" ] }, { @@ -102,7 +102,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Ops there is a column missing, called owners. Create a random number Series from 15,000 to 73,000." + "### Step 7. Oops, there is a column missing, called owners. Create a random number Series from 15,000 to 73,000." ] }, { diff --git a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb index 6a85e6af5..f032fd34e 100644 --- a/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb +++ b/05_Merge/Auto_MPG/Exercises_with_solutions.ipynb @@ -105,7 +105,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 4. Ops it seems our first dataset has some unnamed blank columns, fix cars1" + "### Step 4. Oops, it seems our first dataset has some unnamed blank columns, fix cars1" ] }, { @@ -1168,7 +1168,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Ops there is a column missing, called owners. Create a random number Series from 15,000 to 73,000." + "### Step 7. Oops, there is a column missing, called owners. Create a random number Series from 15,000 to 73,000." ] }, { diff --git a/05_Merge/Auto_MPG/Solutions.ipynb b/05_Merge/Auto_MPG/Solutions.ipynb index 24e1f8a5a..bdf6c8b64 100644 --- a/05_Merge/Auto_MPG/Solutions.ipynb +++ b/05_Merge/Auto_MPG/Solutions.ipynb @@ -99,7 +99,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 4. Ops it seems our first dataset has some unnamed blank columns, fix cars1" + "### Step 4. Oops, it seems our first dataset has some unnamed blank columns, fix cars1" ] }, { @@ -1153,7 +1153,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Ops there is a column missing, called owners. Create a random number Series from 15,000 to 73,000." + "### Step 7. Oops, there is a column missing, called owners. Create a random number Series from 15,000 to 73,000." ] }, { diff --git a/05_Merge/Fictitous Names/Exercises.ipynb b/05_Merge/Fictitous Names/Exercises.ipynb index 61cc55c0f..4382d9d95 100644 --- a/05_Merge/Fictitous Names/Exercises.ipynb +++ b/05_Merge/Fictitous Names/Exercises.ipynb @@ -36,7 +36,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Create the 3 DataFrames based on the followin raw data" + "### Step 2. Create the 3 DataFrames based on the following raw data" ] }, { diff --git a/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb b/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb index 805f867ab..1f89f05b6 100644 --- a/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb +++ b/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb @@ -38,7 +38,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Create the 3 DataFrames based on the followin raw data" + "### Step 2. Create the 3 DataFrames based on the following raw data" ] }, { diff --git a/05_Merge/Fictitous Names/Solutions.ipynb b/05_Merge/Fictitous Names/Solutions.ipynb index 39b498503..c21531f1a 100644 --- a/05_Merge/Fictitous Names/Solutions.ipynb +++ b/05_Merge/Fictitous Names/Solutions.ipynb @@ -36,7 +36,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Create the 3 DataFrames based on the followin raw data" + "### Step 2. Create the 3 DataFrames based on the following raw data" ] }, { diff --git a/05_Merge/Housing Market/Exercises.ipynb b/05_Merge/Housing Market/Exercises.ipynb index f9b3fe2ae..02e044d9b 100644 --- a/05_Merge/Housing Market/Exercises.ipynb +++ b/05_Merge/Housing Market/Exercises.ipynb @@ -98,7 +98,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Ops it seems it is going only until index 99. Is it true?" + "### Step 6. Oops, it seems it is going only until index 99. Is it true?" ] }, { diff --git a/05_Merge/Housing Market/Exercises_with_solutions.ipynb b/05_Merge/Housing Market/Exercises_with_solutions.ipynb index 49e8e3a8a..1d33c0824 100644 --- a/05_Merge/Housing Market/Exercises_with_solutions.ipynb +++ b/05_Merge/Housing Market/Exercises_with_solutions.ipynb @@ -777,7 +777,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Ops it seems it is going only until index 99. Is it true?" + "### Step 6. Oops, it seems it is going only until index 99. Is it true?" ] }, { diff --git a/05_Merge/Housing Market/Solutions.ipynb b/05_Merge/Housing Market/Solutions.ipynb index 5c02512e8..07101612c 100644 --- a/05_Merge/Housing Market/Solutions.ipynb +++ b/05_Merge/Housing Market/Solutions.ipynb @@ -756,7 +756,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Ops it seems it is going only until index 99. Is it true?" + "### Step 6. Oops, it seems it is going only until index 99. Is it true?" ] }, { From d9dd85498adc4a953bcd07a40f036d13bcc82967 Mon Sep 17 00:00:00 2001 From: Max Alletsee Date: Wed, 18 Mar 2020 20:48:41 +0100 Subject: [PATCH 83/92] Small fixes in Chipotle and Online Retail Visualization exercises --- .../Chipotle/Exercise_with_Solutions.ipynb | 69 ++++++---- 07_Visualization/Chipotle/Solutions.ipynb | 124 +++++++++++++----- .../Online_Retail/Exercises.ipynb | 4 +- .../Exercises_with_solutions_code.ipynb | 4 +- .../Online_Retail/Solutions.ipynb | 4 +- 5 files changed, 142 insertions(+), 63 deletions(-) diff --git a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb index b0a260c1c..b057529aa 100644 --- a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb +++ b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 3, "metadata": { "scrolled": false }, @@ -74,6 +74,19 @@ "data": { "text/html": [ "
\n", + "\n", "\n", " \n", " \n", @@ -87,7 +100,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -95,7 +108,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -103,7 +116,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -111,7 +124,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -119,7 +132,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -127,7 +140,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -135,7 +148,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -143,7 +156,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -151,7 +164,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -159,7 +172,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -196,7 +209,7 @@ "9 [Fresh Tomato Salsa, [Rice, Black Beans, Pinto... $9.25 " ] }, - "execution_count": 134, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -214,17 +227,19 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nrDbS1wAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -246,7 +261,7 @@ "\n", "# Set the title and labels\n", "plt.xlabel('Items')\n", - "plt.ylabel('Price')\n", + "plt.ylabel('Number of Times Ordered')\n", "plt.title('Most ordered Chipotle\\'s Items')\n", "\n", "# show the plot\n", @@ -263,27 +278,29 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(0, 40.0)" + "(0, 36.7178857951459)" ] }, - "execution_count": 136, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\nAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], @@ -336,7 +353,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.6.8" } }, "nbformat": 4, diff --git a/07_Visualization/Chipotle/Solutions.ipynb b/07_Visualization/Chipotle/Solutions.ipynb index ab6b86c4e..23e7498b3 100644 --- a/07_Visualization/Chipotle/Solutions.ipynb +++ b/07_Visualization/Chipotle/Solutions.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -47,10 +47,14 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 2, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/chipotle.tsv'\n", + " \n", + "chipo = pd.read_csv(url, sep = '\\t')" + ] }, { "cell_type": "markdown", @@ -61,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 3, "metadata": { "scrolled": false }, @@ -70,6 +74,19 @@ "data": { "text/html": [ "
\n", + "\n", "
0011Chips and Fresh Tomato Salsa$2.39
1111Izze$3.39
2211Nantucket Nectar$3.39
3311Chips and Tomatillo-Green Chili Salsa$2.39
4422Chicken Bowl$16.98
5531Chicken Bowl$10.98
6631Side of Chips$1.69
7741Steak Burrito$11.75
8841Steak Soft Tacos$9.25
9951Steak Burrito
\n", " \n", " \n", @@ -83,7 +100,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -91,7 +108,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -99,7 +116,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -107,7 +124,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -115,7 +132,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -123,7 +140,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -131,7 +148,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -139,7 +156,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -147,7 +164,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -155,7 +172,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -192,12 +209,14 @@ "9 [Fresh Tomato Salsa, [Rice, Black Beans, Pinto... $9.25 " ] }, - "execution_count": 134, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "chipo.head(10)" + ] }, { "cell_type": "markdown", @@ -208,21 +227,46 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nrDbS1wAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], - "source": [] + "source": [ + "# get the Series of the names\n", + "x = chipo.item_name\n", + "\n", + "# use the Counter class from collections to create a dictionary with keys(text) and frequency\n", + "letter_counts = Counter(x)\n", + "\n", + "# convert the dictionary to a DataFrame\n", + "df = pd.DataFrame.from_dict(letter_counts, orient='index')\n", + "\n", + "# sort the values from the top to the least value and slice the first 5 items\n", + "df = df[0].sort_values(ascending = True)[45:50]\n", + "\n", + "# create the plot\n", + "df.plot(kind='bar')\n", + "\n", + "# Set the title and labels\n", + "plt.xlabel('Items')\n", + "plt.ylabel('Number of Times Ordered')\n", + "plt.title('Most ordered Chipotle\\'s Items')\n", + "\n", + "# show the plot\n", + "plt.show()" + ] }, { "cell_type": "markdown", @@ -234,37 +278,55 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(0, 40.0)" + "(0, 36.7178857951459)" ] }, - "execution_count": 136, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcXFWd9/HPr7Onu4GQQAJZyUZQQEDHhyVK44JMQFBk\naEBHVNSZ53EGEEcFnsdXgqLALMxkVGYBZIgLtArIYoCI0khwkGEHQUiAbHQSCMTQ6ZCE0L/nj3Oq\n+1alqru6urau+r5fr3ql6i7nnntTXb97z+/cc83dERERSWmodAVERKS6KDCIiEgaBQYREUmjwCAi\nImkUGEREJI0Cg4iIpFFgqBFmdp2ZfbPC23/dzB7MMu8sM7urEvUqJjNbaGY/LNO2pptZt5kNyb/R\nch6rHNufb2bPVmr7Q92Q/NINBWa2ysw2mtmYxLRzzOzeStarFMxsPvBBYH93PzJzvrv/xN1PSCzf\nbWYzy1nHIirnjT9D/SajitXf3Ze7+0GV2v5Qp8BQOk44vudnmV7VCjhLnQGscvfteS4/FI6BVXN5\nxWJmw4pQRlUdq2LsU71TYCitfwC+YmZ7ZM7I1lRgZvea2efi+7PNbLmZXWlmm81spZkdFaevMbMN\nZvbpjGL3MbNlZvZGLGtaoux5cd5rZvasmf1FYt51ZnaVmf3SzDqBliz13c/Mbo3rP29mn4/TPwdc\nDRwVt7swy7pnm9n98f19gAFPxuX/Ik4/ycwei/u63MwOSaz/kpl9xcyeiPNvMLORcd54M7s9Tn8t\nlp+VmR1tZg/FZX9vZkdlHPtL47a7gAPMbIaZtZvZFjO7G5iQUd6RZvZALO8xMzu2n/L2MLNrzazD\nzNaa2bdSP4Jm1mBm/2hmr5rZSuDEXPuROCYXmtkf4n5fmzomeR7Pr5nZE8DWbCcClT5WA9lfMzs2\nHs+vmdl64AepaYn1p5jZTWb2SjzG/5qY9zkzeyaWe6cl/m7qlrvrVYIX8BLwAeDnwLfitHOA38T3\n04G3gYbEOvcCn4vvzwZ2Ap8m/JB+C1gNfBcYAXwYeAMYG5e/DtgCHBPn/wtwf5w3FliTKOtdwKvA\nvMS6m4Ej4+eRWfbnt4ltvwt4BWhJ1PW3fRyLtPlAN3BA4vPhwEbgPbF+fxmP34jEsXwQmAjsBTwD\nfDHO+w5wFeEkZxhwTI46jANeB86Ky54RP49LHPtVwLw4fzjwO0JwHwG8Lx7vJXH5ycAm4CPx8wfj\n5/F9lHdLrOtowg/ng8AX4vJ/Hfdr/7iPv8n8fmT5fj2ZWH458M0BHM9H47qjqvBYDRvg/h4LvBW/\nCyOAUXHamji/AXgc+Md47EcCR8d5pwDPA3PjchcDD1T696PSr4pXoFZf9AaGdxJ+dMcz8MDwXGLe\nwXH5CYlpm4BD4/vrgJ8k5jXGP5bJwOnAfRn1+3fgG4l1/6uPfZkSyxqbmPYd4AeJug40MMxMfL4K\nuCRjnT8C70scyzMT864ArorvLyH84M7q5//jU8CDGdN+B3w6cewXJeZNJQTmMYlpP6b3x+5rwPUZ\n5d0F/GWO8vYFtpP4ISb84P46vv81MdjFzx/O/H5k+X59IfH5z4EVAzieZ1frsSpgf4+Nx3ZEYn4y\nMBxFCJS7HUtgKfDZxOcGoAuYms/fea2+1JRUYu7+B+AO4KICVt+YeP9mLG9TxrSmxOeeS2d37yIE\npP0JQehIC72GXjezzYSzwYnZ1s1if+B1d9+WmLaaEHSKYTqhyS1ZvylxuynJY7GN3v3+B+AFYJmF\n5rav59jG/rHOSZn7kDwG+wOb3f3NjOWTdT49o87HAJNylDedcDa7PrH8vwP7JLaXXD6zrtmsy1g+\ndbzyOZ7JdTNV+ljlkmt/AV5197dyrDcFWO3u3VnmTQcWp+oGvEbIgRXruz0kDa90BerEIsKl+z8l\npnXFf8cCW+P75B9KIaam3phZE6FJoIPwR9fu7h/pY13vY14HsLeZNcaAAzANeHmQ9U1ZC3zb3S8b\n6IruvhX4O+DvzOwdwL1m9pC735uxaAfwiYxp04A7k8Ul3q8HxpnZmMQP3jTC1U6qzkvc/a/6ql7i\n/VrCWe14j6emGdaT+P8j/GD1J3P5jsS2+jue/f1/V/JY5ZJrf/tbfy0wzcwasgSHNcCl7n5DHtuv\nG7piKAN3fwFoA85NTNtE+GH9VEw8fg6Y1U9R/fXWWBCThiMJOYkH3f1lwhXLXDP7lJkNN7MRZvYe\nMzswz/qvIzQlXGZmo8zsUEKzWKH91DcAye6qVwN/bWbvBTCzRjNbYGaN/RVkZieaWeq4dQK76P1B\nSloKzDGzM8xsmJm1AgcBt2cr193XAA8Dl8TjNR/4aGKRHwEfNbPj4//f6Jjw3D9HeRuAZcA/m1mz\nBTPN7P1xkZ8C55rZZDMbB+S68kn6Ulx+b0Lb+I1xesHHM6rosSpgf/vzECF4XW5mY+N3+Og47z+A\ni+NJBWa2p5mdNsB61RwFhtLJPIP5JuHqIDn9C4T2102EP7wHBlimZ7z/CeHq5DVCAvJT0HNWfTyh\nTbsjvi4nJOnydSaht0gHcBMhP5F5Vp6vRcCSePl+mrs/QjgW34uX888T8hLJfctlDnCPhd5UDwDf\nd/fdeia5++vASYSri03x3xPdfXMf2zgLOJJwPL8BXJ8obx0hcXkxIZG/OpaZ+pvKVt6nCYnPZwjJ\n3J/Re5V4NXA38AThR/amPvY55SeEYLMSWAF8O9ZtMMezWo5VNln3tz/xKuGjhO/KGsIVxOlx3i8I\nfws3mtmfCAnuE3IUVTcs+1VtkTcSusM9DKxz95PjGVEb4XJwFXC6u28peUVEaoSZvQSc4+6/qXRd\nyqHe9rfSynXFcB7hLCnlQuAedz+Q0C2vkMSsiIiUQMkDg5lNARYA1yQmn0Lvpeb1wMdKXQ+RGlP6\nS/3qUm/7W1Hl6JX0z8BXgT0T0ya6+0YISTkz27cM9RCpGe4+VMeaKki97W+llfSKwcxOBDa6++P0\n3aNGZwMiIlWi1FcMxwAnm9kCYAzQbGEo3g1mNtHdN5rZJMLwCrsxMwUMEZECuHvBgxGW9IrB3S92\n92nxMvAMwnAQf0noD/2ZuNjZwK19lKGXOwsXLqx4HarlpWOhY6Fj0fdrsCp1H8PlwIfN7DnCgFqX\nV6geIiKSoWxDYni46ei++P514EPl2raIiORPdz4PES0tLZWuQtXQseilY9FLx6J4ynLnc6HMzKu5\nfiIi1cjM8GpNPouIyNCjwCAiImkUGEREJI0Cg4iIpFFgEBGRNAoMIiKSRoFBRETSKDCIiEgaBQYR\nEUmjwCAiImkUGEREJI0Cg4iIpFFgEBGRNAoMIiKSRoFBRETSKDCIiEgaBQYREUlT0sBgZqPM7Pdm\n9piZPWVmC+P0hWa2zsweja8TSlkPERHJX8kf7WlmY919m5kNAx4AzgX+HOh09yv7WVeP9hQpos7O\nTtra2lixcgVzZs+htbWV5ubmSldLimywj/YcXszKZOPu2+LbUXF7qV/6gistIgO3fPlyFpy8gO6p\n3XRN6KLxzkYu+NoFLL1tKfPnz6909aSKlOOKoQF4BJgFfN/dL4pNSp8BtgAPA19x9y1Z1tUVg0gR\ndHZ2Mnn6ZDpP6gx/iSkvQPMdzXSs6aCpqali9ZPiGuwVQ8mTz+7e7e6HA1OA95rZO4CrgJnufhiw\nAeizSUlEBqetrY3uqd3pQQFgFnRP7aatra0i9ZLqVPKmpBR3f8PM2oETMnILVwO351pv0aJFPe9b\nWlpoaWkpUQ1FateKlSvomtCVdV7X+C5WvrCyzDWSYmpvb6e9vb1o5ZU0MJjZBOAtd99iZmOADwOX\nm9kkd98QFzsVeDpXGcnAICKFmTN7Do13NtLF7sGh8bVGZs+aXYFaSbFknjRfcsklgyqvpDkGMzsE\nuJ7QZNUAtLn7t81sCXAY0A2sAv7K3TdmWV85BpEiUI6hvgw2x1Dy5PNgKDCIFE9ar6TxXTS+1kjD\n2gb1SqpBCgwikretW7fS1tbGyhdWMnvWbFpbW3WlUIMUGEREJE3Vd1cVEZGhRYFBRETSKDCIiEga\nBQYREUmjwCAiImkUGEREJI0Cg4iIpFFgEBGRNAoMIiKSRoFBRETSKDCIiEgaBQYREUmjwCAiImkU\nGEREJI0Cg4iIpFFgEBGRNAoMIiKSpqSBwcxGmdnvzewxM3vKzBbG6ePMbJmZPWdmd5vZnqWsh4iI\n5K/kj/Y0s7Huvs3MhgEPAOcCnwBec/e/N7OvA+Pc/cIs6+rRniIiA1T1j/Z0923x7ShgOODAKcD1\ncfr1wMdKXQ8REclPyQODmTWY2WPABuBX7v4/wER33wjg7huAfUtdDxERyc/wUm/A3buBw81sD+AW\nM3sn4aohbbFc6y9atKjnfUtLCy0tLSWopYjI0NXe3k57e3vRyit5jiFtY2bfALYBnwda3H2jmU0C\n7nX3g7IsrxyDiMgAVXWOwcwmpHocmdkY4MPAs8BtwGfiYmcDt5ayHiIikr+SXjGY2SGE5HJDfLW5\n+7fNbG/gp8BUYDVwurv/Kcv6umIQERmgwV4xlLUpaaAUGEREBq6qm5JERGToUWAQEZE0CgwiIpJG\ngUFERNIoMIiISBoFBhERSaPAICIiaRQYREQkjQKDiIikUWAQEZE0CgwiIpJGgUFERNIoMIiISBoF\nBhERSaPAICIiaRQYREQkjQKDiIikUWAQEZE0CgwiIpKmpIHBzKaY2W/M7A9m9pSZ/W2cvtDM1pnZ\no/F1QinrISIi+TN3zz7DrBPIPhNw9z36LdxsEjDJ3R83sybgEeAUoBXodPcr+1nfc9VPRESyMzPc\n3Qpdf3iuGe7eHDfwLWA98EPAgE8C++VTuLtvADbE91vN7FlgcqruhVZaRERKJ+cVQ88CZk+4+7v6\nm9bvhsxmAO3AwcBXgM8AW4CHga+4+5Ys6+iKQURkgEp2xZDQZWafBG4kNC2dCXQNZCOxGennwHnx\nyuEq4Jvu7mZ2KXAlcE62dRctWtTzvqWlhZaWloFsWkSk5rW3t9Pe3l608vK5YpgBLAaOIQSGB4Dz\n3X1VXhswGw7cAdzp7ouzzJ8O3O7uh2aZpysGEZEBKvkVQwwApxS6AeAHwDPJoGBmk2L+AeBU4OlB\nlC8iIkWUzxXDXODfgInufrCZHQqc7O6X9lu42THAb4GnCFcbDlwMnAUcBnQDq4C/cveNWdbXFYOI\nyAAN9oohn8BwH/BV4D/c/fA47Wl3P7jQjeZdOQUGEZEBG2xgyOcGt7Hu/lDGtF2FblBERKpbPoFh\nk5nNIt7sZmanEe5rEBGRGpRPU9JM4D+Bo4HNwEvAJ919dckrp6YkERmEzs5O2traWLFyBXNmz6G1\ntZXm5uZKV6vkSppjMLMG4DR3/6mZNQIN7t5Z6MYGXDkFBhEp0PLly1lw8gK6p3bTNaGLxk2NNKxt\nYOltS5k/f36lq1dS5Ug+P+zu7yl0A4OhwCAihejs7GTy9Ml0ntQJsxIzXoDmO5rpWNNBU1NTxepX\nauVIPt9jZn9nZlPNbO/Uq9ANioiUWltbG91Tu9ODAsAs6J7aTVtbW0XqNVTkMyRGa/z3S4lpDsws\nfnVERAZvxcoVdE3IPnJP1/guVr6wssw1GlryufP5gHJURESkWObMnkPjnY10ZRnWrfG1RmbPml2B\nWg0d+eQYxgIXANPc/YtmNgc40N3vKHnllGMQkQIox1D60VWvIzxg5+j4+WXgZ4SB8UREqk5zczNL\nb1va2ytpfBeNr/X2SqrloFAMefdKMrPHEkNiDPh5DAVVTlcMIjIIW7dupa2tjZUvrGT2rNm0trbW\nRVAoxxXDTjMbQ++dz7OAHYVuUESkXJqamjjnnKyPepE+5BMYFgJ3AVPN7MeE5zJ8ppSVEhGRyum3\nKQnAzMYDRxKe0/ygu28qdcXidtWUJCIyQCW789nMjuhrRXd/tNCN5kuBQURk4EoZGO6Nb0cD7wGe\nIFwxHAo87O5HFbrRvCunwCAiMmAlGxLD3Y9z9+MIQ2wf4e7vcfd3A4cTuqyKiEgNymespAPd/anU\nB3d/GjiodFUSEZFKyqdX0lNmdg3wo/j5k8CTpauSiIhUUj43uI0G/jfw/jjpt8C/ufv2fgs3mwIs\nASYC3cDV7v6vZjYOaAOmA6uA0919S5b1lWOQkqjXB7hIfSj1g3qGAUvc/ZMFVm4SMMndHzezJsLQ\nGqcAnwVec/e/N7OvA+Pc/cIs6yswSNHV8wNcpD6U40E9y4EPuPvOQjeSKOsXwPfi61h33xiDR7u7\nz8uyvAKDFFW9D64m9aEcD+p5EXjAzL5hZhekXgPdkJnNAA4DHgQmuvtGAHffAOw70PJECqEHuIj0\nL5/k8wvx1QAU1Agbm5F+Dpzn7lvNLPMyIOdlwaJFi3ret7S00NLSUkgVRAA9wEVqU3t7O+3t7UUr\nL68hMaDnxx133zqgDZgNJwzRfae7L47TngVaEk1J97r7bl1g1ZQkxXbNNddw/nfPp+vULA9wubmR\nxecu1qBrMuSVI8dwMPBDIPWc503Ap939D3lWcAmwyd0vSEy7Anjd3a9Q8rl61ENPHeUYpB6UIzD8\nDvi/7n5v/NwCfMfdj+5zxbDsMYTurU8RmoscuBh4CPgpMBVYTeiu+qcs6yswlEk99dRJ29eMB7jU\n2r5KfSpHYNjtoTx6UE9tqcez6Hp9gIvUh3I8qOdFM/sGoTkJ4FOEnkpSI/LpqVNr7e56gItIbvl0\nV/0csA9wM3ATMCFOkxqhnjoiktTvFYO7bwbOLUNdpELmzJ5D452NdJGlp85rjcyeNXtQ5ddDUluk\nluTdXbUSlGMoj1LmGOopqS1SLUqefK4kBYbyKUVPnXpMaotUg3Ikn6UOzJ8/n441HUXtqVOPSW2R\nWtBvYDCzvwcuBd4E7iI82vPL7v6jPleUIafYPXWU1BYZmvLplXS8u78BnER4dsJs4KulrJTUhjmz\n59C4qTHrvGIktUWkNPK5we1pdz84PsXt5+5+l25wk3yUK8egXk8i6cpx5/PlwMcITUnvBfYC7nD3\n/1XoRvOunALDkFfq4SfU60lkd2XplWRmewNb3P1tMxsL7BGfo1BSCgy1oVTDT6jXk0h25eqVNA+Y\nEYfQTllS6EalvpRq+An1ehIpjXx6Jf2Q8Kf3OPB2nOwoMEiFqdeTSGnkc8XwHuAdatORalPqoTxE\n6lU+yeefAee6+/ryVClt24pHQ0i5ewcpxyCSXTl6Jd0LHEZ4uM6O1HR3P7nQjeZLgWHoqFTvID10\nR2R35QgMx2ab7u73FbrRfCkwDA2VPnPXQ3dE0pW8V5K732dm04E57n5P7K46rNANSu2pdO8gPXRH\npLj6HRLDzL4A/Bz4jzhpMvCLUlZKhhb1DhKpLfmMlfQl4BjgDQB3XwHsm0/hZnatmW00sycT0xaa\n2TozezS+Tiik4lI9NCaSSG3JJzDscPedqQ/xJrd8G/6vAz6SZfqV7n5EfN2VZ1lSpVpbW2lY2wAv\nZMx4ARrWNtDa2lqReolIYfK5j+E+M7sYGGNmHwb+D3B7PoW7+/KYn8hUcFJEqk9zczNLb1uas3eQ\nEsEiQ0s+vZIagHOA4wk/6He7+9V5byAEhtvd/dD4eSHwGWAL8DDwFXffkmNd9UoaQtQ7SKQ6lKO7\n6nnuvri/aX2snxkY9gE2ubub2aXAfu6etUuJmfnChQt7Pre0tNDS0pLPZkVE6kZ7ezvt7e09ny+5\n5JKSB4ZH3f2IjGmPufvheW0gIzDkOy/O1xWDiMgAlew+BjM7EzgLOMDMbkvMagZeH8A2jEROwcwm\nJYbsPhV4egBlidQMPWBIqlXOK4Z4Nn8AcBlwYWJWJ/Cku+/qt3CznwAtwHhgI7AQOI4wxEY34VGh\nf+XuG3OsrysGqUl6wJCUUlke1FMpCgxSiyo9hIjUvsEGhpz3MZhZp5m9keXVaWZvFLpBkXqXzxAi\nIpWUM8fg7mrsFCkBDSEi1S6fO59FpIg0hIhUO+UYRMpMOQYptZIPuy0ixaUhRKTa6YpBpEI0hIiU\nirqriohImpJ1VxURkfqkHIPUNA07ITJwakqSmqVhJ6ReKccgkoW6hEo9U45BJAsNOyFSOAUGqUka\ndkKkcEo+S5pqSNYWow5zZs+h8c5Gutg9OOQadqIa9l2kGijHID2qIVlbrDoMNMdQDfsuUixKPktR\nVEOytth1SPuxzxh2IvljXw37LlJMSj5LUVRDsrbYdZg/fz4dazpYfO5iLjzyQhafu5iONR27XQFU\nw76LVBPlGASojmRtKerQ1NTEOeecU/btigxlumIQoDqeEVCpOlTDvotUk5LmGMzsWuAkYKO7Hxqn\njQPagOnAKuB0d9+SY33lGBJK2WumFO3sA63vQOpQzGOhHIPUmsHmGHD3kr2A+cBhwJOJaVcAX4vv\nvw5c3sf6LsH999/vzeOavfHQRucDeOOhjd48rtnvv//+0mzjuMFto9D65lOHUhyLYu67SKXF386C\nf7tL3ivJzKYDt3vvFcMfgWPdfaOZTQLa3X1ejnW91PUbCsp5RluMZwQMtr591aGUx0LPR5BaMRSf\n4Lavu28EcPcNZrZvBeowpOTTa6a/BGu+8knW9mew9e2rDqU8FsXYd5FaUA29kvq8JFi0aFHP+5aW\nFlpaWkpcneoz1HrNlLK+Q+1YiJRDe3s77e3tRSuvEoFho5lNTDQlvdLXwsnAUK8KGd6hkkpZ36F2\nLETKIfOk+ZJLLhlUeeXIMcwg5BgOiZ+vAF539yvM7OvAOHe/MMe6yjFQ3hxDMXr7lLK+6kEk0r9q\n75X0E6AD2AGsAT4LjAPuAZ4DlgF79bF+EfLztaEcvWaK2dunlPVVDyKRvlHtvZIGQ1cM6UrZa6YU\nZ+KlrK96EInkpkH0pCiuueYazv/u+XSdmqXt/uZGFp+7WD12RIYIDaInRaHePiKSUg3dVaveQBKy\nxR62Ilne1ClTAVi7bm3Rh8RI6+2zA3ga2AyMg7GvjO2zt09nZyfXX389d/zyDjA4acFJnH322XrI\njchQNZgERalfVEHyeSAJ2WIP1ZBZHrNwRuIcUfyE6xtvvOHN45qdj+CMxZlH2OZcnBH43XffnbOO\nY5rHhHrNpaeeY/cYq2SwSIWg5HPpDHRQt2Imb/sqj5uA84B1xe2iuWzZMj5y0kfgDPLah87OTvaf\ntj9bd2yF03Zfp+n2JtavXa+ksEiZKcdQQgN5gEuxH/bSV3lMA/5QeNm5rFmzhsaDGvPeh7a2NnY2\n7gzj5GZZ563939JDbkSGIAWGPgwkIVvs5G1f5bEfof2/wLIL2Wa27axYuYKdw3fC/tnL2zFxh5LW\nIkOQAkMfBvIAl2I/7KWv8lhPuE2wwLIL2Wa27cyZPYeRu0aGWxizGLVxlIaoEBmClGPoQ1/t/KNv\nGc2Lz7/IfvvtB0BHRwezDpzF9o9vz9rWftm3LuvpTbRgwQKWLl3a03Mp83NraytA/zmGl6DhpgYO\nPeRQDj34UC677DKam5sL7hU10DyJcgwi1Uk3uJXY8uXLWXDyAt7a/y2277sd1gFrYPSU0Yx4fQRL\nb1sKEJbZ+y22r9secgBTYPQro2lY24C703BAA10Tuhi9ejTb12xn9NzRbJ+4ndEbR7P9+e2Mnjaa\n7dO307ipkYa1DWnldk/tpmt8VxhUZC3wTsLQgxuBGYTtrQFWwaiRoxg+ezhdE7rSypo/f/6A9je1\nzcbX+i5j+fLlHL/geN7c8WbINUwJdRn76lju/uXdeW9XRIpHgaEM1q9fzwGzD2DHzB0wk/DDPIqe\ns2KArR/dGs6YdxASwy/CqBdGMXzkcLpO7uqdtxj4BLmvAmK5qTN0oGfohwnjJ3DxNy5m57SdYZ0z\ns5Tzc+D8WA4U1CtqoMNNbN26leuvv55fLv0lACcuOJGzzz5bVwoiFaLAUAZ9DRcx8uqR2J7GjtN3\n7DZvVNsovNPZ+fmdYcIjwApCd9BMNwJzgSPCx2zDUPTUgy7YBnyq/3JylSUitUvdVcugr946O4fv\nZMek3YMCwI5JO9g5bGfvhM3k7MGT7GkEuXsBdU3oCstNy6+cXGWJiORS10Ni5Bq+IjXEw6233cr6\n9et5e9fbjOweyU7ij/wbhIHDNxPa+g1opGcICQ4GRsGwl4fhf3K6H+iG54GXgRFxnf2ANxPLryec\n6UfDXh7G7bffzuT9J3Pqqady8803c9ttt8FLhP+11Tl2KqMcyN6jqNhDd4hI7ajbpqS0JGsiUXv5\npZfz1Yu+yrZ9toVk6jpgFfA28CFgGOEpEjMIZ+3PEZLAMwmJ1w5CIvh9wG/ixvYAtrBbopiZhGu2\n1UA3cAE9OQZ+CkyN896O251GqFNq/QJzDLn2fSBJahGpXsoxFCBnt8w/En5Yc/3gbif8QKfm95VM\nviEuexJwa44ybyAknF8h5AaOJASZdUArIQjkqtN/A7+Oy0wj9FZaleiVlKNHkZ6AJlL7BhsY6rIp\nKedwE12Es/psw1BMJ5ylT0nMf5rwo5xt+ZmEq4QVfZQ5g9Ak9fFYzqPABwmBJnXGn6tORwEvgW0w\npndP59j3H8vl919OU1NTnz2K8hm6Q0lqkfpWl4EhZzK5v6TuSxnz+0omTyZcUWwG5uRYZiqQyglP\nA3aR1puo3zpNBt/hnHHGGVz2nct6Jvf1w67nLohIfyrWK8nMVpnZE2b2mJk9VM5t5xz6YRyh/T6b\n9YQkc3L+OHIOB8HLhKanvspcC+ydeL89yzL91Gnk2yMHNOxEsYfuEJHaU7Ecg5m9CLzb3Tf3sUzR\ncgypXjgP/v5B7vnVPaxeuzo00bwf+BXQSegxtBn4JKHJ6HFCU9A2YAMhQWzAPGA24Urg34EW4HeE\nXkZjgKNjmQAn03eO4ThgPCGP0A2cHstP6Sfv0TRqYMNOKMcgUvuGbPLZzF4C3uPur/WxTFECQ6oX\nzpsNb7Jry67e3kGr42sicCC9vX3eJjSypXoBrSM0I3UDB9Dbs2htnObs3uNoBOFqYCOwJ729kqbS\nkyhmZlw/9f7tRH3mxvfr4nqpZqxpcdpqGDNqDMuWLhtwT6KBDnshIkPLUA4MLwJ/Ivwc/qe7X51l\nmUEHhp55qgBdAAANR0lEQVQz5Pd1wlKyn3knh6Por2dSsivoo+Qu84Y4/S1Cj6MGegPHDELCuTmx\nfOLhO/yMEIBWAufG5XYA94A9ahx37HGceuqpgxp2YqDDXojI0DGUeyUd4+7rzWwf4Fdm9qy7Ly/2\nRnp64TxC7t5BqQffHEHoBZTjwTNMTywHfZc5A2gDLgaagEnAQcBodh8SI7MO0wjNVE5oyjqCEIxO\nhJFdIznrrLMG3XOoqalJvY9EJKuKBQZ3Xx//fdXMbgHeC+wWGBYtWtTzvqWlhZaWlgFtp6cXzipC\nc1E2yWEkNhMCQH/LQchL5CpzKuFKAHpvTst3SIzJ8X2W4S308BsRydTe3k57e3vRyqtIU5KZjQUa\n3H2rmTUS7iW+xN2XZSw34Kakjo4OzjvvPG66+Sa8O2Pd8YSz9sSwFQD8mHAm30VIMu8CxsbXZMLZ\n/sGEJp6RhMDRSbiPYQLZB7P7ISEwpPILDYQAMQr4Yvz3aXqH0Xg2rndQfP8OwjAaGQPijfrpKL5/\nwfd1ti8iOQ3VpqSJwC1m5rEOP84MCoW46qqr+NK5X+pNHs8kfdiKPQk/7CsIdw23ErqbvgTsS++4\nRwcQeiWtBh4jJJHvIeQLILT3TycEhVWEAJCZY1hN6LmUSnKvAQ4hjLP0r3E7swhXEM/Fct6ZeD89\nrvfx9HJHdIzoeZCPiEgp1MyQGB0dHUyeNrk3KOQzbMWNhF5Bf0HoUgpZn0TGDcApcZnTSO9Omhqa\nYgah+WgN4Qf9g4S7k5PlJBPMqeEwciWgb4h1m4UefiMiAzJUrxiK7qKLLgpn9q+SnhDua9iKaYQm\noS7CQHfjciw3g9BDaAbhnoakowhXIKmAMIZwpXJUxnKpH/hUgnkGvcNhJOsT54+cM5KPHfIxOrd2\nAnDil/XwGxEpj5oJDH98/o8hJ2DkP2zFNODFuMzoPpZLDV0xm92SwUBo9tlECCwQAkA2qaRyssyk\nRLJ556SdzJw1M22oCxGRcqiZB/XMmzsvnM07+Q9bsYbeZyJs72O51NAVa+n98c+cvweh2WpHH+W8\nnFg/ORxGyvre+RqeQkQqpbZyDFMnh3b5YYTmms2EnMMaQu+e2fT2RkrlDnYRrpuckJg+jXDGn+ox\ntAt4CDiMkIjeixBELC43BniS8KCebYRQO4LsuYoB5Bg0PIWIFGrI3vmcj4EEhrlz57Ji5YrwAz+M\n8AM9g96E8FpCL6JNhG6rr9AbRA4g3IT2RCxsGKF5aCqhh9AaQo+mrXFa6vkHqYfojCcEnNVx+tuJ\n7cfEMWviMp2xzMxhNNYC74SR20cyasMoDU8hIgVTYABuueUWTv3Eqb1BIXXmn+2M/WTC0BaeZbk3\ngO8RurEO5AE+OwlDZTQntjOPMAjfvoR7IwBrMPbacy8OnHcgW7ZsYddbu9jatZURI0aw36T9+LP3\n/hmHveswDU8hIoOiXknAmWeeGX7kdxLa7ceTuxfSNsKZ+ip2H/piBaFH0UAf4PM6vT2MUr2PpsRt\nzQWegaP3PZoHHnigwD0UESmfmkg+73hrR2jzh9Azqb9hJ6YSrhgyl8vVg6m/B/iMIQSHlMwhLabC\nqjWr+t4JEZEqUROBYdSIUeGHHsJZeq5eQaleP2sJgSRzuVw9mPp7gM+bpPcwSvU+SmxvxrQZfe+E\niEiVqInAcMMNN4Ruok44c19NaOvfQRgB9R7grjh9LKEZaRdhLKJ/I4yBdFec9iKwBLgWuJmQd2ik\nd+iLpNTQF68BH0pMWxe3s6Z3e0uWLCnmLouIlExNJJ/NLIQ4pzcBDem9i1LjFXXHealcQGo6hDzF\nDnZ/6E434YqgM5Y1lZ6H5fB2nHcwvb2L9iH0fpoAbIQv/+2XufLKKwd+AEREClD3vZJmzJgRHtMJ\nvT/6RggKuR6gcyJweMb0trh+rnV25VVfmvdoZviw4QwfOZzZM2ezZMkSZs3KzFqLiJRO3fdKWr16\ndbgHAUJ+oZvQ9DOJ3OMePUJ6YJhFuOltYh/rrISjj1bPIhGpfUM/x5C6OhiW8TlXL6KphLxBptSj\nN3Otg3oWiUh9GPJXDDihnT/zc65eRKlxjTJ197MO6lkkIvVhyF8xTJ8+PTQhpZqRiO9Xkb0X0Srg\n3Vmm7+hnHdSzSETqw5BPPsflekNcKjg0kD5e0lp6u6mmHs+ZHMcI0nslZazz5S+rZ5GIDA113ysJ\n4JprruELX/hCuGegmzD6aRGtXLlSPYtEZMio+15JQBhV1YAjgfdnWeA+4F6o5iAoIlItKpZjMLMT\nzOyPZva8mX19MGXNmT1n9wf0JK0dTOkiIvWlIoHBzBoIA1x/BHgncKaZzSu0vNbW1vBmFTmTx2PG\njCm0+KrQ3t5e6SpUDR2LXjoWvXQsiqdSVwzvBVa4+2p3fwu4ETil0MKam5u5//77Q2L5BuBHhOaj\nH9Fz1/K2bduKUO3K0Ze+l45FLx2LXjoWxVOpwDCZ9AaedXFawebPn09nZ2cIDiuBe8O/Y0aMUW5B\nRGQAaiL5nNLU1KQgICIySBXprmpmRwKL3P2E+PlCwN39iozl9CsvIlKAIXcfg5kNA54DPkh4nM1D\nwJnu/mzZKyMiImkq0pTk7m+b2d8Aywh5jmsVFEREqkNV3/ksIiLlV5WD6BXz5rehyMxWmdkTZvaY\nmT0Up40zs2Vm9pyZ3W1me1a6nqVgZtea2UYzezIxLee+m9lFZrbCzJ41s+MrU+vSyHEsFprZOjN7\nNL5OSMyr5WMxxcx+Y2Z/MLOnzOzcOL3uvhtZjsXfxunF+264e1W9CMFqJWGYuxHA48C8SterzMfg\nRWBcxrQrgK/F918HLq90PUu07/OBw4An+9t34B3AY4Qm0Rnxe2OV3ocSH4uFwAVZlj2oxo/FJOCw\n+L6JkKOcV4/fjT6ORdG+G9V4xVDUm9+GKGP3q7lTgOvj++uBj5W1RmXi7suBzRmTc+37ycCN7r7L\n3VcBKwjfn5qQ41hA+H5kOoXaPhYb3P3x+H4r8CxhfOS6+27kOBap+8CK8t2oxsBQ9JvfhiAHfmVm\n/2Nmn4/TJrr7RghfDGDfitWu/PbNse+Z35WXqY/vyt+Y2eNmdk2i6aRujoWZzSBcST1I7r+Lujge\niWPx+zipKN+NagwMAse4+xHAAuBLZvY+QrBIqudeA/W871cBM939MGAD8E8Vrk9ZmVkT8HPgvHi2\nXLd/F1mORdG+G9UYGF4m/enLU+K0uuHu6+O/rwK/IFz2bTSziQBmNgl4pXI1LLtc+/4yPU/kBurg\nu+Lur3psOAauprdJoOaPhZkNJ/wQ/tDdb42T6/K7ke1YFPO7UY2B4X+A2WY23cxGAmcAt1W4TmVj\nZmPjmQBm1ggcDzxFOAafiYudDdyatYDaYKS3leba99uAM8xspJkdAMwm3CxZS9KORfzxSzkVeDq+\nr4dj8QPgGXdfnJhWr9+N3Y5FUb8blc6w58i6n0DItK8ALqx0fcq87wcQemI9RggIF8bpewP3xOOy\nDNir0nUt0f7/BOggPGR1DfBZYFyufQcuIvSyeBY4vtL1L8OxWAI8Gb8jvyC0sdfDsTgGeDvxt/Fo\n/J3I+XdRq8ejj2NRtO+GbnATEZE01diUJCIiFaTAICIiaRQYREQkjQKDiIikUWAQEZE0CgwiIpJG\ngUFqhplNNrNfxOHaV5jZP8c7RPNZ9zozO3UQ2z7bzF6Jwx0/nRjjKnO5d5vZvxS6HZFyUGCQWnIz\ncLO7zwXmAs3AdzIXio+WHZQcZdzoYYyr44DvmNk+meu4+yPufv5gty9SSgoMUhPM7APAm+6+BMDD\nnZtfBj5nZqPjGf2tZvZrwp2ymNn34oNLlpEYrdbMjjCz9ji67Z2JsXjujVchDwHn5qqLhzGuXgCm\nx4enLDGz5cASMzvWzG6P5TWa2Q/M7Mk4IubH4/QPm9nvzOxhM2szs7ElOGQiOVXkmc8iJfBO4JHk\nBHfvNLPVhLFhAA4HDnH3LfFHeI67H2Rm+wHPANfGpqfvAie7+2tmdjrhquOcWMYId+9zLHszm0kY\n2mRlnHQQYcTcnWZ2LL0jgH4D+JO7HxrX29PMxgP/D/igu79pZl8DvgJ8q6CjIlIABQapdcnB+H7l\n7lvi+/cDN0AYzdbMfhOnHwgcTHgeRuqBSR2JMtr62NYZZjafMLbRF939T6EIbnP3nVmW/xDQmvoQ\nA9aJhKePPRC3PwL47/x2VaQ4FBikVjwDnJacYGZ7EIYbXgm8G+jKoxwDnnb3Y3LM76uMG909WxNT\nPttNbn+Zu39yAOuIFJVyDFIT3P3XwBgz+xT0JIf/EbjO3bdnWeW3QKuZNcSmpOPi9OeAfczsyFjO\ncDN7R4mq/SvgS6kPZrYX4alkx5jZrDhtrJnNKdH2RbJSYJBa8nHgdDN7Hvgj8Cbwf7Mt6O63EK4k\n/gD8F/C7OP0twpXHFWaWGtb4qNRqRa7vpcDeZvaUmT0GtLj7JsLzBW4wsydivQ4s8nZF+qRht0VE\nJI2uGEREJI0Cg4iIpFFgEBGRNAoMIiKSRoFBRETSKDCIiEgaBQYREUmjwCAiImn+P/gxERWo43ir\nAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" } ], - "source": [] + "source": [ + "# create a list of prices\n", + "chipo.item_price = [float(value[1:-1]) for value in chipo.item_price] # strip the dollar sign and trailing space\n", + "\n", + "# then groupby the orders and sum\n", + "orders = chipo.groupby('order_id').sum()\n", + "\n", + "# creates the scatterplot\n", + "# plt.scatter(orders.quantity, orders.item_price, s = 50, c = 'green')\n", + "plt.scatter(x = orders.item_price, y = orders.quantity, s = 50, c = 'green')\n", + "\n", + "# Set the title and labels\n", + "plt.xlabel('Order Price')\n", + "plt.ylabel('Items ordered')\n", + "plt.title('Number of items ordered per order price')\n", + "plt.ylim(0)" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. BONUS: Create a question and a graph to answer your own question." + "### BONUS: Create a question and a graph to answer your own question." ] }, { @@ -291,9 +353,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 1 -} +} \ No newline at end of file diff --git a/07_Visualization/Online_Retail/Exercises.ipynb b/07_Visualization/Online_Retail/Exercises.ipynb index bf9c7d07e..e3289db38 100644 --- a/07_Visualization/Online_Retail/Exercises.ipynb +++ b/07_Visualization/Online_Retail/Exercises.ipynb @@ -65,7 +65,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Exclude negative Quatity entries" + "### Step 5. Exclude negative Quantity entries" ] }, { @@ -79,7 +79,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries" + "### Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries (except UK)" ] }, { diff --git a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb index ec4459db3..29a4de9fc 100644 --- a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb +++ b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb @@ -230,7 +230,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Exclude negative Quatity entries" + "### Step 5. Exclude negative Quantity entries" ] }, { @@ -361,7 +361,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries" + "### Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries (except UK)" ] }, { diff --git a/07_Visualization/Online_Retail/Solutions.ipynb b/07_Visualization/Online_Retail/Solutions.ipynb index e40cf75a8..1ec98b203 100644 --- a/07_Visualization/Online_Retail/Solutions.ipynb +++ b/07_Visualization/Online_Retail/Solutions.ipynb @@ -196,7 +196,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. Exclude negative Quatity entries" + "### Step 5. Exclude negative Quantity entries" ] }, { @@ -324,7 +324,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries" + "### Step 6. Create a scatterplot with the Quantity per UnitPrice by CustomerID for the top 3 Countries (except UK)" ] }, { From 6e00b1f2d77a6718ebb298612effb9993563dc43 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Fri, 20 Mar 2020 08:57:45 +0100 Subject: [PATCH 84/92] no changes --- .../Chipotle/Exercise_with_Solutions.ipynb | 8 +- .../Exercises_with_solutions_code.ipynb | 102 +++++++++++++----- 2 files changed, 81 insertions(+), 29 deletions(-) diff --git a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb index b0a260c1c..8081dae30 100644 --- a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb +++ b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb @@ -66,9 +66,7 @@ { "cell_type": "code", "execution_count": 134, - "metadata": { - "scrolled": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -336,9 +334,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.4" } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 4 } diff --git a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb index ec4459db3..f5557a341 100644 --- a/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb +++ b/07_Visualization/Online_Retail/Exercises_with_solutions_code.ipynb @@ -22,7 +22,10 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } }, "outputs": [], "source": [ @@ -57,7 +60,10 @@ "cell_type": "code", "execution_count": 2, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -191,7 +197,10 @@ "cell_type": "code", "execution_count": 3, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -237,7 +246,10 @@ "cell_type": "code", "execution_count": 4, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -368,7 +380,10 @@ "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -442,7 +457,10 @@ "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -547,7 +565,10 @@ "cell_type": "code", "execution_count": 7, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -589,7 +610,10 @@ "cell_type": "code", "execution_count": 8, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -800,7 +824,10 @@ "cell_type": "code", "execution_count": 9, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -846,7 +873,10 @@ "cell_type": "code", "execution_count": 10, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -983,7 +1013,10 @@ "cell_type": "code", "execution_count": 11, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1104,7 +1137,10 @@ "cell_type": "code", "execution_count": 12, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1156,7 +1192,10 @@ "cell_type": "code", "execution_count": 13, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1206,7 +1245,10 @@ "cell_type": "code", "execution_count": 14, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1271,7 +1313,10 @@ "cell_type": "code", "execution_count": 15, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1320,7 +1365,10 @@ "cell_type": "code", "execution_count": 16, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1356,7 +1404,10 @@ "cell_type": "code", "execution_count": 17, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { @@ -1401,7 +1452,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": true, + "jupyter": { + "outputs_hidden": true + } }, "outputs": [], "source": [] @@ -1410,23 +1464,23 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [conda root]", + "display_name": "Python 3", "language": "python", - "name": "conda-root-py" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.4" } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 4 } From b319b7e9fe963af5314e529f3ba7d1ab86fddc4c Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Sun, 29 Mar 2020 14:04:21 +0200 Subject: [PATCH 85/92] Create FUNDING.yml --- .github/FUNDING.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..ea86e46fa --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: ['paypal.me/guisamora'] From 349a658a956329b626fb25a4ca97ad0fbf4b9082 Mon Sep 17 00:00:00 2001 From: Max Alletsee Date: Thu, 2 Apr 2020 07:38:12 +0200 Subject: [PATCH 86/92] Name of dataset missing --- .../Pokemon/Exercises-with-solutions-and-code.ipynb | 2 +- 08_Creating_Series_and_DataFrames/Pokemon/Exercises.ipynb | 2 +- 08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/08_Creating_Series_and_DataFrames/Pokemon/Exercises-with-solutions-and-code.ipynb b/08_Creating_Series_and_DataFrames/Pokemon/Exercises-with-solutions-and-code.ipynb index 52382727c..3345139a1 100644 --- a/08_Creating_Series_and_DataFrames/Pokemon/Exercises-with-solutions-and-code.ipynb +++ b/08_Creating_Series_and_DataFrames/Pokemon/Exercises-with-solutions-and-code.ipynb @@ -58,7 +58,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Assign it to a variable called " + "### Step 3. Assign it to a variable called pokemon" ] }, { diff --git a/08_Creating_Series_and_DataFrames/Pokemon/Exercises.ipynb b/08_Creating_Series_and_DataFrames/Pokemon/Exercises.ipynb index 8a3751399..360204628 100644 --- a/08_Creating_Series_and_DataFrames/Pokemon/Exercises.ipynb +++ b/08_Creating_Series_and_DataFrames/Pokemon/Exercises.ipynb @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Assign it to a variable called " + "### Step 3. Assign it to a variable called pokemon" ] }, { diff --git a/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb b/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb index 3a0cebbf4..e1f9e70fe 100644 --- a/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb +++ b/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Assign it to a variable called " + "### Step 3. Assign it to a variable called pokemon" ] }, { From 4b999213b417742e0ab24bb7be17cf258d78d2d7 Mon Sep 17 00:00:00 2001 From: Max Alletsee Date: Thu, 2 Apr 2020 07:55:27 +0200 Subject: [PATCH 87/92] Solution file didn't show solution --- .../Pokemon/Solutions.ipynb | 236 +++++++++++++++++- 1 file changed, 226 insertions(+), 10 deletions(-) diff --git a/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb b/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb index e1f9e70fe..a8cc38601 100644 --- a/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb +++ b/08_Creating_Series_and_DataFrames/Pokemon/Solutions.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -54,11 +54,76 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
0011Chips and Fresh Tomato Salsa$2.39
1111Izze$3.39
2211Nantucket Nectar$3.39
3311Chips and Tomatillo-Green Chili Salsa$2.39
4422Chicken Bowl$16.98
5531Chicken Bowl$10.98
6631Side of Chips$1.69
7741Steak Burrito$11.75
8841Steak Soft Tacos$9.25
9951Steak Burrito
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
evolutionhpnamepokedextype
0Ivysaur45Bulbasauryesgrass
1Charmeleon39Charmandernofire
2Wartortle44Squirtleyeswater
3Metapod45Caterpienobug
\n", + "
" + ], + "text/plain": [ + " evolution hp name pokedex type\n", + "0 Ivysaur 45 Bulbasaur yes grass\n", + "1 Charmeleon 39 Charmander no fire\n", + "2 Wartortle 44 Squirtle yes water\n", + "3 Metapod 45 Caterpie no bug" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [] }, { @@ -70,11 +135,76 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "collapsed": false }, - "outputs": [], + "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", + "
nametypehpevolutionpokedex
0Bulbasaurgrass45Ivysauryes
1Charmanderfire39Charmeleonno
2Squirtlewater44Wartortleyes
3Caterpiebug45Metapodno
\n", + "
" + ], + "text/plain": [ + " name type hp evolution pokedex\n", + "0 Bulbasaur grass 45 Ivysaur yes\n", + "1 Charmander fire 39 Charmeleon no\n", + "2 Squirtle water 44 Wartortle yes\n", + "3 Caterpie bug 45 Metapod no" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [] }, { @@ -86,11 +216,81 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "collapsed": false }, - "outputs": [], + "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", + "
nametypehpevolutionpokedexplace
0Bulbasaurgrass45Ivysauryespark
1Charmanderfire39Charmeleonnostreet
2Squirtlewater44Wartortleyeslake
3Caterpiebug45Metapodnoforest
\n", + "
" + ], + "text/plain": [ + " name type hp evolution pokedex place\n", + "0 Bulbasaur grass 45 Ivysaur yes park\n", + "1 Charmander fire 39 Charmeleon no street\n", + "2 Squirtle water 44 Wartortle yes lake\n", + "3 Caterpie bug 45 Metapod no forest" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [] }, { @@ -102,11 +302,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "name object\n", + "type object\n", + "hp int64\n", + "evolution object\n", + "pokedex object\n", + "dtype: object" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [] }, { From 724394167acb085b353eaf3d48cc3a58305a64c7 Mon Sep 17 00:00:00 2001 From: Paul Harnagel Date: Wed, 5 Aug 2020 18:24:29 -0500 Subject: [PATCH 88/92] Added in video exercises These exercises already have hundreds of views. We hope they are helpful to the other learners. --- .../Exercises_with_solutions.ipynb | 66 ++++++++-------- .../Chipotle/Exercises_with_solutions.ipynb | 19 ++++- .../Euro12/Exercises_with_Solutions.ipynb | 77 ++++++++----------- .../Exercise_with_solutions.ipynb | 16 +++- .../Exercise_with_solutions.ipynb | 29 +++++-- .../Occupation/Exercises_with_solutions.ipynb | 57 +++++++------- .../Regiment/Exercises_solutions.ipynb | 69 ++++++++--------- .../Exercises_with_solutions.ipynb | 58 +++++++------- .../Exercises_with_solutions.ipynb | 61 ++++++++------- .../Exercises_with_solutions.ipynb | 77 ++++++++----------- .../Wind_Stats/Exercises_with_solutions.ipynb | 17 +++- .../Chipotle/Exercise_with_Solutions.ipynb | 20 ++++- .../Exercises_with_code_and_solutions.ipynb | 19 ++++- .../Exercises_code_with_solutions.ipynb | 27 +++++-- .../Exercises-with-solutions-code.ipynb | 73 ++++++++---------- .../Exercises_with_code_and_solutions.ipynb | 65 ++++++++-------- .../Exercises_with_solutions_and_code.ipynb | 69 ++++++++--------- 17 files changed, 438 insertions(+), 381 deletions(-) diff --git a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb index 71299d66b..213c4e859 100644 --- a/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb +++ b/01_Getting_&_Knowing_Your_Data/World Food Facts/Exercises_with_solutions.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex1 - Getting and knowing your Data" + "# Ex1 - Getting and knowing your Data\n", + "Check out [World Food Facts Exercises Video Tutorial](https://youtu.be/_jCSK4cMcVw) to watch a data scientist go through the exercises" ] }, { @@ -43,9 +44,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stderr", @@ -70,9 +69,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -303,9 +300,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -325,9 +320,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -354,9 +347,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -391,9 +382,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -429,9 +418,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -458,9 +445,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -487,9 +472,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -516,9 +499,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -539,21 +520,34 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [conda root]", + "display_name": "Python 3", "language": "python", - "name": "conda-root-py" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb index ef10f6672..773dd80df 100644 --- a/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Chipotle/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex1 - Filtering and Sorting Data" + "# Ex1 - Filtering and Sorting Data\n", + "\n", + "Check out [Chipotle Exercises Video Tutorial](https://youtu.be/ZZPiWZpdekA) to watch a data scientist go through the exercises" ] }, { @@ -2212,7 +2214,20 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb index 1fae2c983..29a9be096 100644 --- a/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb +++ b/02_Filtering_&_Sorting/Euro12/Exercises_with_Solutions.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex2 - Filtering and Sorting Data" + "# Ex2 - Filtering and Sorting Data\n", + "Check out [Euro 12 Exercises Video Tutorial](https://youtu.be/iqk5d48Qisg) to watch a data scientist go through the exercises" ] }, { @@ -19,9 +20,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -44,9 +43,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -583,9 +580,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -628,9 +623,7 @@ { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -657,9 +650,7 @@ { "cell_type": "code", "execution_count": 44, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -722,9 +713,7 @@ { "cell_type": "code", "execution_count": 82, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -883,7 +872,6 @@ "cell_type": "code", "execution_count": 56, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -1040,9 +1028,7 @@ { "cell_type": "code", "execution_count": 55, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1069,9 +1055,7 @@ { "cell_type": "code", "execution_count": 57, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1201,9 +1185,7 @@ { "cell_type": "code", "execution_count": 66, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1333,9 +1315,7 @@ { "cell_type": "code", "execution_count": 84, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1579,9 +1559,7 @@ { "cell_type": "code", "execution_count": 86, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2119,9 +2097,7 @@ { "cell_type": "code", "execution_count": 89, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -2177,23 +2153,36 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb index 9d98ce4c0..a5ebfde1e 100644 --- a/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb +++ b/02_Filtering_&_Sorting/Fictional Army/Exercise_with_solutions.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Fictional Army - Filtering and Sorting" + "# Fictional Army - Filtering and Sorting\n", + "Check out [Fictional Army Exercises Video Tutorial](https://youtu.be/42LGuRea7DE) to watch a data scientist go through the exercises" ] }, { @@ -1939,6 +1940,19 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb index bf2ed5124..841a5af59 100644 --- a/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb +++ b/03_Grouping/Alcohol_Consumption/Exercise_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Ex - GroupBy" + "# Ex - GroupBy\n", + "\n", + "Check out [Alcohol Consumption Exercises Video Tutorial](https://youtu.be/az67CMdmS6s) to watch a data scientist go through the exercises" ] }, { @@ -531,23 +533,36 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.16" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/03_Grouping/Occupation/Exercises_with_solutions.ipynb b/03_Grouping/Occupation/Exercises_with_solutions.ipynb index 9fb68d237..1f8e419c5 100644 --- a/03_Grouping/Occupation/Exercises_with_solutions.ipynb +++ b/03_Grouping/Occupation/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Occupation" + "# Occupation\n", + "\n", + "Check out [Occupation Exercises Video Tutorial](https://youtu.be/jL3EVCoYIJQ) to watch a data scientist go through the exercises" ] }, { @@ -21,9 +23,7 @@ { "cell_type": "code", "execution_count": 64, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -46,9 +46,7 @@ { "cell_type": "code", "execution_count": 65, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -142,9 +140,7 @@ { "cell_type": "code", "execution_count": 66, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -193,9 +189,7 @@ { "cell_type": "code", "execution_count": 150, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -257,9 +251,7 @@ { "cell_type": "code", "execution_count": 151, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -433,9 +425,7 @@ { "cell_type": "code", "execution_count": 152, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -504,9 +494,7 @@ { "cell_type": "code", "execution_count": 154, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -578,23 +566,36 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/03_Grouping/Regiment/Exercises_solutions.ipynb b/03_Grouping/Regiment/Exercises_solutions.ipynb index f71a8519d..00e825065 100644 --- a/03_Grouping/Regiment/Exercises_solutions.ipynb +++ b/03_Grouping/Regiment/Exercises_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Regiment" + "# Regiment\n", + "\n", + "Check out [Regiment Exercises Video Tutorial](https://youtu.be/MFZ3uakwAEk) to watch a data scientist go through the exercises" ] }, { @@ -21,9 +23,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -62,9 +62,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -218,9 +216,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -286,9 +282,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -436,9 +430,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -468,9 +460,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -504,9 +494,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -572,9 +560,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -663,9 +649,7 @@ { "cell_type": "code", "execution_count": 41, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -699,9 +683,7 @@ { "cell_type": "code", "execution_count": 50, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -740,23 +722,36 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb b/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb index 8e807b326..6687d0e8d 100644 --- a/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb +++ b/04_Apply/US_Crime_Rates/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# United States - Crime Rates - 1960 - 2014" + "# United States - Crime Rates - 1960 - 2014\n", + "\n", + "Check out [Crime Rates Exercises Video Tutorial](https://youtu.be/46lmk1JvcWA) to watch a data scientist go through the exercises" ] }, { @@ -23,9 +25,7 @@ { "cell_type": "code", "execution_count": 95, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -49,9 +49,7 @@ { "cell_type": "code", "execution_count": 265, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -192,9 +190,7 @@ { "cell_type": "code", "execution_count": 266, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -236,9 +232,7 @@ { "cell_type": "code", "execution_count": 267, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -280,9 +274,7 @@ { "cell_type": "code", "execution_count": 268, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -440,9 +432,7 @@ { "cell_type": "code", "execution_count": 269, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -588,7 +578,6 @@ "cell_type": "code", "execution_count": 270, "metadata": { - "collapsed": false, "scrolled": true }, "outputs": [ @@ -744,9 +733,7 @@ { "cell_type": "code", "execution_count": 276, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -778,23 +765,36 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb b/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb index 1f89f05b6..a4d5a6c7c 100644 --- a/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb +++ b/05_Merge/Fictitous Names/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Fictitious Names" + "# Fictitious Names\n", + "\n", + "Check out [Fictitious Names Exercises Video Tutorial](https://youtu.be/6DbgcHBiOqo) to watch a data scientist go through the exercises" ] }, { @@ -26,9 +28,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -74,9 +74,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -182,9 +180,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -298,9 +294,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -397,9 +391,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -501,9 +493,7 @@ { "cell_type": "code", "execution_count": 15, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -619,9 +609,7 @@ { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -684,9 +672,7 @@ { "cell_type": "code", "execution_count": 17, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -796,23 +782,36 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb index 56234726f..f83fecad6 100644 --- a/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb +++ b/06_Stats/US_Baby_Names/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# US - Baby Names" + "# US - Baby Names\n", + "\n", + "Check out [Baby Names Exercises Video Tutorial](https://youtu.be/Daf2QNAy-qA) to watch a data scientist go through the exercises" ] }, { @@ -23,9 +25,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -48,9 +48,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -86,9 +84,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -245,9 +241,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -343,9 +337,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -374,9 +366,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -467,9 +457,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -498,9 +486,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -531,9 +517,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -560,9 +544,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -916,9 +898,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -945,9 +925,7 @@ { "cell_type": "code", "execution_count": 12, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1022,23 +1000,36 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb index 4a7363065..7fab5059f 100644 --- a/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb +++ b/06_Stats/Wind_Stats/Exercises_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Wind Statistics" + "# Wind Statistics\n", + "\n", + "Check out [Wind Statistics Exercises Video Tutorial](https://youtu.be/2x3WsWiNV18) to watch a data scientist go through the exercises" ] }, { @@ -4147,6 +4149,19 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb index 12d9743f6..a020818f1 100644 --- a/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb +++ b/07_Visualization/Chipotle/Exercise_with_Solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Visualizing Chipotle's Data" + "# Visualizing Chipotle's Data\n", + "\n", + "Check out [Chipotle's Visualization Exercises Video Tutorial](https://youtu.be/BLD2mAB3kaw) to watch a data scientist go through the exercises" ] }, { @@ -67,7 +69,6 @@ "cell_type": "code", "execution_count": 134, "metadata": {}, - "outputs": [ { "data": { @@ -352,7 +353,20 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb b/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb index 3418dc4e7..b78b0f582 100644 --- a/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb +++ b/07_Visualization/Tips/Exercises_with_code_and_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Tips" + "# Tips\n", + "\n", + "Check out [Tips Visualization Exercises Video Tutorial](https://youtu.be/oiuKFigW4YM) to watch a data scientist go through the exercises" ] }, { @@ -547,7 +549,20 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.0" + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb b/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb index 2d438d85a..ee7a4619c 100644 --- a/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb +++ b/07_Visualization/Titanic_Desaster/Exercises_code_with_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Visualizing the Titanic Disaster" + "# Visualizing the Titanic Disaster\n", + "\n", + "Check out [Titanic Visualization Exercises Video Tutorial](https://youtu.be/CBT0buoF_Ns) to watch a data scientist go through the exercises" ] }, { @@ -550,21 +552,34 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.16" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, diff --git a/09_Time_Series/Apple_Stock/Exercises-with-solutions-code.ipynb b/09_Time_Series/Apple_Stock/Exercises-with-solutions-code.ipynb index 6191320fd..e2bbb9b0a 100644 --- a/09_Time_Series/Apple_Stock/Exercises-with-solutions-code.ipynb +++ b/09_Time_Series/Apple_Stock/Exercises-with-solutions-code.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Apple Stock" + "# Apple Stock\n", + "\n", + "Check out [Apple Stock Exercises Video Tutorial](https://youtu.be/wpXkR_IZcug) to watch a data scientist go through the exercises" ] }, { @@ -22,9 +24,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -53,9 +53,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -160,9 +158,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -196,9 +192,7 @@ { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -232,9 +226,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -342,9 +334,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -372,9 +362,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -480,9 +468,7 @@ { "cell_type": "code", "execution_count": 48, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -590,9 +576,7 @@ { "cell_type": "code", "execution_count": 65, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -619,9 +603,7 @@ { "cell_type": "code", "execution_count": 66, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -650,9 +632,7 @@ { "cell_type": "code", "execution_count": 81, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -694,23 +674,36 @@ "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python [default]", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/09_Time_Series/Investor_Flow_of_Funds_US/Exercises_with_code_and_solutions.ipynb b/09_Time_Series/Investor_Flow_of_Funds_US/Exercises_with_code_and_solutions.ipynb index a60c955f6..85b201bdb 100644 --- a/09_Time_Series/Investor_Flow_of_Funds_US/Exercises_with_code_and_solutions.ipynb +++ b/09_Time_Series/Investor_Flow_of_Funds_US/Exercises_with_code_and_solutions.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Investor - Flow of Funds - US" + "# Investor - Flow of Funds - US\n", + "\n", + "Check out [Investor Flow of Funds Exercises Video Tutorial](https://youtu.be/QG6WbOgC9QE) to watch a data scientist go through the exercises" ] }, { @@ -21,9 +23,7 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd" @@ -46,9 +46,7 @@ { "cell_type": "code", "execution_count": 31, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -171,9 +169,7 @@ { "cell_type": "code", "execution_count": 32, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "# weekly data" @@ -189,9 +185,7 @@ { "cell_type": "code", "execution_count": 33, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -320,9 +314,7 @@ { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -361,9 +353,7 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -391,9 +381,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -834,9 +822,7 @@ { "cell_type": "code", "execution_count": 37, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1069,9 +1055,7 @@ { "cell_type": "code", "execution_count": 38, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1196,23 +1180,36 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/10_Deleting/Iris/Exercises_with_solutions_and_code.ipynb b/10_Deleting/Iris/Exercises_with_solutions_and_code.ipynb index b6a1dca98..0414f7fd6 100644 --- a/10_Deleting/Iris/Exercises_with_solutions_and_code.ipynb +++ b/10_Deleting/Iris/Exercises_with_solutions_and_code.ipynb @@ -4,7 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Iris" + "# Iris\n", + "\n", + "Check out [Iris Exercises Video Tutorial](https://youtu.be/yAtzFLCWSZo) to watch a data scientist go through the exercises" ] }, { @@ -21,9 +23,7 @@ { "cell_type": "code", "execution_count": 13, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", @@ -47,9 +47,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -142,9 +140,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -241,9 +237,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -276,9 +270,7 @@ { "cell_type": "code", "execution_count": 36, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -504,9 +496,7 @@ { "cell_type": "code", "execution_count": 39, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1104,9 +1094,7 @@ { "cell_type": "code", "execution_count": 40, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1191,9 +1179,7 @@ { "cell_type": "code", "execution_count": 52, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1278,9 +1264,7 @@ { "cell_type": "code", "execution_count": 53, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1365,9 +1349,7 @@ { "cell_type": "code", "execution_count": 56, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -1461,23 +1443,36 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From 28835cc1a0a19fb44d12236d190841269cf42b2b Mon Sep 17 00:00:00 2001 From: Max Alletsee Date: Sun, 30 Aug 2020 11:52:40 +0200 Subject: [PATCH 89/92] Fixing Getting Financial Data Exercise Using AlphaVantage API instead of Yahoo Finance, which is not supported anymore by Pandas Datareader --- .../Getting_Financial_Data/Exercises.ipynb | 87 +- .../Exercises_with_solutions_and_code.ipynb | 1100 ++++++++++++++--- .../Getting_Financial_Data/Solutions.ipynb | 1018 ++++++++++++--- 3 files changed, 1805 insertions(+), 400 deletions(-) diff --git a/09_Time_Series/Getting_Financial_Data/Exercises.ipynb b/09_Time_Series/Getting_Financial_Data/Exercises.ipynb index aafa0b4b4..6cacdb858 100644 --- a/09_Time_Series/Getting_Financial_Data/Exercises.ipynb +++ b/09_Time_Series/Getting_Financial_Data/Exercises.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Getting Financial Data - Google Finance" + "# Getting Financial Data - Pandas Datareader" ] }, { @@ -22,9 +22,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -32,15 +30,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)" + "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -48,15 +44,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Select the Apple, Tesla, Twitter, IBM, LinkedIn stocks symbols and assign them to a variable called stocks" + "### Step 3. Get an API key for one of the APIs that are supported by Pandas Datareader, preferably for AlphaVantage.\n", + "\n", + "If you do not have an API key for any of the supported APIs, it is easiest to get one for [AlphaVantage](https://www.alphavantage.co/support/#api-key). (Note that the API key is shown directly after the signup. You do *not* receive it via e-mail.)\n", + "\n", + "(For a full list of the APIs that are supported by Pandas Datareader, [see here](https://pydata.github.io/pandas-datareader/readers/index.html). As the APIs are provided by third parties, this list may change.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Use Pandas Datarader to read the daily time series for the Apple stock (ticker symbol AAPL) between 01/01/2015 and today, assign it to df_apple and print it." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -64,15 +69,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 4. Read the data from google, assign to df and print it" + "### Step 5. Add a new column \"stock\" to the dataframe and add the ticker symbol" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -80,15 +83,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. What is the type of structure of df ?" + "### Step 6. Repeat the two previous steps for a few other stocks, always creating a new dataframe: Tesla, IBM and Microsoft. (Ticker symbols TSLA, IBM and MSFT.)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -96,16 +97,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print all the Items axis values\n", - "#### To learn more about the Panel structure go to [documentation](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel) " + "### Step 7. Combine the four separate dataFrames into one combined dataFrame df that holds the information for all four stocks" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -113,15 +111,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Good, now we know the data avaiable. Create a dataFrame called vol, with the Volume values." + "### Step 8. Shift the stock column into the index (making it a multi-level index consisting of the ticker symbol and the date)." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -129,17 +125,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. Aggregate the data of Volume to weekly\n", - "#### Hint: Be careful to not sum data from the same week of 2015 and other years." + "### Step 7. Create a dataFrame called vol, with the volume values." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -147,15 +139,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Find all the volume traded in the year of 2015" + "### Step 8. Aggregate the data of volume to weekly.\n", + "Hint: Be careful to not sum data from the same week of 2015 and other years." ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -163,38 +154,36 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### BONUS: Create your own question and answer it." + "### Step 9. Find all the volume traded in the year of 2015" ] }, { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.8" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb b/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb index 2cdbb206a..3d7ae709a 100644 --- a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb +++ b/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Getting Financial Data - Google Finance" + "# Getting Financial Data - Pandas Datareader" ] }, { @@ -21,17 +21,16 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ + "import numpy as np\n", "import pandas as pd\n", "\n", "# package to extract data from various Internet sources into a DataFrame\n", "# make sure you have it installed\n", - "from pandas_datareader import data, wb\n", + "import pandas_datareader.data as web\n", "\n", "# package for dates\n", "import datetime as dt" @@ -41,15 +40,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)" + "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)." ] }, { "cell_type": "code", - "execution_count": 75, - "metadata": { - "collapsed": false - }, + "execution_count": 2, + "metadata": {}, "outputs": [ { "data": { @@ -57,14 +54,13 @@ "datetime.datetime(2015, 1, 1, 0, 0)" ] }, - "execution_count": 75, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "start = dt.datetime(2015, 1, 1)\n", - "\n", "end = dt.datetime.today()\n", "\n", "start" @@ -74,131 +70,612 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Select the Apple, Tesla, Twitter, IBM, LinkedIn stocks symbols and assign them to a variable called stocks" + "### Step 3. Get an API key for one of the APIs that are supported by Pandas Datareader, preferably for AlphaVantage.\n", + "\n", + "If you do not have an API key for any of the supported APIs, it is easiest to get one for [AlphaVantage](https://www.alphavantage.co/support/#api-key). (Note that the API key is shown directly after the signup. You do *not* receive it via e-mail.)\n", + "\n", + "(For a full list of the APIs that are supported by Pandas Datareader, [see here](https://pydata.github.io/pandas-datareader/readers/index.html). As the APIs are provided by third parties, this list may change.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Use Pandas Datarader to read the daily time series for the Apple stock (ticker symbol AAPL) between 01/01/2015 and today, assign it to df_apple and print it." ] }, { "cell_type": "code", - "execution_count": 76, - "metadata": { - "collapsed": false - }, - "outputs": [], + "execution_count": 3, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolume
2015-01-02111.3900111.4400107.350109.3353204626
2015-01-05108.2900108.6500105.410106.2564285491
2015-01-06106.5400107.4300104.630106.2665797116
2015-01-07107.2000108.2000106.695107.7540105934
2015-01-08109.2300112.1500108.700111.8959364547
..................
2020-08-24514.7900515.1400495.745503.4386484442
2020-08-25498.7900500.7172492.210499.3052873947
2020-08-26504.7165507.9700500.330506.0940755567
2020-08-27508.5700509.9400495.330500.0438888096
2020-08-28504.0500505.7700498.310499.2346907479
\n", + "

1425 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " open high low close volume\n", + "2015-01-02 111.3900 111.4400 107.350 109.33 53204626\n", + "2015-01-05 108.2900 108.6500 105.410 106.25 64285491\n", + "2015-01-06 106.5400 107.4300 104.630 106.26 65797116\n", + "2015-01-07 107.2000 108.2000 106.695 107.75 40105934\n", + "2015-01-08 109.2300 112.1500 108.700 111.89 59364547\n", + "... ... ... ... ... ...\n", + "2020-08-24 514.7900 515.1400 495.745 503.43 86484442\n", + "2020-08-25 498.7900 500.7172 492.210 499.30 52873947\n", + "2020-08-26 504.7165 507.9700 500.330 506.09 40755567\n", + "2020-08-27 508.5700 509.9400 495.330 500.04 38888096\n", + "2020-08-28 504.0500 505.7700 498.310 499.23 46907479\n", + "\n", + "[1425 rows x 5 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "stocks = ['AAPL', 'TSLA', 'IBM', 'LNKD']" + "df_apple = web.DataReader(name=\"AAPL\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_apple" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 4. Read the data from google, assign to df and print it" + "### Step 5. Add a new column \"stock\" to the dataframe and add the ticker symbol" ] }, { "cell_type": "code", - "execution_count": 77, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolumestock
2015-01-02111.3900111.4400107.350109.3353204626AAPL
2015-01-05108.2900108.6500105.410106.2564285491AAPL
2015-01-06106.5400107.4300104.630106.2665797116AAPL
2015-01-07107.2000108.2000106.695107.7540105934AAPL
2015-01-08109.2300112.1500108.700111.8959364547AAPL
.....................
2020-08-24514.7900515.1400495.745503.4386484442AAPL
2020-08-25498.7900500.7172492.210499.3052873947AAPL
2020-08-26504.7165507.9700500.330506.0940755567AAPL
2020-08-27508.5700509.9400495.330500.0438888096AAPL
2020-08-28504.0500505.7700498.310499.2346907479AAPL
\n", + "

1425 rows × 6 columns

\n", + "
" + ], "text/plain": [ - "\n", - "Dimensions: 5 (items) x 399 (major_axis) x 4 (minor_axis)\n", - "Items axis: Open to Volume\n", - "Major_axis axis: 2015-01-02 00:00:00 to 2016-08-02 00:00:00\n", - "Minor_axis axis: AAPL to TSLA" + " open high low close volume stock\n", + "2015-01-02 111.3900 111.4400 107.350 109.33 53204626 AAPL\n", + "2015-01-05 108.2900 108.6500 105.410 106.25 64285491 AAPL\n", + "2015-01-06 106.5400 107.4300 104.630 106.26 65797116 AAPL\n", + "2015-01-07 107.2000 108.2000 106.695 107.75 40105934 AAPL\n", + "2015-01-08 109.2300 112.1500 108.700 111.89 59364547 AAPL\n", + "... ... ... ... ... ... ...\n", + "2020-08-24 514.7900 515.1400 495.745 503.43 86484442 AAPL\n", + "2020-08-25 498.7900 500.7172 492.210 499.30 52873947 AAPL\n", + "2020-08-26 504.7165 507.9700 500.330 506.09 40755567 AAPL\n", + "2020-08-27 508.5700 509.9400 495.330 500.04 38888096 AAPL\n", + "2020-08-28 504.0500 505.7700 498.310 499.23 46907479 AAPL\n", + "\n", + "[1425 rows x 6 columns]" ] }, - "execution_count": 77, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df = web.DataReader(stocks, 'google', start, end)\n", - "df" + "df_apple[\"stock\"] = \"AAPL\"\n", + "df_apple" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. What is the type of structure of df ?" + "### Step 6. Repeat the two previous steps for a few other stocks, always creating a new dataframe: Tesla, IBM and Microsoft. (Ticker symbols TSLA, IBM and MSFT.)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [], "source": [ - "# 'pandas.core.panel.Panel'" + "# Tesla\n", + "df_tesla = web.DataReader(name=\"TSLA\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_tesla[\"stock\"] = \"TSLA\"\n", + "\n", + "# IBM\n", + "df_ibm = web.DataReader(name=\"IBM\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_ibm[\"stock\"] = \"IBM\"\n", + "\n", + "# Microsoft\n", + "df_microsoft = web.DataReader(name=\"MSFT\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_microsoft[\"stock\"] = \"MSFT\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print all the Items axis values\n", - "#### To learn more about the Panel structure go to [documentation](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel) " + "### Step 7. Combine the four separate dataFrames into one combined dataFrame df that holds the information for all four stocks" ] }, { "cell_type": "code", - "execution_count": 120, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolumestock
2015-01-02111.39111.440107.350109.3353204626AAPL
2015-01-05108.29108.650105.410106.2564285491AAPL
2015-01-06106.54107.430104.630106.2665797116AAPL
2015-01-07107.20108.200106.695107.7540105934AAPL
2015-01-08109.23112.150108.700111.8959364547AAPL
.....................
2020-08-24214.79215.520212.430213.6925460147MSFT
2020-08-25213.10216.610213.100216.4723043696MSFT
2020-08-26217.88222.090217.360221.1539600828MSFT
2020-08-27222.89231.150219.400226.5857602195MSFT
2020-08-28228.18230.644226.580228.9126292896MSFT
\n", + "

5700 rows × 6 columns

\n", + "
" + ], "text/plain": [ - "Index([u'Open', u'High', u'Low', u'Close', u'Volume'], dtype='object')" + " open high low close volume stock\n", + "2015-01-02 111.39 111.440 107.350 109.33 53204626 AAPL\n", + "2015-01-05 108.29 108.650 105.410 106.25 64285491 AAPL\n", + "2015-01-06 106.54 107.430 104.630 106.26 65797116 AAPL\n", + "2015-01-07 107.20 108.200 106.695 107.75 40105934 AAPL\n", + "2015-01-08 109.23 112.150 108.700 111.89 59364547 AAPL\n", + "... ... ... ... ... ... ...\n", + "2020-08-24 214.79 215.520 212.430 213.69 25460147 MSFT\n", + "2020-08-25 213.10 216.610 213.100 216.47 23043696 MSFT\n", + "2020-08-26 217.88 222.090 217.360 221.15 39600828 MSFT\n", + "2020-08-27 222.89 231.150 219.400 226.58 57602195 MSFT\n", + "2020-08-28 228.18 230.644 226.580 228.91 26292896 MSFT\n", + "\n", + "[5700 rows x 6 columns]" ] }, - "execution_count": 120, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df.items" + "frames = [df_apple, df_tesla, df_ibm, df_microsoft]\n", + "\n", + "df = pd.concat(frames)\n", + "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Good, now we know the data avaiable. Create a dataFrame called vol, with the Volume values." + "### Step 8. Shift the stock column into the index (making it a multi-level index consisting of the ticker symbol and the date)." ] }, { "cell_type": "code", - "execution_count": 122, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "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", @@ -208,197 +685,311 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
AAPLIBMLNKDTSLAopenhighlowclosevolume
Datestock
2015-01-0253204626.05525466.01203743.04764443.0AAPL111.39111.440107.350109.3353204626
2015-01-0564285491.04880389.01400562.05368477.0AAPL108.29108.650105.410106.2564285491
2015-01-0665797116.06146712.02006546.06261936.0AAPL106.54107.430104.630106.2665797116
2015-01-0740105934.04701839.0985016.02968390.0AAPL107.20108.200106.695107.7540105934
2015-01-0859364547.04241113.01293955.03442509.0AAPL109.23112.150108.700111.8959364547
.....................
2020-08-24MSFT214.79215.520212.430213.6925460147
2020-08-25MSFT213.10216.610213.100216.4723043696
2020-08-26MSFT217.88222.090217.360221.1539600828
2020-08-27MSFT222.89231.150219.400226.5857602195
2020-08-28MSFT228.18230.644226.580228.9126292896
\n", + "

5700 rows × 5 columns

\n", "
" ], "text/plain": [ - " AAPL IBM LNKD TSLA\n", - "Date \n", - "2015-01-02 53204626.0 5525466.0 1203743.0 4764443.0\n", - "2015-01-05 64285491.0 4880389.0 1400562.0 5368477.0\n", - "2015-01-06 65797116.0 6146712.0 2006546.0 6261936.0\n", - "2015-01-07 40105934.0 4701839.0 985016.0 2968390.0\n", - "2015-01-08 59364547.0 4241113.0 1293955.0 3442509.0" + " open high low close volume\n", + " stock \n", + "2015-01-02 AAPL 111.39 111.440 107.350 109.33 53204626\n", + "2015-01-05 AAPL 108.29 108.650 105.410 106.25 64285491\n", + "2015-01-06 AAPL 106.54 107.430 104.630 106.26 65797116\n", + "2015-01-07 AAPL 107.20 108.200 106.695 107.75 40105934\n", + "2015-01-08 AAPL 109.23 112.150 108.700 111.89 59364547\n", + "... ... ... ... ... ...\n", + "2020-08-24 MSFT 214.79 215.520 212.430 213.69 25460147\n", + "2020-08-25 MSFT 213.10 216.610 213.100 216.47 23043696\n", + "2020-08-26 MSFT 217.88 222.090 217.360 221.15 39600828\n", + "2020-08-27 MSFT 222.89 231.150 219.400 226.58 57602195\n", + "2020-08-28 MSFT 228.18 230.644 226.580 228.91 26292896\n", + "\n", + "[5700 rows x 5 columns]" ] }, - "execution_count": 122, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "vol = df['Volume']\n", - "vol.head()" + "df.set_index(keys=\"stock\", append=True, inplace=True)\n", + "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. Aggregate the data of Volume to weekly\n", - "#### Hint: Be careful to not sum data from the same week of 2015 and other years." + "### Step 7. Create a dataFrame called vol, with the volume values." ] }, { "cell_type": "code", - "execution_count": 132, - "metadata": { - "collapsed": false, - "scrolled": true - }, + "execution_count": 8, + "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", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
AAPLIBMLNKDTSLAvolume
weekyearstock
1201553204626.05525466.01203743.04764443.02015-01-02AAPL53204626
2015-01-05AAPL64285491
2016343422014.025233098.06630485.020967926.02015-01-06AAPL65797116
22015283252615.024458400.07203125.022709607.02015-01-07AAPL40105934
2015-01-08AAPL59364547
2016302072797.029379214.09160521.022997290.0.........
32015304226647.023263206.07084168.030799137.02020-08-24MSFT25460147
2020-08-25MSFT23043696
2020-08-26MSFT39600828
2020-08-27MSFT57602195
2020-08-28MSFT26292896
\n", + "

5700 rows × 1 columns

\n", "
" ], "text/plain": [ - " AAPL IBM LNKD TSLA\n", - "week year \n", - "1 2015 53204626.0 5525466.0 1203743.0 4764443.0\n", - " 2016 343422014.0 25233098.0 6630485.0 20967926.0\n", - "2 2015 283252615.0 24458400.0 7203125.0 22709607.0\n", - " 2016 302072797.0 29379214.0 9160521.0 22997290.0\n", - "3 2015 304226647.0 23263206.0 7084168.0 30799137.0" + " volume\n", + " stock \n", + "2015-01-02 AAPL 53204626\n", + "2015-01-05 AAPL 64285491\n", + "2015-01-06 AAPL 65797116\n", + "2015-01-07 AAPL 40105934\n", + "2015-01-08 AAPL 59364547\n", + "... ...\n", + "2020-08-24 MSFT 25460147\n", + "2020-08-25 MSFT 23043696\n", + "2020-08-26 MSFT 39600828\n", + "2020-08-27 MSFT 57602195\n", + "2020-08-28 MSFT 26292896\n", + "\n", + "[5700 rows x 1 columns]" ] }, - "execution_count": 132, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "vol['week'] = vol.index.week\n", - "vol['year'] = vol.index.year\n", - "\n", - "week = vol.groupby(['week','year']).sum()\n", - "week.head()" + "vol = df['volume']\n", + "vol = pd.DataFrame(vol)\n", + "vol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Find all the volume traded in the year of 2015" + "### Step 8. Aggregate the data of volume to weekly.\n", + "Hint: Be careful to not sum data from the same week of 2015 and other years." ] }, { "cell_type": "code", - "execution_count": 131, - "metadata": { - "collapsed": false - }, + "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", @@ -407,79 +998,224 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
stockAAPLIBMLNKDMSFTTSLA
yearweek
20151.301994e+101.100959e+09440376163.01.085839e+0920151532046265525341279138524764443
22828681872444036015859662422622034
33042266472327205615708813630799137
41987370413123079713735263216215501
54658426843292730743778677815720217
20166.081474e+096.585250e+08453233878.07.540962e+08..................
2020312118986092001057814937242261152261
322508525551770169721759895037091084
332354744731863465914175209171049854
342084647581590897813225802190804281
352659095311695979417199976288736115
\n", + "

296 rows × 4 columns

\n", "
" ], "text/plain": [ - " AAPL IBM LNKD TSLA\n", - "year \n", - "2015 1.301994e+10 1.100959e+09 440376163.0 1.085839e+09\n", - "2016 6.081474e+09 6.585250e+08 453233878.0 7.540962e+08" + "stock AAPL IBM MSFT TSLA\n", + "year week \n", + "2015 1 53204626 5525341 27913852 4764443\n", + " 2 282868187 24440360 158596624 22622034\n", + " 3 304226647 23272056 157088136 30799137\n", + " 4 198737041 31230797 137352632 16215501\n", + " 5 465842684 32927307 437786778 15720217\n", + "... ... ... ... ...\n", + "2020 31 211898609 20010578 149372422 61152261\n", + " 32 250852555 17701697 217598950 37091084\n", + " 33 235474473 18634659 141752091 71049854\n", + " 34 208464758 15908978 132258021 90804281\n", + " 35 265909531 16959794 171999762 88736115\n", + "\n", + "[296 rows x 4 columns]" ] }, - "execution_count": 131, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "del vol['week']\n", - "vol['year'] = vol.index.year\n", + "date = vol.index.get_level_values(0)\n", + "date = pd.DatetimeIndex(date) # ensure that it's a datetimeindex, instead of a regular index\n", + "\n", + "vol['week'] = date.isocalendar().week.values\n", + "# .values is necessary to obtain only the week *values*\n", + "# otherwise pandas interprets it as a part of an index; this would be a problem as the same week appears multiple times\n", + "# (same week number in different years, same week for different stocks)\n", + "\n", + "vol['year'] = date.year\n", "\n", - "year = vol.groupby(['year']).sum()\n", - "year" + "pd.pivot_table(vol, values='volume', index=['year', 'week'],\n", + " columns=['stock'], aggfunc=np.sum)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### BONUS: Create your own question and answer it." + "### Step 9. Find all the volume traded in the year of 2015" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] + "execution_count": 10, + "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", + "
stockAAPLIBMMSFTTSLA
year
201513064316775110554552190575823111086708380
\n", + "
" + ], + "text/plain": [ + "stock AAPL IBM MSFT TSLA\n", + "year \n", + "2015 13064316775 1105545521 9057582311 1086708380" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vol_2015 = vol[vol['year'] == 2015]\n", + "\n", + "pd.pivot_table(vol_2015, values='volume', index=['year'],\n", + " columns=['stock'], aggfunc=np.sum)" + ] } ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.8" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } diff --git a/09_Time_Series/Getting_Financial_Data/Solutions.ipynb b/09_Time_Series/Getting_Financial_Data/Solutions.ipynb index cad558f8d..ce9909614 100644 --- a/09_Time_Series/Getting_Financial_Data/Solutions.ipynb +++ b/09_Time_Series/Getting_Financial_Data/Solutions.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Getting Financial Data - Google Finance" + "# Getting Financial Data - Pandas Datareader" ] }, { @@ -21,17 +21,16 @@ }, { "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, + "execution_count": 1, + "metadata": {}, "outputs": [], "source": [ + "import numpy as np\n", "import pandas as pd\n", "\n", "# package to extract data from various Internet sources into a DataFrame\n", "# make sure you have it installed\n", - "from pandas_datareader import data, wb\n", + "import pandas_datareader.data as web\n", "\n", "# package for dates\n", "import datetime as dt" @@ -41,15 +40,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)" + "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)." ] }, { "cell_type": "code", - "execution_count": 75, - "metadata": { - "collapsed": false - }, + "execution_count": 2, + "metadata": {}, "outputs": [ { "data": { @@ -57,7 +54,7 @@ "datetime.datetime(2015, 1, 1, 0, 0)" ] }, - "execution_count": 75, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -68,23 +65,165 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 3. Select the Apple, Tesla, Twitter, IBM, LinkedIn stocks symbols and assign them to a variable called stocks" + "### Step 3. Get an API key for one of the APIs that are supported by Pandas Datareader, preferably for AlphaVantage.\n", + "\n", + "If you do not have an API key for any of the supported APIs, it is easiest to get one for [AlphaVantage](https://www.alphavantage.co/support/#api-key). (Note that the API key is shown directly after the signup. You do *not* receive it via e-mail.)\n", + "\n", + "(For a full list of the APIs that are supported by Pandas Datareader, [see here](https://pydata.github.io/pandas-datareader/readers/index.html). As the APIs are provided by third parties, this list may change.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Use Pandas Datarader to read the daily time series for the Apple stock (ticker symbol AAPL) between 01/01/2015 and today, assign it to df_apple and print it." ] }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, + "execution_count": 3, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolume
2015-01-02111.3900111.4400107.350109.3353204626
2015-01-05108.2900108.6500105.410106.2564285491
2015-01-06106.5400107.4300104.630106.2665797116
2015-01-07107.2000108.2000106.695107.7540105934
2015-01-08109.2300112.1500108.700111.8959364547
..................
2020-08-24514.7900515.1400495.745503.4386484442
2020-08-25498.7900500.7172492.210499.3052873947
2020-08-26504.7165507.9700500.330506.0940755567
2020-08-27508.5700509.9400495.330500.0438888096
2020-08-28504.0500505.7700498.310499.2346907479
\n", + "

1425 rows × 5 columns

\n", + "
" + ], "text/plain": [ - "['AAPL', 'TSLA', 'IBM', 'LNKD']" + " open high low close volume\n", + "2015-01-02 111.3900 111.4400 107.350 109.33 53204626\n", + "2015-01-05 108.2900 108.6500 105.410 106.25 64285491\n", + "2015-01-06 106.5400 107.4300 104.630 106.26 65797116\n", + "2015-01-07 107.2000 108.2000 106.695 107.75 40105934\n", + "2015-01-08 109.2300 112.1500 108.700 111.89 59364547\n", + "... ... ... ... ... ...\n", + "2020-08-24 514.7900 515.1400 495.745 503.43 86484442\n", + "2020-08-25 498.7900 500.7172 492.210 499.30 52873947\n", + "2020-08-26 504.7165 507.9700 500.330 506.09 40755567\n", + "2020-08-27 508.5700 509.9400 495.330 500.04 38888096\n", + "2020-08-28 504.0500 505.7700 498.310 499.23 46907479\n", + "\n", + "[1425 rows x 5 columns]" ] }, - "execution_count": 1, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -95,27 +234,166 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 4. Read the data from google, assign to df and print it" + "### Step 5. Add a new column \"stock\" to the dataframe and add the ticker symbol" ] }, { "cell_type": "code", - "execution_count": 77, - "metadata": { - "collapsed": false - }, + "execution_count": 4, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolumestock
2015-01-02111.3900111.4400107.350109.3353204626AAPL
2015-01-05108.2900108.6500105.410106.2564285491AAPL
2015-01-06106.5400107.4300104.630106.2665797116AAPL
2015-01-07107.2000108.2000106.695107.7540105934AAPL
2015-01-08109.2300112.1500108.700111.8959364547AAPL
.....................
2020-08-24514.7900515.1400495.745503.4386484442AAPL
2020-08-25498.7900500.7172492.210499.3052873947AAPL
2020-08-26504.7165507.9700500.330506.0940755567AAPL
2020-08-27508.5700509.9400495.330500.0438888096AAPL
2020-08-28504.0500505.7700498.310499.2346907479AAPL
\n", + "

1425 rows × 6 columns

\n", + "
" + ], "text/plain": [ - "\n", - "Dimensions: 5 (items) x 399 (major_axis) x 4 (minor_axis)\n", - "Items axis: Open to Volume\n", - "Major_axis axis: 2015-01-02 00:00:00 to 2016-08-02 00:00:00\n", - "Minor_axis axis: AAPL to TSLA" + " open high low close volume stock\n", + "2015-01-02 111.3900 111.4400 107.350 109.33 53204626 AAPL\n", + "2015-01-05 108.2900 108.6500 105.410 106.25 64285491 AAPL\n", + "2015-01-06 106.5400 107.4300 104.630 106.26 65797116 AAPL\n", + "2015-01-07 107.2000 108.2000 106.695 107.75 40105934 AAPL\n", + "2015-01-08 109.2300 112.1500 108.700 111.89 59364547 AAPL\n", + "... ... ... ... ... ... ...\n", + "2020-08-24 514.7900 515.1400 495.745 503.43 86484442 AAPL\n", + "2020-08-25 498.7900 500.7172 492.210 499.30 52873947 AAPL\n", + "2020-08-26 504.7165 507.9700 500.330 506.09 40755567 AAPL\n", + "2020-08-27 508.5700 509.9400 495.330 500.04 38888096 AAPL\n", + "2020-08-28 504.0500 505.7700 498.310 499.23 46907479 AAPL\n", + "\n", + "[1425 rows x 6 columns]" ] }, - "execution_count": 77, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -126,42 +404,180 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 5. What is the type of structure of df ?" + "### Step 6. Repeat the two previous steps for a few other stocks, always creating a new dataframe: Tesla, IBM and Microsoft. (Ticker symbols TSLA, IBM and MSFT.)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, + "execution_count": 5, + "metadata": {}, "outputs": [], - "source": [ - "# 'pandas.core.panel.Panel'" - ] + "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 6. Print all the Items axis values\n", - "#### To learn more about the Panel structure go to [documentation](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel) " + "### Step 7. Combine the four separate dataFrames into one combined dataFrame df that holds the information for all four stocks" ] }, { "cell_type": "code", - "execution_count": 120, - "metadata": { - "collapsed": false - }, + "execution_count": 6, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolumestock
2015-01-02111.39111.440107.350109.3353204626AAPL
2015-01-05108.29108.650105.410106.2564285491AAPL
2015-01-06106.54107.430104.630106.2665797116AAPL
2015-01-07107.20108.200106.695107.7540105934AAPL
2015-01-08109.23112.150108.700111.8959364547AAPL
.....................
2020-08-24214.79215.520212.430213.6925460147MSFT
2020-08-25213.10216.610213.100216.4723043696MSFT
2020-08-26217.88222.090217.360221.1539600828MSFT
2020-08-27222.89231.150219.400226.5857602195MSFT
2020-08-28228.18230.644226.580228.9126292896MSFT
\n", + "

5700 rows × 6 columns

\n", + "
" + ], "text/plain": [ - "Index([u'Open', u'High', u'Low', u'Close', u'Volume'], dtype='object')" + " open high low close volume stock\n", + "2015-01-02 111.39 111.440 107.350 109.33 53204626 AAPL\n", + "2015-01-05 108.29 108.650 105.410 106.25 64285491 AAPL\n", + "2015-01-06 106.54 107.430 104.630 106.26 65797116 AAPL\n", + "2015-01-07 107.20 108.200 106.695 107.75 40105934 AAPL\n", + "2015-01-08 109.23 112.150 108.700 111.89 59364547 AAPL\n", + "... ... ... ... ... ... ...\n", + "2020-08-24 214.79 215.520 212.430 213.69 25460147 MSFT\n", + "2020-08-25 213.10 216.610 213.100 216.47 23043696 MSFT\n", + "2020-08-26 217.88 222.090 217.360 221.15 39600828 MSFT\n", + "2020-08-27 222.89 231.150 219.400 226.58 57602195 MSFT\n", + "2020-08-28 228.18 230.644 226.580 228.91 26292896 MSFT\n", + "\n", + "[5700 rows x 6 columns]" ] }, - "execution_count": 120, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -172,31 +588,46 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 7. Good, now we know the data avaiable. Create a dataFrame called vol, with the Volume values." + "### Step 8. Shift the stock column into the index (making it a multi-level index consisting of the ticker symbol and the date)." ] }, { "cell_type": "code", - "execution_count": 122, - "metadata": { - "collapsed": false - }, + "execution_count": 7, + "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", @@ -206,54 +637,127 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
AAPLIBMLNKDTSLAopenhighlowclosevolume
Datestock
2015-01-0253204626.05525466.01203743.04764443.0AAPL111.39111.440107.350109.3353204626
2015-01-0564285491.04880389.01400562.05368477.0AAPL108.29108.650105.410106.2564285491
2015-01-0665797116.06146712.02006546.06261936.0AAPL106.54107.430104.630106.2665797116
2015-01-0740105934.04701839.0985016.02968390.0AAPL107.20108.200106.695107.7540105934
2015-01-0859364547.04241113.01293955.03442509.0AAPL109.23112.150108.700111.8959364547
.....................
2020-08-24MSFT214.79215.520212.430213.6925460147
2020-08-25MSFT213.10216.610213.100216.4723043696
2020-08-26MSFT217.88222.090217.360221.1539600828
2020-08-27MSFT222.89231.150219.400226.5857602195
2020-08-28MSFT228.18230.644226.580228.9126292896
\n", + "

5700 rows × 5 columns

\n", "
" ], "text/plain": [ - " AAPL IBM LNKD TSLA\n", - "Date \n", - "2015-01-02 53204626.0 5525466.0 1203743.0 4764443.0\n", - "2015-01-05 64285491.0 4880389.0 1400562.0 5368477.0\n", - "2015-01-06 65797116.0 6146712.0 2006546.0 6261936.0\n", - "2015-01-07 40105934.0 4701839.0 985016.0 2968390.0\n", - "2015-01-08 59364547.0 4241113.0 1293955.0 3442509.0" + " open high low close volume\n", + " stock \n", + "2015-01-02 AAPL 111.39 111.440 107.350 109.33 53204626\n", + "2015-01-05 AAPL 108.29 108.650 105.410 106.25 64285491\n", + "2015-01-06 AAPL 106.54 107.430 104.630 106.26 65797116\n", + "2015-01-07 AAPL 107.20 108.200 106.695 107.75 40105934\n", + "2015-01-08 AAPL 109.23 112.150 108.700 111.89 59364547\n", + "... ... ... ... ... ...\n", + "2020-08-24 MSFT 214.79 215.520 212.430 213.69 25460147\n", + "2020-08-25 MSFT 213.10 216.610 213.100 216.47 23043696\n", + "2020-08-26 MSFT 217.88 222.090 217.360 221.15 39600828\n", + "2020-08-27 MSFT 222.89 231.150 219.400 226.58 57602195\n", + "2020-08-28 MSFT 228.18 230.644 226.580 228.91 26292896\n", + "\n", + "[5700 rows x 5 columns]" ] }, - "execution_count": 122, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -264,95 +768,124 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 8. Aggregate the data of Volume to weekly\n", - "#### Hint: Be careful to not sum data from the same week of 2015 and other years." + "### Step 7. Create a dataFrame called vol, with the volume values." ] }, { "cell_type": "code", - "execution_count": 132, - "metadata": { - "collapsed": false, - "scrolled": true - }, + "execution_count": 8, + "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", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
AAPLIBMLNKDTSLAvolume
weekyearstock
1201553204626.05525466.01203743.04764443.02015-01-02AAPL53204626
2016343422014.025233098.06630485.020967926.02015-01-05AAPL64285491
22015283252615.024458400.07203125.022709607.02015-01-06AAPL65797116
2016302072797.029379214.09160521.022997290.02015-01-07AAPL40105934
32015304226647.023263206.07084168.030799137.02015-01-08AAPL59364547
.........
2020-08-24MSFT25460147
2020-08-25MSFT23043696
2020-08-26MSFT39600828
2020-08-27MSFT57602195
2020-08-28MSFT26292896
\n", + "

5700 rows × 1 columns

\n", "
" ], "text/plain": [ - " AAPL IBM LNKD TSLA\n", - "week year \n", - "1 2015 53204626.0 5525466.0 1203743.0 4764443.0\n", - " 2016 343422014.0 25233098.0 6630485.0 20967926.0\n", - "2 2015 283252615.0 24458400.0 7203125.0 22709607.0\n", - " 2016 302072797.0 29379214.0 9160521.0 22997290.0\n", - "3 2015 304226647.0 23263206.0 7084168.0 30799137.0" + " volume\n", + " stock \n", + "2015-01-02 AAPL 53204626\n", + "2015-01-05 AAPL 64285491\n", + "2015-01-06 AAPL 65797116\n", + "2015-01-07 AAPL 40105934\n", + "2015-01-08 AAPL 59364547\n", + "... ...\n", + "2020-08-24 MSFT 25460147\n", + "2020-08-25 MSFT 23043696\n", + "2020-08-26 MSFT 39600828\n", + "2020-08-27 MSFT 57602195\n", + "2020-08-28 MSFT 26292896\n", + "\n", + "[5700 rows x 1 columns]" ] }, - "execution_count": 132, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -363,31 +896,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Step 9. Find all the volume traded in the year of 2015" + "### Step 8. Aggregate the data of volume to weekly.\n", + "Hint: Be careful to not sum data from the same week of 2015 and other years." ] }, { "cell_type": "code", - "execution_count": 131, - "metadata": { - "collapsed": false - }, + "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", @@ -396,31 +943,109 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
stockAAPLIBMLNKDMSFTTSLA
yearweek
20151.301994e+101.100959e+09440376163.01.085839e+0920151532046265525341279138524764443
22828681872444036015859662422622034
33042266472327205615708813630799137
41987370413123079713735263216215501
54658426843292730743778677815720217
..................
2020312118986092001057814937242261152261
322508525551770169721759895037091084
332354744731863465914175209171049854
20166.081474e+096.585250e+08453233878.07.540962e+08342084647581590897813225802190804281
352659095311695979417199976288736115
\n", + "

296 rows × 4 columns

\n", "
" ], "text/plain": [ - " AAPL IBM LNKD TSLA\n", - "year \n", - "2015 1.301994e+10 1.100959e+09 440376163.0 1.085839e+09\n", - "2016 6.081474e+09 6.585250e+08 453233878.0 7.540962e+08" + "stock AAPL IBM MSFT TSLA\n", + "year week \n", + "2015 1 53204626 5525341 27913852 4764443\n", + " 2 282868187 24440360 158596624 22622034\n", + " 3 304226647 23272056 157088136 30799137\n", + " 4 198737041 31230797 137352632 16215501\n", + " 5 465842684 32927307 437786778 15720217\n", + "... ... ... ... ...\n", + "2020 31 211898609 20010578 149372422 61152261\n", + " 32 250852555 17701697 217598950 37091084\n", + " 33 235474473 18634659 141752091 71049854\n", + " 34 208464758 15908978 132258021 90804281\n", + " 35 265909531 16959794 171999762 88736115\n", + "\n", + "[296 rows x 4 columns]" ] }, - "execution_count": 131, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -431,38 +1056,93 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### BONUS: Create your own question and answer it." + "### Step 9. Find all the volume traded in the year of 2015" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], + "execution_count": 10, + "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", + "
stockAAPLIBMMSFTTSLA
year
201513064316775110554552190575823111086708380
\n", + "
" + ], + "text/plain": [ + "stock AAPL IBM MSFT TSLA\n", + "year \n", + "2015 13064316775 1105545521 9057582311 1086708380" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" + "pygments_lexer": "ipython3", + "version": "3.6.8" } }, "nbformat": 4, - "nbformat_minor": 0 -} + "nbformat_minor": 1 +} \ No newline at end of file From 47b24ab7abb76d856d5a734bbc22c8fec0bf3612 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Fri, 18 Sep 2020 20:05:20 +0200 Subject: [PATCH 90/92] rename file --- .../Getting_Financial_Data/Exercises.ipynb | 2 +- .../Exercises_with_solutions_and_code.ipynb | 1221 ----------------- .../Getting_Financial_Data/Solutions.ipynb | 4 +- 3 files changed, 3 insertions(+), 1224 deletions(-) delete mode 100644 09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb diff --git a/09_Time_Series/Getting_Financial_Data/Exercises.ipynb b/09_Time_Series/Getting_Financial_Data/Exercises.ipynb index 6cacdb858..2cf792c43 100644 --- a/09_Time_Series/Getting_Financial_Data/Exercises.ipynb +++ b/09_Time_Series/Getting_Financial_Data/Exercises.ipynb @@ -181,7 +181,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.7.4" } }, "nbformat": 4, diff --git a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb b/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb deleted file mode 100644 index 3d7ae709a..000000000 --- a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions_and_code.ipynb +++ /dev/null @@ -1,1221 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Getting Financial Data - Pandas Datareader" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Introduction:\n", - "\n", - "This time you will get data from a website.\n", - "\n", - "\n", - "### Step 1. Import the necessary libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "# package to extract data from various Internet sources into a DataFrame\n", - "# make sure you have it installed\n", - "import pandas_datareader.data as web\n", - "\n", - "# package for dates\n", - "import datetime as dt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "datetime.datetime(2015, 1, 1, 0, 0)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start = dt.datetime(2015, 1, 1)\n", - "end = dt.datetime.today()\n", - "\n", - "start" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 3. Get an API key for one of the APIs that are supported by Pandas Datareader, preferably for AlphaVantage.\n", - "\n", - "If you do not have an API key for any of the supported APIs, it is easiest to get one for [AlphaVantage](https://www.alphavantage.co/support/#api-key). (Note that the API key is shown directly after the signup. You do *not* receive it via e-mail.)\n", - "\n", - "(For a full list of the APIs that are supported by Pandas Datareader, [see here](https://pydata.github.io/pandas-datareader/readers/index.html). As the APIs are provided by third parties, this list may change.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 4. Use Pandas Datarader to read the daily time series for the Apple stock (ticker symbol AAPL) between 01/01/2015 and today, assign it to df_apple and print it." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolume
2015-01-02111.3900111.4400107.350109.3353204626
2015-01-05108.2900108.6500105.410106.2564285491
2015-01-06106.5400107.4300104.630106.2665797116
2015-01-07107.2000108.2000106.695107.7540105934
2015-01-08109.2300112.1500108.700111.8959364547
..................
2020-08-24514.7900515.1400495.745503.4386484442
2020-08-25498.7900500.7172492.210499.3052873947
2020-08-26504.7165507.9700500.330506.0940755567
2020-08-27508.5700509.9400495.330500.0438888096
2020-08-28504.0500505.7700498.310499.2346907479
\n", - "

1425 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume\n", - "2015-01-02 111.3900 111.4400 107.350 109.33 53204626\n", - "2015-01-05 108.2900 108.6500 105.410 106.25 64285491\n", - "2015-01-06 106.5400 107.4300 104.630 106.26 65797116\n", - "2015-01-07 107.2000 108.2000 106.695 107.75 40105934\n", - "2015-01-08 109.2300 112.1500 108.700 111.89 59364547\n", - "... ... ... ... ... ...\n", - "2020-08-24 514.7900 515.1400 495.745 503.43 86484442\n", - "2020-08-25 498.7900 500.7172 492.210 499.30 52873947\n", - "2020-08-26 504.7165 507.9700 500.330 506.09 40755567\n", - "2020-08-27 508.5700 509.9400 495.330 500.04 38888096\n", - "2020-08-28 504.0500 505.7700 498.310 499.23 46907479\n", - "\n", - "[1425 rows x 5 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_apple = web.DataReader(name=\"AAPL\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_apple" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 5. Add a new column \"stock\" to the dataframe and add the ticker symbol" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolumestock
2015-01-02111.3900111.4400107.350109.3353204626AAPL
2015-01-05108.2900108.6500105.410106.2564285491AAPL
2015-01-06106.5400107.4300104.630106.2665797116AAPL
2015-01-07107.2000108.2000106.695107.7540105934AAPL
2015-01-08109.2300112.1500108.700111.8959364547AAPL
.....................
2020-08-24514.7900515.1400495.745503.4386484442AAPL
2020-08-25498.7900500.7172492.210499.3052873947AAPL
2020-08-26504.7165507.9700500.330506.0940755567AAPL
2020-08-27508.5700509.9400495.330500.0438888096AAPL
2020-08-28504.0500505.7700498.310499.2346907479AAPL
\n", - "

1425 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume stock\n", - "2015-01-02 111.3900 111.4400 107.350 109.33 53204626 AAPL\n", - "2015-01-05 108.2900 108.6500 105.410 106.25 64285491 AAPL\n", - "2015-01-06 106.5400 107.4300 104.630 106.26 65797116 AAPL\n", - "2015-01-07 107.2000 108.2000 106.695 107.75 40105934 AAPL\n", - "2015-01-08 109.2300 112.1500 108.700 111.89 59364547 AAPL\n", - "... ... ... ... ... ... ...\n", - "2020-08-24 514.7900 515.1400 495.745 503.43 86484442 AAPL\n", - "2020-08-25 498.7900 500.7172 492.210 499.30 52873947 AAPL\n", - "2020-08-26 504.7165 507.9700 500.330 506.09 40755567 AAPL\n", - "2020-08-27 508.5700 509.9400 495.330 500.04 38888096 AAPL\n", - "2020-08-28 504.0500 505.7700 498.310 499.23 46907479 AAPL\n", - "\n", - "[1425 rows x 6 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_apple[\"stock\"] = \"AAPL\"\n", - "df_apple" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 6. Repeat the two previous steps for a few other stocks, always creating a new dataframe: Tesla, IBM and Microsoft. (Ticker symbols TSLA, IBM and MSFT.)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Tesla\n", - "df_tesla = web.DataReader(name=\"TSLA\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_tesla[\"stock\"] = \"TSLA\"\n", - "\n", - "# IBM\n", - "df_ibm = web.DataReader(name=\"IBM\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_ibm[\"stock\"] = \"IBM\"\n", - "\n", - "# Microsoft\n", - "df_microsoft = web.DataReader(name=\"MSFT\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_microsoft[\"stock\"] = \"MSFT\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 7. Combine the four separate dataFrames into one combined dataFrame df that holds the information for all four stocks" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolumestock
2015-01-02111.39111.440107.350109.3353204626AAPL
2015-01-05108.29108.650105.410106.2564285491AAPL
2015-01-06106.54107.430104.630106.2665797116AAPL
2015-01-07107.20108.200106.695107.7540105934AAPL
2015-01-08109.23112.150108.700111.8959364547AAPL
.....................
2020-08-24214.79215.520212.430213.6925460147MSFT
2020-08-25213.10216.610213.100216.4723043696MSFT
2020-08-26217.88222.090217.360221.1539600828MSFT
2020-08-27222.89231.150219.400226.5857602195MSFT
2020-08-28228.18230.644226.580228.9126292896MSFT
\n", - "

5700 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume stock\n", - "2015-01-02 111.39 111.440 107.350 109.33 53204626 AAPL\n", - "2015-01-05 108.29 108.650 105.410 106.25 64285491 AAPL\n", - "2015-01-06 106.54 107.430 104.630 106.26 65797116 AAPL\n", - "2015-01-07 107.20 108.200 106.695 107.75 40105934 AAPL\n", - "2015-01-08 109.23 112.150 108.700 111.89 59364547 AAPL\n", - "... ... ... ... ... ... ...\n", - "2020-08-24 214.79 215.520 212.430 213.69 25460147 MSFT\n", - "2020-08-25 213.10 216.610 213.100 216.47 23043696 MSFT\n", - "2020-08-26 217.88 222.090 217.360 221.15 39600828 MSFT\n", - "2020-08-27 222.89 231.150 219.400 226.58 57602195 MSFT\n", - "2020-08-28 228.18 230.644 226.580 228.91 26292896 MSFT\n", - "\n", - "[5700 rows x 6 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "frames = [df_apple, df_tesla, df_ibm, df_microsoft]\n", - "\n", - "df = pd.concat(frames)\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 8. Shift the stock column into the index (making it a multi-level index consisting of the ticker symbol and the date)." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolume
stock
2015-01-02AAPL111.39111.440107.350109.3353204626
2015-01-05AAPL108.29108.650105.410106.2564285491
2015-01-06AAPL106.54107.430104.630106.2665797116
2015-01-07AAPL107.20108.200106.695107.7540105934
2015-01-08AAPL109.23112.150108.700111.8959364547
.....................
2020-08-24MSFT214.79215.520212.430213.6925460147
2020-08-25MSFT213.10216.610213.100216.4723043696
2020-08-26MSFT217.88222.090217.360221.1539600828
2020-08-27MSFT222.89231.150219.400226.5857602195
2020-08-28MSFT228.18230.644226.580228.9126292896
\n", - "

5700 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume\n", - " stock \n", - "2015-01-02 AAPL 111.39 111.440 107.350 109.33 53204626\n", - "2015-01-05 AAPL 108.29 108.650 105.410 106.25 64285491\n", - "2015-01-06 AAPL 106.54 107.430 104.630 106.26 65797116\n", - "2015-01-07 AAPL 107.20 108.200 106.695 107.75 40105934\n", - "2015-01-08 AAPL 109.23 112.150 108.700 111.89 59364547\n", - "... ... ... ... ... ...\n", - "2020-08-24 MSFT 214.79 215.520 212.430 213.69 25460147\n", - "2020-08-25 MSFT 213.10 216.610 213.100 216.47 23043696\n", - "2020-08-26 MSFT 217.88 222.090 217.360 221.15 39600828\n", - "2020-08-27 MSFT 222.89 231.150 219.400 226.58 57602195\n", - "2020-08-28 MSFT 228.18 230.644 226.580 228.91 26292896\n", - "\n", - "[5700 rows x 5 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.set_index(keys=\"stock\", append=True, inplace=True)\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 7. Create a dataFrame called vol, with the volume values." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "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", - " \n", - " \n", - " \n", - "
volume
stock
2015-01-02AAPL53204626
2015-01-05AAPL64285491
2015-01-06AAPL65797116
2015-01-07AAPL40105934
2015-01-08AAPL59364547
.........
2020-08-24MSFT25460147
2020-08-25MSFT23043696
2020-08-26MSFT39600828
2020-08-27MSFT57602195
2020-08-28MSFT26292896
\n", - "

5700 rows × 1 columns

\n", - "
" - ], - "text/plain": [ - " volume\n", - " stock \n", - "2015-01-02 AAPL 53204626\n", - "2015-01-05 AAPL 64285491\n", - "2015-01-06 AAPL 65797116\n", - "2015-01-07 AAPL 40105934\n", - "2015-01-08 AAPL 59364547\n", - "... ...\n", - "2020-08-24 MSFT 25460147\n", - "2020-08-25 MSFT 23043696\n", - "2020-08-26 MSFT 39600828\n", - "2020-08-27 MSFT 57602195\n", - "2020-08-28 MSFT 26292896\n", - "\n", - "[5700 rows x 1 columns]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vol = df['volume']\n", - "vol = pd.DataFrame(vol)\n", - "vol" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 8. Aggregate the data of volume to weekly.\n", - "Hint: Be careful to not sum data from the same week of 2015 and other years." - ] - }, - { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
stockAAPLIBMMSFTTSLA
yearweek
20151532046265525341279138524764443
22828681872444036015859662422622034
33042266472327205615708813630799137
41987370413123079713735263216215501
54658426843292730743778677815720217
..................
2020312118986092001057814937242261152261
322508525551770169721759895037091084
332354744731863465914175209171049854
342084647581590897813225802190804281
352659095311695979417199976288736115
\n", - "

296 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - "stock AAPL IBM MSFT TSLA\n", - "year week \n", - "2015 1 53204626 5525341 27913852 4764443\n", - " 2 282868187 24440360 158596624 22622034\n", - " 3 304226647 23272056 157088136 30799137\n", - " 4 198737041 31230797 137352632 16215501\n", - " 5 465842684 32927307 437786778 15720217\n", - "... ... ... ... ...\n", - "2020 31 211898609 20010578 149372422 61152261\n", - " 32 250852555 17701697 217598950 37091084\n", - " 33 235474473 18634659 141752091 71049854\n", - " 34 208464758 15908978 132258021 90804281\n", - " 35 265909531 16959794 171999762 88736115\n", - "\n", - "[296 rows x 4 columns]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "date = vol.index.get_level_values(0)\n", - "date = pd.DatetimeIndex(date) # ensure that it's a datetimeindex, instead of a regular index\n", - "\n", - "vol['week'] = date.isocalendar().week.values\n", - "# .values is necessary to obtain only the week *values*\n", - "# otherwise pandas interprets it as a part of an index; this would be a problem as the same week appears multiple times\n", - "# (same week number in different years, same week for different stocks)\n", - "\n", - "vol['year'] = date.year\n", - "\n", - "pd.pivot_table(vol, values='volume', index=['year', 'week'],\n", - " columns=['stock'], aggfunc=np.sum)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 9. Find all the volume traded in the year of 2015" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "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", - "
stockAAPLIBMMSFTTSLA
year
201513064316775110554552190575823111086708380
\n", - "
" - ], - "text/plain": [ - "stock AAPL IBM MSFT TSLA\n", - "year \n", - "2015 13064316775 1105545521 9057582311 1086708380" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vol_2015 = vol[vol['year'] == 2015]\n", - "\n", - "pd.pivot_table(vol_2015, values='volume', index=['year'],\n", - " columns=['stock'], aggfunc=np.sum)" - ] - } - ], - "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.6.8" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/09_Time_Series/Getting_Financial_Data/Solutions.ipynb b/09_Time_Series/Getting_Financial_Data/Solutions.ipynb index ce9909614..9f1693e12 100644 --- a/09_Time_Series/Getting_Financial_Data/Solutions.ipynb +++ b/09_Time_Series/Getting_Financial_Data/Solutions.ipynb @@ -1140,9 +1140,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 1 -} \ No newline at end of file +} From 014029154813ec7dc0a51a717f0cb04da90c8a46 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Fri, 18 Sep 2020 20:07:33 +0200 Subject: [PATCH 91/92] rename file --- .../Exercises_with_solutions.ipynb | 1221 +++++++++++++++++ 1 file changed, 1221 insertions(+) create mode 100644 09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb diff --git a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb b/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb new file mode 100644 index 000000000..b7ffdd5a2 --- /dev/null +++ b/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb @@ -0,0 +1,1221 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Getting Financial Data - Pandas Datareader" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introduction:\n", + "\n", + "This time you will get data from a website.\n", + "\n", + "\n", + "### Step 1. Import the necessary libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "# package to extract data from various Internet sources into a DataFrame\n", + "# make sure you have it installed\n", + "import pandas_datareader.data as web\n", + "\n", + "# package for dates\n", + "import datetime as dt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2015, 1, 1, 0, 0)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "start = dt.datetime(2015, 1, 1)\n", + "end = dt.datetime.today()\n", + "\n", + "start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3. Get an API key for one of the APIs that are supported by Pandas Datareader, preferably for AlphaVantage.\n", + "\n", + "If you do not have an API key for any of the supported APIs, it is easiest to get one for [AlphaVantage](https://www.alphavantage.co/support/#api-key). (Note that the API key is shown directly after the signup. You do *not* receive it via e-mail.)\n", + "\n", + "(For a full list of the APIs that are supported by Pandas Datareader, [see here](https://pydata.github.io/pandas-datareader/readers/index.html). As the APIs are provided by third parties, this list may change.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4. Use Pandas Datarader to read the daily time series for the Apple stock (ticker symbol AAPL) between 01/01/2015 and today, assign it to df_apple and print it." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolume
2015-01-02111.3900111.4400107.350109.3353204626
2015-01-05108.2900108.6500105.410106.2564285491
2015-01-06106.5400107.4300104.630106.2665797116
2015-01-07107.2000108.2000106.695107.7540105934
2015-01-08109.2300112.1500108.700111.8959364547
..................
2020-08-24514.7900515.1400495.745503.4386484442
2020-08-25498.7900500.7172492.210499.3052873947
2020-08-26504.7165507.9700500.330506.0940755567
2020-08-27508.5700509.9400495.330500.0438888096
2020-08-28504.0500505.7700498.310499.2346907479
\n", + "

1425 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " open high low close volume\n", + "2015-01-02 111.3900 111.4400 107.350 109.33 53204626\n", + "2015-01-05 108.2900 108.6500 105.410 106.25 64285491\n", + "2015-01-06 106.5400 107.4300 104.630 106.26 65797116\n", + "2015-01-07 107.2000 108.2000 106.695 107.75 40105934\n", + "2015-01-08 109.2300 112.1500 108.700 111.89 59364547\n", + "... ... ... ... ... ...\n", + "2020-08-24 514.7900 515.1400 495.745 503.43 86484442\n", + "2020-08-25 498.7900 500.7172 492.210 499.30 52873947\n", + "2020-08-26 504.7165 507.9700 500.330 506.09 40755567\n", + "2020-08-27 508.5700 509.9400 495.330 500.04 38888096\n", + "2020-08-28 504.0500 505.7700 498.310 499.23 46907479\n", + "\n", + "[1425 rows x 5 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_apple = web.DataReader(name=\"AAPL\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_apple" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5. Add a new column \"stock\" to the dataframe and add the ticker symbol" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolumestock
2015-01-02111.3900111.4400107.350109.3353204626AAPL
2015-01-05108.2900108.6500105.410106.2564285491AAPL
2015-01-06106.5400107.4300104.630106.2665797116AAPL
2015-01-07107.2000108.2000106.695107.7540105934AAPL
2015-01-08109.2300112.1500108.700111.8959364547AAPL
.....................
2020-08-24514.7900515.1400495.745503.4386484442AAPL
2020-08-25498.7900500.7172492.210499.3052873947AAPL
2020-08-26504.7165507.9700500.330506.0940755567AAPL
2020-08-27508.5700509.9400495.330500.0438888096AAPL
2020-08-28504.0500505.7700498.310499.2346907479AAPL
\n", + "

1425 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " open high low close volume stock\n", + "2015-01-02 111.3900 111.4400 107.350 109.33 53204626 AAPL\n", + "2015-01-05 108.2900 108.6500 105.410 106.25 64285491 AAPL\n", + "2015-01-06 106.5400 107.4300 104.630 106.26 65797116 AAPL\n", + "2015-01-07 107.2000 108.2000 106.695 107.75 40105934 AAPL\n", + "2015-01-08 109.2300 112.1500 108.700 111.89 59364547 AAPL\n", + "... ... ... ... ... ... ...\n", + "2020-08-24 514.7900 515.1400 495.745 503.43 86484442 AAPL\n", + "2020-08-25 498.7900 500.7172 492.210 499.30 52873947 AAPL\n", + "2020-08-26 504.7165 507.9700 500.330 506.09 40755567 AAPL\n", + "2020-08-27 508.5700 509.9400 495.330 500.04 38888096 AAPL\n", + "2020-08-28 504.0500 505.7700 498.310 499.23 46907479 AAPL\n", + "\n", + "[1425 rows x 6 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_apple[\"stock\"] = \"AAPL\"\n", + "df_apple" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6. Repeat the two previous steps for a few other stocks, always creating a new dataframe: Tesla, IBM and Microsoft. (Ticker symbols TSLA, IBM and MSFT.)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Tesla\n", + "df_tesla = web.DataReader(name=\"TSLA\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_tesla[\"stock\"] = \"TSLA\"\n", + "\n", + "# IBM\n", + "df_ibm = web.DataReader(name=\"IBM\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_ibm[\"stock\"] = \"IBM\"\n", + "\n", + "# Microsoft\n", + "df_microsoft = web.DataReader(name=\"MSFT\",\n", + " data_source=\"av-daily\",\n", + " start=start,\n", + " end=end,\n", + " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", + "\n", + "df_microsoft[\"stock\"] = \"MSFT\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7. Combine the four separate dataFrames into one combined dataFrame df that holds the information for all four stocks" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolumestock
2015-01-02111.39111.440107.350109.3353204626AAPL
2015-01-05108.29108.650105.410106.2564285491AAPL
2015-01-06106.54107.430104.630106.2665797116AAPL
2015-01-07107.20108.200106.695107.7540105934AAPL
2015-01-08109.23112.150108.700111.8959364547AAPL
.....................
2020-08-24214.79215.520212.430213.6925460147MSFT
2020-08-25213.10216.610213.100216.4723043696MSFT
2020-08-26217.88222.090217.360221.1539600828MSFT
2020-08-27222.89231.150219.400226.5857602195MSFT
2020-08-28228.18230.644226.580228.9126292896MSFT
\n", + "

5700 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " open high low close volume stock\n", + "2015-01-02 111.39 111.440 107.350 109.33 53204626 AAPL\n", + "2015-01-05 108.29 108.650 105.410 106.25 64285491 AAPL\n", + "2015-01-06 106.54 107.430 104.630 106.26 65797116 AAPL\n", + "2015-01-07 107.20 108.200 106.695 107.75 40105934 AAPL\n", + "2015-01-08 109.23 112.150 108.700 111.89 59364547 AAPL\n", + "... ... ... ... ... ... ...\n", + "2020-08-24 214.79 215.520 212.430 213.69 25460147 MSFT\n", + "2020-08-25 213.10 216.610 213.100 216.47 23043696 MSFT\n", + "2020-08-26 217.88 222.090 217.360 221.15 39600828 MSFT\n", + "2020-08-27 222.89 231.150 219.400 226.58 57602195 MSFT\n", + "2020-08-28 228.18 230.644 226.580 228.91 26292896 MSFT\n", + "\n", + "[5700 rows x 6 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frames = [df_apple, df_tesla, df_ibm, df_microsoft]\n", + "\n", + "df = pd.concat(frames)\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 8. Shift the stock column into the index (making it a multi-level index consisting of the ticker symbol and the date)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
openhighlowclosevolume
stock
2015-01-02AAPL111.39111.440107.350109.3353204626
2015-01-05AAPL108.29108.650105.410106.2564285491
2015-01-06AAPL106.54107.430104.630106.2665797116
2015-01-07AAPL107.20108.200106.695107.7540105934
2015-01-08AAPL109.23112.150108.700111.8959364547
.....................
2020-08-24MSFT214.79215.520212.430213.6925460147
2020-08-25MSFT213.10216.610213.100216.4723043696
2020-08-26MSFT217.88222.090217.360221.1539600828
2020-08-27MSFT222.89231.150219.400226.5857602195
2020-08-28MSFT228.18230.644226.580228.9126292896
\n", + "

5700 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " open high low close volume\n", + " stock \n", + "2015-01-02 AAPL 111.39 111.440 107.350 109.33 53204626\n", + "2015-01-05 AAPL 108.29 108.650 105.410 106.25 64285491\n", + "2015-01-06 AAPL 106.54 107.430 104.630 106.26 65797116\n", + "2015-01-07 AAPL 107.20 108.200 106.695 107.75 40105934\n", + "2015-01-08 AAPL 109.23 112.150 108.700 111.89 59364547\n", + "... ... ... ... ... ...\n", + "2020-08-24 MSFT 214.79 215.520 212.430 213.69 25460147\n", + "2020-08-25 MSFT 213.10 216.610 213.100 216.47 23043696\n", + "2020-08-26 MSFT 217.88 222.090 217.360 221.15 39600828\n", + "2020-08-27 MSFT 222.89 231.150 219.400 226.58 57602195\n", + "2020-08-28 MSFT 228.18 230.644 226.580 228.91 26292896\n", + "\n", + "[5700 rows x 5 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.set_index(keys=\"stock\", append=True, inplace=True)\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 7. Create a dataFrame called vol, with the volume values." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + " \n", + " \n", + " \n", + "
volume
stock
2015-01-02AAPL53204626
2015-01-05AAPL64285491
2015-01-06AAPL65797116
2015-01-07AAPL40105934
2015-01-08AAPL59364547
.........
2020-08-24MSFT25460147
2020-08-25MSFT23043696
2020-08-26MSFT39600828
2020-08-27MSFT57602195
2020-08-28MSFT26292896
\n", + "

5700 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " volume\n", + " stock \n", + "2015-01-02 AAPL 53204626\n", + "2015-01-05 AAPL 64285491\n", + "2015-01-06 AAPL 65797116\n", + "2015-01-07 AAPL 40105934\n", + "2015-01-08 AAPL 59364547\n", + "... ...\n", + "2020-08-24 MSFT 25460147\n", + "2020-08-25 MSFT 23043696\n", + "2020-08-26 MSFT 39600828\n", + "2020-08-27 MSFT 57602195\n", + "2020-08-28 MSFT 26292896\n", + "\n", + "[5700 rows x 1 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vol = df['volume']\n", + "vol = pd.DataFrame(vol)\n", + "vol" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 8. Aggregate the data of volume to weekly.\n", + "Hint: Be careful to not sum data from the same week of 2015 and other years." + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stockAAPLIBMMSFTTSLA
yearweek
20151532046265525341279138524764443
22828681872444036015859662422622034
33042266472327205615708813630799137
41987370413123079713735263216215501
54658426843292730743778677815720217
..................
2020312118986092001057814937242261152261
322508525551770169721759895037091084
332354744731863465914175209171049854
342084647581590897813225802190804281
352659095311695979417199976288736115
\n", + "

296 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + "stock AAPL IBM MSFT TSLA\n", + "year week \n", + "2015 1 53204626 5525341 27913852 4764443\n", + " 2 282868187 24440360 158596624 22622034\n", + " 3 304226647 23272056 157088136 30799137\n", + " 4 198737041 31230797 137352632 16215501\n", + " 5 465842684 32927307 437786778 15720217\n", + "... ... ... ... ...\n", + "2020 31 211898609 20010578 149372422 61152261\n", + " 32 250852555 17701697 217598950 37091084\n", + " 33 235474473 18634659 141752091 71049854\n", + " 34 208464758 15908978 132258021 90804281\n", + " 35 265909531 16959794 171999762 88736115\n", + "\n", + "[296 rows x 4 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "date = vol.index.get_level_values(0)\n", + "date = pd.DatetimeIndex(date) # ensure that it's a datetimeindex, instead of a regular index\n", + "\n", + "vol['week'] = date.isocalendar().week.values\n", + "# .values is necessary to obtain only the week *values*\n", + "# otherwise pandas interprets it as a part of an index; this would be a problem as the same week appears multiple times\n", + "# (same week number in different years, same week for different stocks)\n", + "\n", + "vol['year'] = date.year\n", + "\n", + "pd.pivot_table(vol, values='volume', index=['year', 'week'],\n", + " columns=['stock'], aggfunc=np.sum)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 9. Find all the volume traded in the year of 2015" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
stockAAPLIBMMSFTTSLA
year
201513064316775110554552190575823111086708380
\n", + "
" + ], + "text/plain": [ + "stock AAPL IBM MSFT TSLA\n", + "year \n", + "2015 13064316775 1105545521 9057582311 1086708380" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vol_2015 = vol[vol['year'] == 2015]\n", + "\n", + "pd.pivot_table(vol_2015, values='volume', index=['year'],\n", + " columns=['stock'], aggfunc=np.sum)" + ] + } + ], + "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.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From dab909ac6fd1d7de96975ebf2136f413222460b3 Mon Sep 17 00:00:00 2001 From: Guilherme Samora Date: Fri, 18 Sep 2020 20:31:03 +0200 Subject: [PATCH 92/92] Revert "rename file" This reverts commit 014029154813ec7dc0a51a717f0cb04da90c8a46. --- .../Exercises_with_solutions.ipynb | 1221 ----------------- 1 file changed, 1221 deletions(-) delete mode 100644 09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb diff --git a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb b/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb deleted file mode 100644 index b7ffdd5a2..000000000 --- a/09_Time_Series/Getting_Financial_Data/Exercises_with_solutions.ipynb +++ /dev/null @@ -1,1221 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Getting Financial Data - Pandas Datareader" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Introduction:\n", - "\n", - "This time you will get data from a website.\n", - "\n", - "\n", - "### Step 1. Import the necessary libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "# package to extract data from various Internet sources into a DataFrame\n", - "# make sure you have it installed\n", - "import pandas_datareader.data as web\n", - "\n", - "# package for dates\n", - "import datetime as dt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 2. Create your time range (start and end variables). The start date should be 01/01/2015 and the end should today (whatever your today is)." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "datetime.datetime(2015, 1, 1, 0, 0)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start = dt.datetime(2015, 1, 1)\n", - "end = dt.datetime.today()\n", - "\n", - "start" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 3. Get an API key for one of the APIs that are supported by Pandas Datareader, preferably for AlphaVantage.\n", - "\n", - "If you do not have an API key for any of the supported APIs, it is easiest to get one for [AlphaVantage](https://www.alphavantage.co/support/#api-key). (Note that the API key is shown directly after the signup. You do *not* receive it via e-mail.)\n", - "\n", - "(For a full list of the APIs that are supported by Pandas Datareader, [see here](https://pydata.github.io/pandas-datareader/readers/index.html). As the APIs are provided by third parties, this list may change.)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 4. Use Pandas Datarader to read the daily time series for the Apple stock (ticker symbol AAPL) between 01/01/2015 and today, assign it to df_apple and print it." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolume
2015-01-02111.3900111.4400107.350109.3353204626
2015-01-05108.2900108.6500105.410106.2564285491
2015-01-06106.5400107.4300104.630106.2665797116
2015-01-07107.2000108.2000106.695107.7540105934
2015-01-08109.2300112.1500108.700111.8959364547
..................
2020-08-24514.7900515.1400495.745503.4386484442
2020-08-25498.7900500.7172492.210499.3052873947
2020-08-26504.7165507.9700500.330506.0940755567
2020-08-27508.5700509.9400495.330500.0438888096
2020-08-28504.0500505.7700498.310499.2346907479
\n", - "

1425 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume\n", - "2015-01-02 111.3900 111.4400 107.350 109.33 53204626\n", - "2015-01-05 108.2900 108.6500 105.410 106.25 64285491\n", - "2015-01-06 106.5400 107.4300 104.630 106.26 65797116\n", - "2015-01-07 107.2000 108.2000 106.695 107.75 40105934\n", - "2015-01-08 109.2300 112.1500 108.700 111.89 59364547\n", - "... ... ... ... ... ...\n", - "2020-08-24 514.7900 515.1400 495.745 503.43 86484442\n", - "2020-08-25 498.7900 500.7172 492.210 499.30 52873947\n", - "2020-08-26 504.7165 507.9700 500.330 506.09 40755567\n", - "2020-08-27 508.5700 509.9400 495.330 500.04 38888096\n", - "2020-08-28 504.0500 505.7700 498.310 499.23 46907479\n", - "\n", - "[1425 rows x 5 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_apple = web.DataReader(name=\"AAPL\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_apple" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 5. Add a new column \"stock\" to the dataframe and add the ticker symbol" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolumestock
2015-01-02111.3900111.4400107.350109.3353204626AAPL
2015-01-05108.2900108.6500105.410106.2564285491AAPL
2015-01-06106.5400107.4300104.630106.2665797116AAPL
2015-01-07107.2000108.2000106.695107.7540105934AAPL
2015-01-08109.2300112.1500108.700111.8959364547AAPL
.....................
2020-08-24514.7900515.1400495.745503.4386484442AAPL
2020-08-25498.7900500.7172492.210499.3052873947AAPL
2020-08-26504.7165507.9700500.330506.0940755567AAPL
2020-08-27508.5700509.9400495.330500.0438888096AAPL
2020-08-28504.0500505.7700498.310499.2346907479AAPL
\n", - "

1425 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume stock\n", - "2015-01-02 111.3900 111.4400 107.350 109.33 53204626 AAPL\n", - "2015-01-05 108.2900 108.6500 105.410 106.25 64285491 AAPL\n", - "2015-01-06 106.5400 107.4300 104.630 106.26 65797116 AAPL\n", - "2015-01-07 107.2000 108.2000 106.695 107.75 40105934 AAPL\n", - "2015-01-08 109.2300 112.1500 108.700 111.89 59364547 AAPL\n", - "... ... ... ... ... ... ...\n", - "2020-08-24 514.7900 515.1400 495.745 503.43 86484442 AAPL\n", - "2020-08-25 498.7900 500.7172 492.210 499.30 52873947 AAPL\n", - "2020-08-26 504.7165 507.9700 500.330 506.09 40755567 AAPL\n", - "2020-08-27 508.5700 509.9400 495.330 500.04 38888096 AAPL\n", - "2020-08-28 504.0500 505.7700 498.310 499.23 46907479 AAPL\n", - "\n", - "[1425 rows x 6 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_apple[\"stock\"] = \"AAPL\"\n", - "df_apple" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 6. Repeat the two previous steps for a few other stocks, always creating a new dataframe: Tesla, IBM and Microsoft. (Ticker symbols TSLA, IBM and MSFT.)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Tesla\n", - "df_tesla = web.DataReader(name=\"TSLA\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_tesla[\"stock\"] = \"TSLA\"\n", - "\n", - "# IBM\n", - "df_ibm = web.DataReader(name=\"IBM\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_ibm[\"stock\"] = \"IBM\"\n", - "\n", - "# Microsoft\n", - "df_microsoft = web.DataReader(name=\"MSFT\",\n", - " data_source=\"av-daily\",\n", - " start=start,\n", - " end=end,\n", - " api_key=\"your_alpha_vantage_api_key_goes_here\")\n", - "\n", - "df_microsoft[\"stock\"] = \"MSFT\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 7. Combine the four separate dataFrames into one combined dataFrame df that holds the information for all four stocks" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolumestock
2015-01-02111.39111.440107.350109.3353204626AAPL
2015-01-05108.29108.650105.410106.2564285491AAPL
2015-01-06106.54107.430104.630106.2665797116AAPL
2015-01-07107.20108.200106.695107.7540105934AAPL
2015-01-08109.23112.150108.700111.8959364547AAPL
.....................
2020-08-24214.79215.520212.430213.6925460147MSFT
2020-08-25213.10216.610213.100216.4723043696MSFT
2020-08-26217.88222.090217.360221.1539600828MSFT
2020-08-27222.89231.150219.400226.5857602195MSFT
2020-08-28228.18230.644226.580228.9126292896MSFT
\n", - "

5700 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume stock\n", - "2015-01-02 111.39 111.440 107.350 109.33 53204626 AAPL\n", - "2015-01-05 108.29 108.650 105.410 106.25 64285491 AAPL\n", - "2015-01-06 106.54 107.430 104.630 106.26 65797116 AAPL\n", - "2015-01-07 107.20 108.200 106.695 107.75 40105934 AAPL\n", - "2015-01-08 109.23 112.150 108.700 111.89 59364547 AAPL\n", - "... ... ... ... ... ... ...\n", - "2020-08-24 214.79 215.520 212.430 213.69 25460147 MSFT\n", - "2020-08-25 213.10 216.610 213.100 216.47 23043696 MSFT\n", - "2020-08-26 217.88 222.090 217.360 221.15 39600828 MSFT\n", - "2020-08-27 222.89 231.150 219.400 226.58 57602195 MSFT\n", - "2020-08-28 228.18 230.644 226.580 228.91 26292896 MSFT\n", - "\n", - "[5700 rows x 6 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "frames = [df_apple, df_tesla, df_ibm, df_microsoft]\n", - "\n", - "df = pd.concat(frames)\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 8. Shift the stock column into the index (making it a multi-level index consisting of the ticker symbol and the date)." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
openhighlowclosevolume
stock
2015-01-02AAPL111.39111.440107.350109.3353204626
2015-01-05AAPL108.29108.650105.410106.2564285491
2015-01-06AAPL106.54107.430104.630106.2665797116
2015-01-07AAPL107.20108.200106.695107.7540105934
2015-01-08AAPL109.23112.150108.700111.8959364547
.....................
2020-08-24MSFT214.79215.520212.430213.6925460147
2020-08-25MSFT213.10216.610213.100216.4723043696
2020-08-26MSFT217.88222.090217.360221.1539600828
2020-08-27MSFT222.89231.150219.400226.5857602195
2020-08-28MSFT228.18230.644226.580228.9126292896
\n", - "

5700 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " open high low close volume\n", - " stock \n", - "2015-01-02 AAPL 111.39 111.440 107.350 109.33 53204626\n", - "2015-01-05 AAPL 108.29 108.650 105.410 106.25 64285491\n", - "2015-01-06 AAPL 106.54 107.430 104.630 106.26 65797116\n", - "2015-01-07 AAPL 107.20 108.200 106.695 107.75 40105934\n", - "2015-01-08 AAPL 109.23 112.150 108.700 111.89 59364547\n", - "... ... ... ... ... ...\n", - "2020-08-24 MSFT 214.79 215.520 212.430 213.69 25460147\n", - "2020-08-25 MSFT 213.10 216.610 213.100 216.47 23043696\n", - "2020-08-26 MSFT 217.88 222.090 217.360 221.15 39600828\n", - "2020-08-27 MSFT 222.89 231.150 219.400 226.58 57602195\n", - "2020-08-28 MSFT 228.18 230.644 226.580 228.91 26292896\n", - "\n", - "[5700 rows x 5 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.set_index(keys=\"stock\", append=True, inplace=True)\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 7. Create a dataFrame called vol, with the volume values." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "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", - " \n", - " \n", - " \n", - "
volume
stock
2015-01-02AAPL53204626
2015-01-05AAPL64285491
2015-01-06AAPL65797116
2015-01-07AAPL40105934
2015-01-08AAPL59364547
.........
2020-08-24MSFT25460147
2020-08-25MSFT23043696
2020-08-26MSFT39600828
2020-08-27MSFT57602195
2020-08-28MSFT26292896
\n", - "

5700 rows × 1 columns

\n", - "
" - ], - "text/plain": [ - " volume\n", - " stock \n", - "2015-01-02 AAPL 53204626\n", - "2015-01-05 AAPL 64285491\n", - "2015-01-06 AAPL 65797116\n", - "2015-01-07 AAPL 40105934\n", - "2015-01-08 AAPL 59364547\n", - "... ...\n", - "2020-08-24 MSFT 25460147\n", - "2020-08-25 MSFT 23043696\n", - "2020-08-26 MSFT 39600828\n", - "2020-08-27 MSFT 57602195\n", - "2020-08-28 MSFT 26292896\n", - "\n", - "[5700 rows x 1 columns]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vol = df['volume']\n", - "vol = pd.DataFrame(vol)\n", - "vol" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 8. Aggregate the data of volume to weekly.\n", - "Hint: Be careful to not sum data from the same week of 2015 and other years." - ] - }, - { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
stockAAPLIBMMSFTTSLA
yearweek
20151532046265525341279138524764443
22828681872444036015859662422622034
33042266472327205615708813630799137
41987370413123079713735263216215501
54658426843292730743778677815720217
..................
2020312118986092001057814937242261152261
322508525551770169721759895037091084
332354744731863465914175209171049854
342084647581590897813225802190804281
352659095311695979417199976288736115
\n", - "

296 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - "stock AAPL IBM MSFT TSLA\n", - "year week \n", - "2015 1 53204626 5525341 27913852 4764443\n", - " 2 282868187 24440360 158596624 22622034\n", - " 3 304226647 23272056 157088136 30799137\n", - " 4 198737041 31230797 137352632 16215501\n", - " 5 465842684 32927307 437786778 15720217\n", - "... ... ... ... ...\n", - "2020 31 211898609 20010578 149372422 61152261\n", - " 32 250852555 17701697 217598950 37091084\n", - " 33 235474473 18634659 141752091 71049854\n", - " 34 208464758 15908978 132258021 90804281\n", - " 35 265909531 16959794 171999762 88736115\n", - "\n", - "[296 rows x 4 columns]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "date = vol.index.get_level_values(0)\n", - "date = pd.DatetimeIndex(date) # ensure that it's a datetimeindex, instead of a regular index\n", - "\n", - "vol['week'] = date.isocalendar().week.values\n", - "# .values is necessary to obtain only the week *values*\n", - "# otherwise pandas interprets it as a part of an index; this would be a problem as the same week appears multiple times\n", - "# (same week number in different years, same week for different stocks)\n", - "\n", - "vol['year'] = date.year\n", - "\n", - "pd.pivot_table(vol, values='volume', index=['year', 'week'],\n", - " columns=['stock'], aggfunc=np.sum)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Step 9. Find all the volume traded in the year of 2015" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "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", - "
stockAAPLIBMMSFTTSLA
year
201513064316775110554552190575823111086708380
\n", - "
" - ], - "text/plain": [ - "stock AAPL IBM MSFT TSLA\n", - "year \n", - "2015 13064316775 1105545521 9057582311 1086708380" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "vol_2015 = vol[vol['year'] == 2015]\n", - "\n", - "pd.pivot_table(vol_2015, values='volume', index=['year'],\n", - " columns=['stock'], aggfunc=np.sum)" - ] - } - ], - "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.4" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -}