{ "metadata": { "name": "", "signature": "sha256:e482f4f5ab07b9d93a023397296727c05dbdf34fb020c3778470927e6b4cddd7" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Lets Create a Dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Lets Create a Dataframe\n", "The code below creates a pandas dataframe that we can use to pivot out some data. You will have to download the notebook and run it to see the final result as NBConvert cannot render it and it has to run against an open kernel. You can download the notebook at [here](https://raw.githubusercontent.com/Tooblippe/insightstack-blog/gh-pages/downloads/notebooks/pandas_pivot.ipynb)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pandas import Series, DataFrame, pivot_table\n", "import numpy as np\n", "import numpy\n", "\n", "d = { 'Class' : Series( ['a', 'b', 'b','a','a', 'b', 'b','a','a', 'b', 'b','a','a','b','b','b']),\n", " 'Area' : Series( ['North','East', 'South', 'West','North','East', 'South', 'West','North','East', 'South', 'West','South', 'West','South', 'West']),\n", " 'Type' : Series( ['square', 'round','square', 'round', 'round', 'square', 'round', 'square', 'round', 'square','round', 'square',]),\n", " 'Web' : Series( ['Y','N','N','Y','Y','N','N','Y','Y','N','N','Y','Y','N','N','Y']),\n", " 'Agent' : Series( ['Mike', 'John', 'Pete','Mike', 'John', 'Pete','Mike', 'John', 'Pete','Mike', 'John', 'Pete','John', 'Pete','John', 'Pete']),\n", " 'Income' : Series( [20., 40., 90., 20.]),\n", " 'Profit' : Series( [1., 2., 3., 4.,1., 2., 3., 4.,1., 2., 3., 4.,1., 2., 3., 4.]),\n", " 'Stock' : Series( [20., 23., 33., 43.,12., 21., 310., 41.,11., 21., 31., 41.,11., 22., 34., 54.] )\n", " }\n", "df = DataFrame(d)\n", "print df\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Agent Area Class Income Profit Stock Type Web\n", "0 Mike North a 20 1 20 square Y\n", "1 John East b 40 2 23 round N\n", "2 Pete South b 90 3 33 square N\n", "3 Mike West a 20 4 43 round Y\n", "4 John North a NaN 1 12 round Y\n", "5 Pete East b NaN 2 21 square N\n", "6 Mike South b NaN 3 310 round N\n", "7 John West a NaN 4 41 square Y\n", "8 Pete North a NaN 1 11 round Y\n", "9 Mike East b NaN 2 21 square N\n", "10 John South b NaN 3 31 round N\n", "11 Pete West a NaN 4 41 square Y\n", "12 John South a NaN 1 11 NaN Y\n", "13 Pete West b NaN 2 22 NaN N\n", "14 John South b NaN 3 34 NaN N\n", "15 Pete West b NaN 4 54 NaN Y\n", "\n", "[16 rows x 8 columns]\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets just create a nice pivot to see if everything is working. We call the sum function on the values for 'Profit' and 'Stock' for the 'Area' and 'Class' rows." ] }, { "cell_type": "code", "collapsed": false, "input": [ "pivot_table( df, rows=['Area','Class'], values = ['Profit','Stock'], aggfunc=numpy.sum)" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
ProfitStock
AreaClass
Eastb 6 65
Northa 3 43
Southa 1 11
b 12 408
Westa 12 125
b 6 76
\n", "

6 rows \u00d7 2 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ " Profit Stock\n", "Area Class \n", "East b 6 65\n", "North a 3 43\n", "South a 1 11\n", " b 12 408\n", "West a 12 125\n", " b 6 76\n", "\n", "[6 rows x 2 columns]" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make widgets to interact with we need to first create a function that would return 'visualy' to the workbook what we want. I included a plot for fun. We should be able to pass a matplotlib function like bar to it using the widget aswell. I struggled to pass the dataframe 'df' to the function so hardcoded it for now." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "def my_pivot( rows, values, aggfunc, plt=False):\n", " dfp = df\n", " piv = pivot_table( dfp, rows=rows, values=values, aggfunc=aggfunc)\n", " print piv\n", " if plt: plot( piv )" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets just test this function to see if it works." ] }, { "cell_type": "code", "collapsed": false, "input": [ "my_pivot(rows=['Area','Class'], values = ['Profit','Stock'], aggfunc=numpy.sum, plt=True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Profit Stock\n", "Area Class \n", "East b 6 65\n", "North a 3 43\n", "South a 1 11\n", " b 12 408\n", "West a 12 125\n", " b 6 76\n", "\n", "[6 rows x 2 columns]\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets import some goodies to enable us to use the interactive widget. When you run this code for the first time you will see the selectors and then some error. This is because I did not set the default selector values. Select a column with only text values and then for 'values' a column like 'Income', 'Profit' or 'Stock'. You can also select if you want to sum or average them out. There is also a radio button to show or hide the plot. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.html.widgets import interact, SelectWidget, CheckboxWidget, RadioButtonsWidget\n", "from IPython.display import display" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "i = interact( my_pivot,\n", " rows = SelectWidget(values=list(df.columns)), \n", " values = SelectWidget(values=list(df.columns)),\n", " aggfunc = SelectWidget( values={ 'sum' : numpy.sum, 'ave' : numpy.average }),\n", " plt = RadioButtonsWidget( values = { 'Plot': True, 'False' : False } )\n", " )" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Class\n", "a 16\n", "b 24\n", "Name: Profit, dtype: float64\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nXDdIQ8+pt3oAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ " \n" ] } ], "metadata": {} } ] }