Skip to content

Instantly share code, notes, and snippets.

@albertovilla
Created January 27, 2018 18:35
Show Gist options
  • Save albertovilla/125949ccc9e53d071a8fdeaae1dd7912 to your computer and use it in GitHub Desktop.
Save albertovilla/125949ccc9e53d071a8fdeaae1dd7912 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{"metadata":{"language_info":{"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","version":"3.5.2","codemirror_mode":{"version":3,"name":"ipython"},"pygments_lexer":"ipython3"},"kernelspec":{"language":"python","name":"python3","display_name":"Python 3"}},"cells":[{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"1d0b086e6c"}},"source":"## 1. Introduction\n<p>Everyone loves Lego (unless you ever stepped on one). Did you know by the way that \"Lego\" was derived from the Danish phrase leg godt, which means \"play well\"? Unless you speak Danish, probably not. </p>\n<p>In this project, we will analyze a fascinating dataset on every single lego block that has ever been built!</p>\n<p><img src=\"https://s3.amazonaws.com/assets.datacamp.com/production/project_10/datasets/lego-bricks.jpeg\" alt=\"lego\"></p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"1d0b086e6c"},"collapsed":true},"source":"# Nothing to do here","cell_type":"code","outputs":[],"execution_count":385},{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"044b2cef41"}},"source":"## 2. Reading Data\n<p>A comprehensive database of lego blocks is provided by <a href=\"https://rebrickable.com/downloads/\">Rebrickable</a>. The data is available as csv files and the schema is shown below.</p>\n<p><img src=\"https://s3.amazonaws.com/assets.datacamp.com/production/project_10/datasets/downloads_schema.png\" alt=\"schema\"></p>\n<p>Let us start by reading in the colors data to get a sense of the diversity of lego sets!</p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"044b2cef41"}},"source":"# Import modules\nimport pandas as pd\n\n# Read colors data\ncolors = pd.read_csv('datasets/colors.csv')\n\n# Print the first few rows\ncolors.head()","cell_type":"code","outputs":[{"output_type":"execute_result","execution_count":387,"data":{"text/plain":" id name rgb is_trans\n0 -1 Unknown 0033B2 f\n1 0 Black 05131D f\n2 1 Blue 0055BF f\n3 2 Green 237841 f\n4 3 Dark Turquoise 008F9B f","text/html":"<div>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>name</th>\n <th>rgb</th>\n <th>is_trans</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>-1</td>\n <td>Unknown</td>\n <td>0033B2</td>\n <td>f</td>\n </tr>\n <tr>\n <th>1</th>\n <td>0</td>\n <td>Black</td>\n <td>05131D</td>\n <td>f</td>\n </tr>\n <tr>\n <th>2</th>\n <td>1</td>\n <td>Blue</td>\n <td>0055BF</td>\n <td>f</td>\n </tr>\n <tr>\n <th>3</th>\n <td>2</td>\n <td>Green</td>\n <td>237841</td>\n <td>f</td>\n </tr>\n <tr>\n <th>4</th>\n <td>3</td>\n <td>Dark Turquoise</td>\n <td>008F9B</td>\n <td>f</td>\n </tr>\n </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":387},{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"15c1e2ce38"}},"source":"## 3. Exploring Colors\n<p>Now that we have read the <code>colors</code> data, we can start exploring it! Let us start by understanding the number of colors available.</p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"15c1e2ce38"}},"source":"# How many distinct colors are available?\n# -- YOUR CODE FOR TASK 3 --\nnum_colors = len(colors.name.unique())\nprint(num_colors)","cell_type":"code","outputs":[{"output_type":"stream","text":"135\n","name":"stdout"}],"execution_count":389},{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"a5723ae5c2"}},"source":"## 4. Transparent Colors in Lego Sets\n<p>The <code>colors</code> data has a column named <code>is_trans</code> that indicates whether a color is transparent or not. It would be interesting to explore the distribution of transparent vs. non-transparent colors.</p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"a5723ae5c2"}},"source":"# colors_summary: Distribution of colors based on transparency\n# -- YOUR CODE FOR TASK 4 --\ncolors_summary = colors.groupby([\"is_trans\"]).count()\nprint(colors_summary)","cell_type":"code","outputs":[{"output_type":"stream","text":" id name rgb\nis_trans \nf 107 107 107\nt 28 28 28\n","name":"stdout"}],"execution_count":391},{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"c9d0e58653"}},"source":"## 5. Explore Lego Sets\n<p>Another interesting dataset available in this database is the <code>sets</code> data. It contains a comprehensive list of sets over the years and the number of parts that each of these sets contained. </p>\n<p><img src=\"https://imgur.com/1k4PoXs.png\" alt=\"sets_data\"></p>\n<p>Let us use this data to explore how the average number of parts in Lego sets has varied over the years.</p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"c9d0e58653"}},"source":"%matplotlib inline\n# Read sets data as `sets`\nsets = pd.read_csv(\"datasets/sets.csv\")\n\n# Create a summary of average number of parts by year: `parts_by_year`\nparts_by_year = sets.groupby([\"year\"])[[\"num_parts\"]].mean()\n\n# Plot trends in average number of parts by year\nparts_by_year.plot()","cell_type":"code","outputs":[{"output_type":"execute_result","execution_count":393,"data":{"text/plain":"<matplotlib.axes._subplots.AxesSubplot at 0x7fa405dc6fd0>"},"metadata":{}},{"output_type":"display_data","metadata":{},"data":{"text/plain":"<matplotlib.figure.Figure at 0x7fa405dc6e10>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcFNW1wPHfGRAFFBCQUWQXFHdEg0sUBrcoEZEkDxWN\nW4wYNzSJiVsSjD6jWUyeT2N8LgT3uItLEI2Oiooiyr4rmyijyCb7Mvf9caqcnp5eqrurepvz/Xzm\nY09VdXUVPfbpe+6594pzDmOMMabYVBT6AowxxphELEAZY4wpShagjDHGFCULUMYYY4qSBShjjDFF\nyQKUMcaYopQ2QInIjiLyvoh8LCLTReR33vbRIvKpt/0jETko5jl3iMh8EZkiIn2ivAFjjDHlqWm6\nA5xzm0VkoHNug4g0Ad4RkXHe7l86556JPV5ETgb2cs71EpHDgX8AR4R+5cYYY8paoBSfc26D93BH\nNKjVer9LgsOHAA96z3sfaC0ilTlepzHGmEYmUIASkQoR+RhYDrzqnJvk7brZS+P9RUR28LbtCSyN\nefoyb5sxxhgTWNoUH4BzrhY4RERaAc+KyH7ANc65Gi8w3Qv8Grg56AuLiM2xZIwxBgDnXIOMXEZV\nfM65tUA1cJJzrsbbthUYDfTzDlsGdI55WidvW6Lzlf3P7373u4Jfg92n3afdo91nMf8kE6SKr72I\ntPYeNwdOAOaIyO7eNgFOA2Z4TxkLnOPtOwJY7bxgZowxxgQVJMW3BzBGRCrQgPYv59zLIvIfEWmP\nFkpMAS4G8PYNEpEFwHrg/Iiu3RhjTBkLUmY+HeibYPtxKZ5zWY7XVTaqqqoKfQl5YfdZPhrDPYLd\nZymQVPm/SF9YxBXqtY0xxhQPEcElKJIIVMVnjDHFqFu3bixevLjQl2EC6tq1K4sWLQp8vLWgjDEl\ny/vmXejLMAEle7+StaBsslhjjDFFyQKUMcaYomQByhhjTFGyAGWMMaYoWYAyxhhTlCxAGWOMCWTg\nwIE88MADeXs9C1DGGGPSqq2tTX9QyCxAGWNMRLp3785f/vIXDj74YHbddVfOPPNMNm/ezJgxYzjm\nmGPqHVtRUcGnn34KwPnnn8+ll17KoEGD2GWXXTjmmGOoqanhqquuom3btuy3335MnTo10Ovfeuut\n7L///rRr146f/OQnbNmyBYDVq1czePBgOnToQLt27Rg8eDDLltUtPDFw4EBuuOEGjj76aFq2bMm5\n557L22+/zWWXXUarVq244oorALjqqquorKykdevWHHzwwcyaNSusfz4LUMYYE6Unn3yS8ePHs3Dh\nQqZOncqYMWMAHZwaK/73J598kltuuYWvv/6aZs2aceSRR3LYYYfx9ddf88Mf/pCrrroq0Os/+uij\nvPrqq3zyySfMnTuXm2/WZftqa2u54IILWLp0KUuWLKFFixZcdln9aVQffvhh7rvvPr755htGjx7N\nMcccw5133snatWu54447GD9+PBMmTGDBggWsWbOGJ554gnbt2mX7T9WABShjTFkTyf0nFyNHjqSy\nspI2bdowePBgpkyZkvC4+BkWhg4dSp8+fWjWrBlDhw6lefPmnHXWWYgIp59+etLzxLv88svp2LEj\nbdq04frrr+exxx4DoG3btgwdOpQdd9yRli1bcu211/LWW2/Ve+55551H7969qaiooGnThjPj7bDD\nDnzzzTfMmjUL5xz77LMPlZWVga4rCAtQxpiy5lzuP7mI/cBu0aIF69aty/h5zZs3b/B70PN06tTp\n28ddu3bl888/B2Djxo2MGDGCbt260aZNGwYMGMDq1avrBcrOnTs3OF+sgQMHctlll3HppZdSWVnJ\nxRdfHPi6grAAZYwxedayZUvWr1//7e/Lly+P7LWWLl367ePFixfTsWNHAP785z8zf/58Jk2axOrV\nq79tPcUGqHRpSIDLLruMDz/8kFmzZjF37lz+9Kc/hXbtFqCMMSbP/GKCadOmsXnzZm688caEH/6p\nBJ0k96677mLZsmWsXLmSW265hTPOOAOAdevW0bx5c1q1asXKlSsZNWpU2nNVVlZ+W8gB8OGHH/LB\nBx+wbds2mjdvzk477URFRXhhxQKUMcZEJFnQ6dWrF7/5zW847rjj2HvvvRtU9OVy7njDhw/nxBNP\npGfPnvTq1Yvrr78egCuvvJINGzbQvn17jjrqKAYNGpT2/CNHjuTJJ5+kXbt2XHnllaxdu5af/vSn\ntG3blu7du9O+fXuuvvrqjO8lGVtuwxhTsmy5jdS6d+/O/fffz7HHHlvoSwFsuQ1jjDFlwlbUNcaY\nErV06VL222+/euk45xwiwsyZMzPu1yo2luIzxpQsS/GVFkvxGWOMKQsWoIwxxhQlC1DGGGOKUtoi\nCRHZEXgLaOYd/5Rz7kYR6QY8DrQFJgM/ds5tE5FmwIPAocAK4HTn3JJoLt8Y05h17dq15AsBGpOu\n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\n7B8tsbwAAAAASUVORK5CYII=\n"}}],"execution_count":393},{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"266a3f390c"}},"source":"## 6. Lego Themes Over Years\n<p>Lego blocks ship under multiple <a href=\"https://shop.lego.com/en-US/Themes\">themes</a>. Let us try to get a sense of how the number of themes shipped has varied over the years.</p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"266a3f390c"}},"source":"# themes_by_year: Number of themes shipped by year\n# -- YOUR CODE HERE --\n#themes_by_year = sets.groupby(\"year\")[[\"theme_id\"]].count()\nthemes_by_year = sets.groupby([\"year\"]).apply(lambda x: x[\"theme_id\"].nunique())\n#themes_by_year = pd.Dataframe({\"year\": themes_by_year.index, \"themes_id\": themes_by_year.values})\nthemes_by_year = themes_by_year.to_frame().reset_index()\nthemes_by_year = themes_by_year.rename(columns = {0: \"theme_id\"})\nprint(themes_by_year.head())","cell_type":"code","outputs":[{"output_type":"stream","text":" year theme_id\n0 1950 2\n1 1953 1\n2 1954 2\n3 1955 4\n4 1956 3\n","name":"stdout"}],"execution_count":395},{"metadata":{"tags":["context"],"run_control":{"frozen":true},"editable":false,"deletable":false,"dc":{"key":"a293e5076e"}},"source":"## 7. Wrapping It All Up!\n<p>Lego blocks offer an unlimited amount of fun across ages. We explored some interesting trends around colors, parts, and themes. </p>","cell_type":"markdown"},{"metadata":{"trusted":true,"tags":["sample_code"],"dc":{"key":"a293e5076e"},"collapsed":true},"source":"# Nothing to do here","cell_type":"code","outputs":[],"execution_count":397}],"nbformat":4,"nbformat_minor":2}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment