Skip to content

Instantly share code, notes, and snippets.

@kiwidamien
Created November 5, 2019 08:45
Show Gist options
  • Save kiwidamien/f808d4b5e4efeb072d60c14def32253a to your computer and use it in GitHub Desktop.
Save kiwidamien/f808d4b5e4efeb072d60c14def32253a to your computer and use it in GitHub Desktop.
An example of Styling Pandas DataFrames
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Look at the default presentation of a dataframe"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's load in a standard csv file and print it out using the defaults. Then we will see how we can use Panda's styling to make it easier to extract information. The dataset we are using are the campaign contributions for the 2016 presidential elections. The candidates have been sorted by the total amount of money the raised."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:19.552764Z",
"start_time": "2019-11-05T08:43:18.833176Z"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"desired_cols = ['Surname', 'Given Name', 'Party', 'Individual contributions', 'Committee contributions',\n",
" 'Candidate contributions', 'Transfers', 'Offsets', 'Other receipts', 'Total', 'Percent individual']"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.253110Z",
"start_time": "2019-11-05T08:43:19.554674Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Surname</th>\n",
" <th>Given Name</th>\n",
" <th>Party</th>\n",
" <th>Individual contributions</th>\n",
" <th>Committee contributions</th>\n",
" <th>Candidate contributions</th>\n",
" <th>Transfers</th>\n",
" <th>Offsets</th>\n",
" <th>Other receipts</th>\n",
" <th>Total</th>\n",
" <th>Percent individual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Clinton</td>\n",
" <td>Hillary</td>\n",
" <td>Democrat</td>\n",
" <td>2.311585e+08</td>\n",
" <td>1339118.32</td>\n",
" <td>997159.15</td>\n",
" <td>33940000.00</td>\n",
" <td>7073044.01</td>\n",
" <td>32863.96</td>\n",
" <td>2.745417e+08</td>\n",
" <td>0.841980</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sanders</td>\n",
" <td>Bernard</td>\n",
" <td>Democrat</td>\n",
" <td>2.306704e+08</td>\n",
" <td>5621.92</td>\n",
" <td>0.00</td>\n",
" <td>1500000.00</td>\n",
" <td>3202486.10</td>\n",
" <td>44028.81</td>\n",
" <td>2.354225e+08</td>\n",
" <td>0.979814</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cruz</td>\n",
" <td>Rafael</td>\n",
" <td>Republican</td>\n",
" <td>9.211106e+07</td>\n",
" <td>101095.14</td>\n",
" <td>0.00</td>\n",
" <td>250012.93</td>\n",
" <td>154093.55</td>\n",
" <td>8086.38</td>\n",
" <td>9.262435e+07</td>\n",
" <td>0.994458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Trump</td>\n",
" <td>Donald</td>\n",
" <td>Republican</td>\n",
" <td>3.695986e+07</td>\n",
" <td>0.00</td>\n",
" <td>49950643.36</td>\n",
" <td>2201313.93</td>\n",
" <td>2186237.76</td>\n",
" <td>0.00</td>\n",
" <td>9.129811e+07</td>\n",
" <td>0.404826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carson</td>\n",
" <td>Benjamin</td>\n",
" <td>Republican</td>\n",
" <td>6.346140e+07</td>\n",
" <td>5588.29</td>\n",
" <td>25000.00</td>\n",
" <td>0.00</td>\n",
" <td>102499.71</td>\n",
" <td>649470.63</td>\n",
" <td>6.424396e+07</td>\n",
" <td>0.987819</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Rubio</td>\n",
" <td>Marco</td>\n",
" <td>Republican</td>\n",
" <td>4.536183e+07</td>\n",
" <td>455970.75</td>\n",
" <td>0.00</td>\n",
" <td>662431.58</td>\n",
" <td>456260.05</td>\n",
" <td>595102.60</td>\n",
" <td>4.753170e+07</td>\n",
" <td>0.954349</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Bush</td>\n",
" <td>Jeb</td>\n",
" <td>Republican</td>\n",
" <td>3.358905e+07</td>\n",
" <td>230317.05</td>\n",
" <td>795703.65</td>\n",
" <td>0.00</td>\n",
" <td>750658.19</td>\n",
" <td>50000.00</td>\n",
" <td>3.541573e+07</td>\n",
" <td>0.948422</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Kasich</td>\n",
" <td>John</td>\n",
" <td>Republican</td>\n",
" <td>1.905342e+07</td>\n",
" <td>275870.62</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>107196.83</td>\n",
" <td>9966.00</td>\n",
" <td>1.944645e+07</td>\n",
" <td>0.979789</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Paul</td>\n",
" <td>Rand</td>\n",
" <td>Republican</td>\n",
" <td>1.022932e+07</td>\n",
" <td>47171.17</td>\n",
" <td>0.00</td>\n",
" <td>1735263.26</td>\n",
" <td>31997.57</td>\n",
" <td>212501.08</td>\n",
" <td>1.225626e+07</td>\n",
" <td>0.834621</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Fiorina</td>\n",
" <td>Carly</td>\n",
" <td>Republican</td>\n",
" <td>1.204584e+07</td>\n",
" <td>20925.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>13298.08</td>\n",
" <td>39506.11</td>\n",
" <td>1.211957e+07</td>\n",
" <td>0.993917</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Christie</td>\n",
" <td>Christopher</td>\n",
" <td>Republican</td>\n",
" <td>8.432629e+06</td>\n",
" <td>115738.02</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>193218.94</td>\n",
" <td>0.00</td>\n",
" <td>8.741586e+06</td>\n",
" <td>0.964657</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Walker</td>\n",
" <td>Scott</td>\n",
" <td>Republican</td>\n",
" <td>8.210190e+06</td>\n",
" <td>53100.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>64726.19</td>\n",
" <td>350529.12</td>\n",
" <td>8.678545e+06</td>\n",
" <td>0.946033</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>O'Malley</td>\n",
" <td>Martin</td>\n",
" <td>Democrat</td>\n",
" <td>4.573815e+06</td>\n",
" <td>115002.01</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>60471.44</td>\n",
" <td>0.00</td>\n",
" <td>6.338218e+06</td>\n",
" <td>0.721625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Graham</td>\n",
" <td>Lindsey</td>\n",
" <td>Republican</td>\n",
" <td>3.741437e+06</td>\n",
" <td>71750.00</td>\n",
" <td>0.00</td>\n",
" <td>1975000.00</td>\n",
" <td>35792.38</td>\n",
" <td>8730.32</td>\n",
" <td>5.832710e+06</td>\n",
" <td>0.641458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Huckabee</td>\n",
" <td>Mike</td>\n",
" <td>Republican</td>\n",
" <td>4.273304e+06</td>\n",
" <td>33000.00</td>\n",
" <td>12000.00</td>\n",
" <td>0.00</td>\n",
" <td>8499.61</td>\n",
" <td>0.00</td>\n",
" <td>4.326804e+06</td>\n",
" <td>0.987635</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Santorum</td>\n",
" <td>Richard</td>\n",
" <td>Republican</td>\n",
" <td>1.364537e+06</td>\n",
" <td>7350.00</td>\n",
" <td>24000.00</td>\n",
" <td>0.00</td>\n",
" <td>12978.55</td>\n",
" <td>75237.29</td>\n",
" <td>1.484103e+06</td>\n",
" <td>0.919436</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Jindal</td>\n",
" <td>Bobby</td>\n",
" <td>Republican</td>\n",
" <td>1.432464e+06</td>\n",
" <td>10000.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>1.442464e+06</td>\n",
" <td>0.993067</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Johnson</td>\n",
" <td>Gary</td>\n",
" <td>Libertarian</td>\n",
" <td>1.358671e+06</td>\n",
" <td>5000.00</td>\n",
" <td>20.00</td>\n",
" <td>0.00</td>\n",
" <td>26.40</td>\n",
" <td>0.00</td>\n",
" <td>1.363957e+06</td>\n",
" <td>0.996125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Stein</td>\n",
" <td>Jill</td>\n",
" <td>Green</td>\n",
" <td>6.246960e+05</td>\n",
" <td>0.00</td>\n",
" <td>40000.00</td>\n",
" <td>0.00</td>\n",
" <td>491.18</td>\n",
" <td>0.00</td>\n",
" <td>8.621115e+05</td>\n",
" <td>0.724612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Webb</td>\n",
" <td>James</td>\n",
" <td>Democrat</td>\n",
" <td>7.715784e+05</td>\n",
" <td>5000.00</td>\n",
" <td>0.00</td>\n",
" <td>0.00</td>\n",
" <td>250.00</td>\n",
" <td>0.00</td>\n",
" <td>7.768284e+05</td>\n",
" <td>0.993242</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Pataki</td>\n",
" <td>George</td>\n",
" <td>Republican</td>\n",
" <td>5.103273e+05</td>\n",
" <td>1000.00</td>\n",
" <td>20000.00</td>\n",
" <td>0.00</td>\n",
" <td>15935.20</td>\n",
" <td>0.00</td>\n",
" <td>5.472626e+05</td>\n",
" <td>0.932509</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Gilmore</td>\n",
" <td>James</td>\n",
" <td>Republican</td>\n",
" <td>1.043959e+05</td>\n",
" <td>2000.00</td>\n",
" <td>279075.00</td>\n",
" <td>0.00</td>\n",
" <td>1790.49</td>\n",
" <td>0.00</td>\n",
" <td>3.872614e+05</td>\n",
" <td>0.269575</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Lessig</td>\n",
" <td>Lawrence</td>\n",
" <td>Democrat</td>\n",
" <td>1.818120e+05</td>\n",
" <td>0.00</td>\n",
" <td>32000.00</td>\n",
" <td>0.00</td>\n",
" <td>6443.00</td>\n",
" <td>0.00</td>\n",
" <td>2.202550e+05</td>\n",
" <td>0.825461</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Surname Given Name Party Individual contributions \\\n",
"0 Clinton Hillary Democrat 2.311585e+08 \n",
"1 Sanders Bernard Democrat 2.306704e+08 \n",
"2 Cruz Rafael Republican 9.211106e+07 \n",
"3 Trump Donald Republican 3.695986e+07 \n",
"4 Carson Benjamin Republican 6.346140e+07 \n",
"5 Rubio Marco Republican 4.536183e+07 \n",
"6 Bush Jeb Republican 3.358905e+07 \n",
"7 Kasich John Republican 1.905342e+07 \n",
"8 Paul Rand Republican 1.022932e+07 \n",
"9 Fiorina Carly Republican 1.204584e+07 \n",
"10 Christie Christopher Republican 8.432629e+06 \n",
"11 Walker Scott Republican 8.210190e+06 \n",
"12 O'Malley Martin Democrat 4.573815e+06 \n",
"13 Graham Lindsey Republican 3.741437e+06 \n",
"14 Huckabee Mike Republican 4.273304e+06 \n",
"15 Santorum Richard Republican 1.364537e+06 \n",
"16 Jindal Bobby Republican 1.432464e+06 \n",
"17 Johnson Gary Libertarian 1.358671e+06 \n",
"18 Stein Jill Green 6.246960e+05 \n",
"19 Webb James Democrat 7.715784e+05 \n",
"20 Pataki George Republican 5.103273e+05 \n",
"21 Gilmore James Republican 1.043959e+05 \n",
"22 Lessig Lawrence Democrat 1.818120e+05 \n",
"\n",
" Committee contributions Candidate contributions Transfers Offsets \\\n",
"0 1339118.32 997159.15 33940000.00 7073044.01 \n",
"1 5621.92 0.00 1500000.00 3202486.10 \n",
"2 101095.14 0.00 250012.93 154093.55 \n",
"3 0.00 49950643.36 2201313.93 2186237.76 \n",
"4 5588.29 25000.00 0.00 102499.71 \n",
"5 455970.75 0.00 662431.58 456260.05 \n",
"6 230317.05 795703.65 0.00 750658.19 \n",
"7 275870.62 0.00 0.00 107196.83 \n",
"8 47171.17 0.00 1735263.26 31997.57 \n",
"9 20925.00 0.00 0.00 13298.08 \n",
"10 115738.02 0.00 0.00 193218.94 \n",
"11 53100.00 0.00 0.00 64726.19 \n",
"12 115002.01 0.00 0.00 60471.44 \n",
"13 71750.00 0.00 1975000.00 35792.38 \n",
"14 33000.00 12000.00 0.00 8499.61 \n",
"15 7350.00 24000.00 0.00 12978.55 \n",
"16 10000.00 0.00 0.00 0.00 \n",
"17 5000.00 20.00 0.00 26.40 \n",
"18 0.00 40000.00 0.00 491.18 \n",
"19 5000.00 0.00 0.00 250.00 \n",
"20 1000.00 20000.00 0.00 15935.20 \n",
"21 2000.00 279075.00 0.00 1790.49 \n",
"22 0.00 32000.00 0.00 6443.00 \n",
"\n",
" Other receipts Total Percent individual \n",
"0 32863.96 2.745417e+08 0.841980 \n",
"1 44028.81 2.354225e+08 0.979814 \n",
"2 8086.38 9.262435e+07 0.994458 \n",
"3 0.00 9.129811e+07 0.404826 \n",
"4 649470.63 6.424396e+07 0.987819 \n",
"5 595102.60 4.753170e+07 0.954349 \n",
"6 50000.00 3.541573e+07 0.948422 \n",
"7 9966.00 1.944645e+07 0.979789 \n",
"8 212501.08 1.225626e+07 0.834621 \n",
"9 39506.11 1.211957e+07 0.993917 \n",
"10 0.00 8.741586e+06 0.964657 \n",
"11 350529.12 8.678545e+06 0.946033 \n",
"12 0.00 6.338218e+06 0.721625 \n",
"13 8730.32 5.832710e+06 0.641458 \n",
"14 0.00 4.326804e+06 0.987635 \n",
"15 75237.29 1.484103e+06 0.919436 \n",
"16 0.00 1.442464e+06 0.993067 \n",
"17 0.00 1.363957e+06 0.996125 \n",
"18 0.00 8.621115e+05 0.724612 \n",
"19 0.00 7.768284e+05 0.993242 \n",
"20 0.00 5.472626e+05 0.932509 \n",
"21 0.00 3.872614e+05 0.269575 \n",
"22 0.00 2.202550e+05 0.825461 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SRC_URL = 'https://raw.githubusercontent.com/kiwidamien/StackedTurtles/master/content/style_jupyter/2016_contributions.csv'\n",
"contributions = pd.read_csv(SRC_URL)[desired_cols]\n",
"contributions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Throughout this, we will look at the changes that styling makes just to the first few rows of our dataframe."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.267978Z",
"start_time": "2019-11-05T08:43:20.255149Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Surname</th>\n",
" <th>Given Name</th>\n",
" <th>Party</th>\n",
" <th>Individual contributions</th>\n",
" <th>Committee contributions</th>\n",
" <th>Candidate contributions</th>\n",
" <th>Transfers</th>\n",
" <th>Offsets</th>\n",
" <th>Other receipts</th>\n",
" <th>Total</th>\n",
" <th>Percent individual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Clinton</td>\n",
" <td>Hillary</td>\n",
" <td>Democrat</td>\n",
" <td>2.311585e+08</td>\n",
" <td>1339118.32</td>\n",
" <td>997159.15</td>\n",
" <td>33940000.00</td>\n",
" <td>7073044.01</td>\n",
" <td>32863.96</td>\n",
" <td>2.745417e+08</td>\n",
" <td>0.841980</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sanders</td>\n",
" <td>Bernard</td>\n",
" <td>Democrat</td>\n",
" <td>2.306704e+08</td>\n",
" <td>5621.92</td>\n",
" <td>0.00</td>\n",
" <td>1500000.00</td>\n",
" <td>3202486.10</td>\n",
" <td>44028.81</td>\n",
" <td>2.354225e+08</td>\n",
" <td>0.979814</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cruz</td>\n",
" <td>Rafael</td>\n",
" <td>Republican</td>\n",
" <td>9.211106e+07</td>\n",
" <td>101095.14</td>\n",
" <td>0.00</td>\n",
" <td>250012.93</td>\n",
" <td>154093.55</td>\n",
" <td>8086.38</td>\n",
" <td>9.262435e+07</td>\n",
" <td>0.994458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Trump</td>\n",
" <td>Donald</td>\n",
" <td>Republican</td>\n",
" <td>3.695986e+07</td>\n",
" <td>0.00</td>\n",
" <td>49950643.36</td>\n",
" <td>2201313.93</td>\n",
" <td>2186237.76</td>\n",
" <td>0.00</td>\n",
" <td>9.129811e+07</td>\n",
" <td>0.404826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carson</td>\n",
" <td>Benjamin</td>\n",
" <td>Republican</td>\n",
" <td>6.346140e+07</td>\n",
" <td>5588.29</td>\n",
" <td>25000.00</td>\n",
" <td>0.00</td>\n",
" <td>102499.71</td>\n",
" <td>649470.63</td>\n",
" <td>6.424396e+07</td>\n",
" <td>0.987819</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Surname Given Name Party Individual contributions \\\n",
"0 Clinton Hillary Democrat 2.311585e+08 \n",
"1 Sanders Bernard Democrat 2.306704e+08 \n",
"2 Cruz Rafael Republican 9.211106e+07 \n",
"3 Trump Donald Republican 3.695986e+07 \n",
"4 Carson Benjamin Republican 6.346140e+07 \n",
"\n",
" Committee contributions Candidate contributions Transfers Offsets \\\n",
"0 1339118.32 997159.15 33940000.00 7073044.01 \n",
"1 5621.92 0.00 1500000.00 3202486.10 \n",
"2 101095.14 0.00 250012.93 154093.55 \n",
"3 0.00 49950643.36 2201313.93 2186237.76 \n",
"4 5588.29 25000.00 0.00 102499.71 \n",
"\n",
" Other receipts Total Percent individual \n",
"0 32863.96 2.745417e+08 0.841980 \n",
"1 44028.81 2.354225e+08 0.979814 \n",
"2 8086.38 9.262435e+07 0.994458 \n",
"3 0.00 9.129811e+07 0.404826 \n",
"4 649470.63 6.424396e+07 0.987819 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"contributions.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adjust the floats (all)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that we have a mix of scientific notation (`2.311e+08`), as well as the large numbers in the **Transfers** column that are very difficult to read. We can ask for **all** floats from a **dataframe** to be formatted as\n",
"\n",
"- floating point (no exponents),\n",
"- with two decimal places,\n",
"- and `,` separators between the hundreds, thousands, millions, etc\n",
"\n",
"Let's see this in action:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.280598Z",
"start_time": "2019-11-05T08:43:20.269891Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Surname</th>\n",
" <th>Given Name</th>\n",
" <th>Party</th>\n",
" <th>Individual contributions</th>\n",
" <th>Committee contributions</th>\n",
" <th>Candidate contributions</th>\n",
" <th>Transfers</th>\n",
" <th>Offsets</th>\n",
" <th>Other receipts</th>\n",
" <th>Total</th>\n",
" <th>Percent individual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Clinton</td>\n",
" <td>Hillary</td>\n",
" <td>Democrat</td>\n",
" <td>231,158,512.33</td>\n",
" <td>1,339,118.32</td>\n",
" <td>997,159.15</td>\n",
" <td>33,940,000.00</td>\n",
" <td>7,073,044.01</td>\n",
" <td>32,863.96</td>\n",
" <td>274,541,697.77</td>\n",
" <td>0.84</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sanders</td>\n",
" <td>Bernard</td>\n",
" <td>Democrat</td>\n",
" <td>230,670,405.61</td>\n",
" <td>5,621.92</td>\n",
" <td>0.00</td>\n",
" <td>1,500,000.00</td>\n",
" <td>3,202,486.10</td>\n",
" <td>44,028.81</td>\n",
" <td>235,422,542.44</td>\n",
" <td>0.98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cruz</td>\n",
" <td>Rafael</td>\n",
" <td>Republican</td>\n",
" <td>92,111,063.05</td>\n",
" <td>101,095.14</td>\n",
" <td>0.00</td>\n",
" <td>250,012.93</td>\n",
" <td>154,093.55</td>\n",
" <td>8,086.38</td>\n",
" <td>92,624,351.05</td>\n",
" <td>0.99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Trump</td>\n",
" <td>Donald</td>\n",
" <td>Republican</td>\n",
" <td>36,959,857.71</td>\n",
" <td>0.00</td>\n",
" <td>49,950,643.36</td>\n",
" <td>2,201,313.93</td>\n",
" <td>2,186,237.76</td>\n",
" <td>0.00</td>\n",
" <td>91,298,110.38</td>\n",
" <td>0.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carson</td>\n",
" <td>Benjamin</td>\n",
" <td>Republican</td>\n",
" <td>63,461,402.63</td>\n",
" <td>5,588.29</td>\n",
" <td>25,000.00</td>\n",
" <td>0.00</td>\n",
" <td>102,499.71</td>\n",
" <td>649,470.63</td>\n",
" <td>64,243,961.26</td>\n",
" <td>0.99</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Surname Given Name Party Individual contributions \\\n",
"0 Clinton Hillary Democrat 231,158,512.33 \n",
"1 Sanders Bernard Democrat 230,670,405.61 \n",
"2 Cruz Rafael Republican 92,111,063.05 \n",
"3 Trump Donald Republican 36,959,857.71 \n",
"4 Carson Benjamin Republican 63,461,402.63 \n",
"\n",
" Committee contributions Candidate contributions Transfers \\\n",
"0 1,339,118.32 997,159.15 33,940,000.00 \n",
"1 5,621.92 0.00 1,500,000.00 \n",
"2 101,095.14 0.00 250,012.93 \n",
"3 0.00 49,950,643.36 2,201,313.93 \n",
"4 5,588.29 25,000.00 0.00 \n",
"\n",
" Offsets Other receipts Total Percent individual \n",
"0 7,073,044.01 32,863.96 274,541,697.77 0.84 \n",
"1 3,202,486.10 44,028.81 235,422,542.44 0.98 \n",
"2 154,093.55 8,086.38 92,624,351.05 0.99 \n",
"3 2,186,237.76 0.00 91,298,110.38 0.40 \n",
"4 102,499.71 649,470.63 64,243,961.26 0.99 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.options.display.float_format = '{:,.2f}'.format\n",
"contributions.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is now the default for _all_ dataframes in this workbook, not just this one. This is because we have told Pandas to adjust its settings globally."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Overriding the percentages and dollars"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can override the global again, to put a `$` sign in front of all the floats, as follows:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.298260Z",
"start_time": "2019-11-05T08:43:20.284034Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Surname</th>\n",
" <th>Given Name</th>\n",
" <th>Party</th>\n",
" <th>Individual contributions</th>\n",
" <th>Committee contributions</th>\n",
" <th>Candidate contributions</th>\n",
" <th>Transfers</th>\n",
" <th>Offsets</th>\n",
" <th>Other receipts</th>\n",
" <th>Total</th>\n",
" <th>Percent individual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Clinton</td>\n",
" <td>Hillary</td>\n",
" <td>Democrat</td>\n",
" <td>$231,158,512.33</td>\n",
" <td>$1,339,118.32</td>\n",
" <td>$997,159.15</td>\n",
" <td>$33,940,000.00</td>\n",
" <td>$7,073,044.01</td>\n",
" <td>$32,863.96</td>\n",
" <td>$274,541,697.77</td>\n",
" <td>$0.84</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sanders</td>\n",
" <td>Bernard</td>\n",
" <td>Democrat</td>\n",
" <td>$230,670,405.61</td>\n",
" <td>$5,621.92</td>\n",
" <td>$0.00</td>\n",
" <td>$1,500,000.00</td>\n",
" <td>$3,202,486.10</td>\n",
" <td>$44,028.81</td>\n",
" <td>$235,422,542.44</td>\n",
" <td>$0.98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cruz</td>\n",
" <td>Rafael</td>\n",
" <td>Republican</td>\n",
" <td>$92,111,063.05</td>\n",
" <td>$101,095.14</td>\n",
" <td>$0.00</td>\n",
" <td>$250,012.93</td>\n",
" <td>$154,093.55</td>\n",
" <td>$8,086.38</td>\n",
" <td>$92,624,351.05</td>\n",
" <td>$0.99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Trump</td>\n",
" <td>Donald</td>\n",
" <td>Republican</td>\n",
" <td>$36,959,857.71</td>\n",
" <td>$0.00</td>\n",
" <td>$49,950,643.36</td>\n",
" <td>$2,201,313.93</td>\n",
" <td>$2,186,237.76</td>\n",
" <td>$0.00</td>\n",
" <td>$91,298,110.38</td>\n",
" <td>$0.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carson</td>\n",
" <td>Benjamin</td>\n",
" <td>Republican</td>\n",
" <td>$63,461,402.63</td>\n",
" <td>$5,588.29</td>\n",
" <td>$25,000.00</td>\n",
" <td>$0.00</td>\n",
" <td>$102,499.71</td>\n",
" <td>$649,470.63</td>\n",
" <td>$64,243,961.26</td>\n",
" <td>$0.99</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Surname Given Name Party Individual contributions \\\n",
"0 Clinton Hillary Democrat $231,158,512.33 \n",
"1 Sanders Bernard Democrat $230,670,405.61 \n",
"2 Cruz Rafael Republican $92,111,063.05 \n",
"3 Trump Donald Republican $36,959,857.71 \n",
"4 Carson Benjamin Republican $63,461,402.63 \n",
"\n",
" Committee contributions Candidate contributions Transfers \\\n",
"0 $1,339,118.32 $997,159.15 $33,940,000.00 \n",
"1 $5,621.92 $0.00 $1,500,000.00 \n",
"2 $101,095.14 $0.00 $250,012.93 \n",
"3 $0.00 $49,950,643.36 $2,201,313.93 \n",
"4 $5,588.29 $25,000.00 $0.00 \n",
"\n",
" Offsets Other receipts Total Percent individual \n",
"0 $7,073,044.01 $32,863.96 $274,541,697.77 $0.84 \n",
"1 $3,202,486.10 $44,028.81 $235,422,542.44 $0.98 \n",
"2 $154,093.55 $8,086.38 $92,624,351.05 $0.99 \n",
"3 $2,186,237.76 $0.00 $91,298,110.38 $0.40 \n",
"4 $102,499.71 $649,470.63 $64,243,961.26 $0.99 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# By default, everything here is in dollars\n",
"pd.options.display.float_format = '${:,.2f}'.format\n",
"\n",
"contributions.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the **Percent individual** also got a dollar sign. This isn't what we wanted! We can set the format column by column if we want, using the `.style` method:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.960992Z",
"start_time": "2019-11-05T08:43:20.299612Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
"</style><table id=\"T_5229b432_ffa8_11e9_b810_acde48001122\" ><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >Surname</th> <th class=\"col_heading level0 col1\" >Given Name</th> <th class=\"col_heading level0 col2\" >Party</th> <th class=\"col_heading level0 col3\" >Individual contributions</th> <th class=\"col_heading level0 col4\" >Committee contributions</th> <th class=\"col_heading level0 col5\" >Candidate contributions</th> <th class=\"col_heading level0 col6\" >Transfers</th> <th class=\"col_heading level0 col7\" >Offsets</th> <th class=\"col_heading level0 col8\" >Other receipts</th> <th class=\"col_heading level0 col9\" >Total</th> <th class=\"col_heading level0 col10\" >Percent individual</th> </tr></thead><tbody>\n",
" <tr>\n",
" <th id=\"T_5229b432_ffa8_11e9_b810_acde48001122level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col0\" class=\"data row0 col0\" >Clinton</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col1\" class=\"data row0 col1\" >Hillary</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col2\" class=\"data row0 col2\" >Democrat</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col3\" class=\"data row0 col3\" >2.31159e+08</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col4\" class=\"data row0 col4\" >1.33912e+06</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col5\" class=\"data row0 col5\" >997159</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col6\" class=\"data row0 col6\" >3.394e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col7\" class=\"data row0 col7\" >7.07304e+06</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col8\" class=\"data row0 col8\" >32864</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col9\" class=\"data row0 col9\" >2.74542e+08</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row0_col10\" class=\"data row0 col10\" >84.20%</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_5229b432_ffa8_11e9_b810_acde48001122level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col0\" class=\"data row1 col0\" >Sanders</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col1\" class=\"data row1 col1\" >Bernard</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col2\" class=\"data row1 col2\" >Democrat</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col3\" class=\"data row1 col3\" >2.3067e+08</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col4\" class=\"data row1 col4\" >5621.92</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col5\" class=\"data row1 col5\" >0</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col6\" class=\"data row1 col6\" >1.5e+06</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col7\" class=\"data row1 col7\" >3.20249e+06</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col8\" class=\"data row1 col8\" >44028.8</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col9\" class=\"data row1 col9\" >2.35423e+08</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row1_col10\" class=\"data row1 col10\" >97.98%</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_5229b432_ffa8_11e9_b810_acde48001122level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col0\" class=\"data row2 col0\" >Cruz</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col1\" class=\"data row2 col1\" >Rafael</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col2\" class=\"data row2 col2\" >Republican</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col3\" class=\"data row2 col3\" >9.21111e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col4\" class=\"data row2 col4\" >101095</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col5\" class=\"data row2 col5\" >0</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col6\" class=\"data row2 col6\" >250013</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col7\" class=\"data row2 col7\" >154094</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col8\" class=\"data row2 col8\" >8086.38</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col9\" class=\"data row2 col9\" >9.26244e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row2_col10\" class=\"data row2 col10\" >99.45%</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_5229b432_ffa8_11e9_b810_acde48001122level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col0\" class=\"data row3 col0\" >Trump</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col1\" class=\"data row3 col1\" >Donald</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col2\" class=\"data row3 col2\" >Republican</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col3\" class=\"data row3 col3\" >3.69599e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col4\" class=\"data row3 col4\" >0</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col5\" class=\"data row3 col5\" >4.99506e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col6\" class=\"data row3 col6\" >2.20131e+06</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col7\" class=\"data row3 col7\" >2.18624e+06</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col8\" class=\"data row3 col8\" >0</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col9\" class=\"data row3 col9\" >9.12981e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row3_col10\" class=\"data row3 col10\" >40.48%</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_5229b432_ffa8_11e9_b810_acde48001122level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col0\" class=\"data row4 col0\" >Carson</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col1\" class=\"data row4 col1\" >Benjamin</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col2\" class=\"data row4 col2\" >Republican</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col3\" class=\"data row4 col3\" >6.34614e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col4\" class=\"data row4 col4\" >5588.29</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col5\" class=\"data row4 col5\" >25000</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col6\" class=\"data row4 col6\" >0</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col7\" class=\"data row4 col7\" >102500</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col8\" class=\"data row4 col8\" >649471</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col9\" class=\"data row4 col9\" >6.4244e+07</td>\n",
" <td id=\"T_5229b432_ffa8_11e9_b810_acde48001122row4_col10\" class=\"data row4 col10\" >98.78%</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x11f812400>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"format_dict = {\n",
" 'Percent individual': '{:,.2%}'\n",
"}\n",
"\n",
"# Note that format dict overwrites the default format\n",
"# Also note that after `.style` we no longer have a dataframe, so\n",
"# contributions.style.format(...).head()\n",
"# will result in an error!\n",
"contributions.head().style.format(format_dict)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that we have lost the dollar signs, and we have scientific notation back. That is because doing `.style` no longer returns a dataframe (instead it returns a `Styler` object), and the Pandas defaults only apply to _dataframes_. In particular, if we try running a dataframe method, such as `.head()` on the styler, it won't work:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.965214Z",
"start_time": "2019-11-05T08:43:20.962029Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error: 'Styler' object has no attribute 'head'\n"
]
}
],
"source": [
"try:\n",
" contributions.style.format(format_dict).head()\n",
"except AttributeError as e:\n",
" print(f\"Error: {e}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can check that the Pandas defaults persist by looking at a dataframe again (instead of a `Styler` object):"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.975064Z",
"start_time": "2019-11-05T08:43:20.966989Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Surname</th>\n",
" <th>Given Name</th>\n",
" <th>Party</th>\n",
" <th>Individual contributions</th>\n",
" <th>Committee contributions</th>\n",
" <th>Candidate contributions</th>\n",
" <th>Transfers</th>\n",
" <th>Offsets</th>\n",
" <th>Other receipts</th>\n",
" <th>Total</th>\n",
" <th>Percent individual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Clinton</td>\n",
" <td>Hillary</td>\n",
" <td>Democrat</td>\n",
" <td>$231,158,512.33</td>\n",
" <td>$1,339,118.32</td>\n",
" <td>$997,159.15</td>\n",
" <td>$33,940,000.00</td>\n",
" <td>$7,073,044.01</td>\n",
" <td>$32,863.96</td>\n",
" <td>$274,541,697.77</td>\n",
" <td>$0.84</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sanders</td>\n",
" <td>Bernard</td>\n",
" <td>Democrat</td>\n",
" <td>$230,670,405.61</td>\n",
" <td>$5,621.92</td>\n",
" <td>$0.00</td>\n",
" <td>$1,500,000.00</td>\n",
" <td>$3,202,486.10</td>\n",
" <td>$44,028.81</td>\n",
" <td>$235,422,542.44</td>\n",
" <td>$0.98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cruz</td>\n",
" <td>Rafael</td>\n",
" <td>Republican</td>\n",
" <td>$92,111,063.05</td>\n",
" <td>$101,095.14</td>\n",
" <td>$0.00</td>\n",
" <td>$250,012.93</td>\n",
" <td>$154,093.55</td>\n",
" <td>$8,086.38</td>\n",
" <td>$92,624,351.05</td>\n",
" <td>$0.99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Trump</td>\n",
" <td>Donald</td>\n",
" <td>Republican</td>\n",
" <td>$36,959,857.71</td>\n",
" <td>$0.00</td>\n",
" <td>$49,950,643.36</td>\n",
" <td>$2,201,313.93</td>\n",
" <td>$2,186,237.76</td>\n",
" <td>$0.00</td>\n",
" <td>$91,298,110.38</td>\n",
" <td>$0.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carson</td>\n",
" <td>Benjamin</td>\n",
" <td>Republican</td>\n",
" <td>$63,461,402.63</td>\n",
" <td>$5,588.29</td>\n",
" <td>$25,000.00</td>\n",
" <td>$0.00</td>\n",
" <td>$102,499.71</td>\n",
" <td>$649,470.63</td>\n",
" <td>$64,243,961.26</td>\n",
" <td>$0.99</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Surname Given Name Party Individual contributions \\\n",
"0 Clinton Hillary Democrat $231,158,512.33 \n",
"1 Sanders Bernard Democrat $230,670,405.61 \n",
"2 Cruz Rafael Republican $92,111,063.05 \n",
"3 Trump Donald Republican $36,959,857.71 \n",
"4 Carson Benjamin Republican $63,461,402.63 \n",
"\n",
" Committee contributions Candidate contributions Transfers \\\n",
"0 $1,339,118.32 $997,159.15 $33,940,000.00 \n",
"1 $5,621.92 $0.00 $1,500,000.00 \n",
"2 $101,095.14 $0.00 $250,012.93 \n",
"3 $0.00 $49,950,643.36 $2,201,313.93 \n",
"4 $5,588.29 $25,000.00 $0.00 \n",
"\n",
" Offsets Other receipts Total Percent individual \n",
"0 $7,073,044.01 $32,863.96 $274,541,697.77 $0.84 \n",
"1 $3,202,486.10 $44,028.81 $235,422,542.44 $0.98 \n",
"2 $154,093.55 $8,086.38 $92,624,351.05 $0.99 \n",
"3 $2,186,237.76 $0.00 $91,298,110.38 $0.40 \n",
"4 $102,499.71 $649,470.63 $64,243,961.26 $0.99 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# If we don't pass in a format, everything goes to the default\n",
"contributions.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the dollar signs are back (as well as, sadly, on the percentage column).\n",
"\n",
"If we use a format dictionary, we have to set the format on each column we want, or accept the defaults. Luckily, we have `select_dtypes`, which selects all columns of the type we are interested in. We can generate the dictionary with the default we want, and then override specific values.\n",
"\n",
"Here is this trick in action:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:20.990849Z",
"start_time": "2019-11-05T08:43:20.978355Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
"</style><table id=\"T_522e5258_ffa8_11e9_b810_acde48001122\" ><thead> <tr> <th class=\"col_heading level0 col0\" >Surname</th> <th class=\"col_heading level0 col1\" >Given Name</th> <th class=\"col_heading level0 col2\" >Party</th> <th class=\"col_heading level0 col3\" >Individual contributions</th> <th class=\"col_heading level0 col4\" >Committee contributions</th> <th class=\"col_heading level0 col5\" >Candidate contributions</th> <th class=\"col_heading level0 col6\" >Transfers</th> <th class=\"col_heading level0 col7\" >Offsets</th> <th class=\"col_heading level0 col8\" >Other receipts</th> <th class=\"col_heading level0 col9\" >Total</th> <th class=\"col_heading level0 col10\" >Percent individual</th> </tr></thead><tbody>\n",
" <tr>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col0\" class=\"data row0 col0\" >Clinton</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col1\" class=\"data row0 col1\" >Hillary</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col2\" class=\"data row0 col2\" >Democrat</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col3\" class=\"data row0 col3\" >$231,158,512.33</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col4\" class=\"data row0 col4\" >$1,339,118.32</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col5\" class=\"data row0 col5\" >$997,159.15</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col6\" class=\"data row0 col6\" >$33,940,000.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col7\" class=\"data row0 col7\" >$7,073,044.01</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col8\" class=\"data row0 col8\" >$32,863.96</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col9\" class=\"data row0 col9\" >$274,541,697.77</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row0_col10\" class=\"data row0 col10\" >84.2%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col0\" class=\"data row1 col0\" >Sanders</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col1\" class=\"data row1 col1\" >Bernard</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col2\" class=\"data row1 col2\" >Democrat</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col3\" class=\"data row1 col3\" >$230,670,405.61</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col4\" class=\"data row1 col4\" >$5,621.92</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col5\" class=\"data row1 col5\" >$0.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col6\" class=\"data row1 col6\" >$1,500,000.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col7\" class=\"data row1 col7\" >$3,202,486.10</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col8\" class=\"data row1 col8\" >$44,028.81</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col9\" class=\"data row1 col9\" >$235,422,542.44</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row1_col10\" class=\"data row1 col10\" >98.0%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col0\" class=\"data row2 col0\" >Cruz</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col1\" class=\"data row2 col1\" >Rafael</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col2\" class=\"data row2 col2\" >Republican</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col3\" class=\"data row2 col3\" >$92,111,063.05</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col4\" class=\"data row2 col4\" >$101,095.14</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col5\" class=\"data row2 col5\" >$0.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col6\" class=\"data row2 col6\" >$250,012.93</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col7\" class=\"data row2 col7\" >$154,093.55</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col8\" class=\"data row2 col8\" >$8,086.38</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col9\" class=\"data row2 col9\" >$92,624,351.05</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row2_col10\" class=\"data row2 col10\" >99.4%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col0\" class=\"data row3 col0\" >Trump</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col1\" class=\"data row3 col1\" >Donald</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col2\" class=\"data row3 col2\" >Republican</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col3\" class=\"data row3 col3\" >$36,959,857.71</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col4\" class=\"data row3 col4\" >$0.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col5\" class=\"data row3 col5\" >$49,950,643.36</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col6\" class=\"data row3 col6\" >$2,201,313.93</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col7\" class=\"data row3 col7\" >$2,186,237.76</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col8\" class=\"data row3 col8\" >$0.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col9\" class=\"data row3 col9\" >$91,298,110.38</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row3_col10\" class=\"data row3 col10\" >40.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col0\" class=\"data row4 col0\" >Carson</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col1\" class=\"data row4 col1\" >Benjamin</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col2\" class=\"data row4 col2\" >Republican</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col3\" class=\"data row4 col3\" >$63,461,402.63</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col4\" class=\"data row4 col4\" >$5,588.29</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col5\" class=\"data row4 col5\" >$25,000.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col6\" class=\"data row4 col6\" >$0.00</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col7\" class=\"data row4 col7\" >$102,499.71</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col8\" class=\"data row4 col8\" >$649,470.63</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col9\" class=\"data row4 col9\" >$64,243,961.26</td>\n",
" <td id=\"T_522e5258_ffa8_11e9_b810_acde48001122row4_col10\" class=\"data row4 col10\" >98.8%</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1208e7438>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Here is a trick to get the default\n",
"format_dict = {col_name: '${:,.2f}' for col_name in contributions.select_dtypes(float).columns}\n",
"# .. and now overwrite the percentage column\n",
"format_dict['Percent individual'] = '{:,.1%}'\n",
"\n",
"# Note the \".hide_index()\" method of Styler allows us to hide\n",
"# the index (which is meaningless in this case)\n",
"contributions.head().style.format(format_dict).hide_index()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Display surnames in caps (without changing underlying data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also change the style of string columns. For example, this is how we would change the _display_ of the surnames:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:21.002950Z",
"start_time": "2019-11-05T08:43:20.991983Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
"</style><table id=\"T_522f967c_ffa8_11e9_b810_acde48001122\" ><thead> <tr> <th class=\"col_heading level0 col0\" >Surname</th> <th class=\"col_heading level0 col1\" >Given Name</th> <th class=\"col_heading level0 col2\" >Party</th> <th class=\"col_heading level0 col3\" >Individual contributions</th> <th class=\"col_heading level0 col4\" >Committee contributions</th> <th class=\"col_heading level0 col5\" >Candidate contributions</th> <th class=\"col_heading level0 col6\" >Transfers</th> <th class=\"col_heading level0 col7\" >Offsets</th> <th class=\"col_heading level0 col8\" >Other receipts</th> <th class=\"col_heading level0 col9\" >Total</th> <th class=\"col_heading level0 col10\" >Percent individual</th> </tr></thead><tbody>\n",
" <tr>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col0\" class=\"data row0 col0\" >CLINTON</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col1\" class=\"data row0 col1\" >Hillary</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col2\" class=\"data row0 col2\" >Democrat</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col3\" class=\"data row0 col3\" >$231,158,512.33</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col4\" class=\"data row0 col4\" >$1,339,118.32</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col5\" class=\"data row0 col5\" >$997,159.15</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col6\" class=\"data row0 col6\" >$33,940,000.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col7\" class=\"data row0 col7\" >$7,073,044.01</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col8\" class=\"data row0 col8\" >$32,863.96</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col9\" class=\"data row0 col9\" >$274,541,697.77</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row0_col10\" class=\"data row0 col10\" >84.2%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col0\" class=\"data row1 col0\" >SANDERS</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col1\" class=\"data row1 col1\" >Bernard</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col2\" class=\"data row1 col2\" >Democrat</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col3\" class=\"data row1 col3\" >$230,670,405.61</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col4\" class=\"data row1 col4\" >$5,621.92</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col5\" class=\"data row1 col5\" >$0.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col6\" class=\"data row1 col6\" >$1,500,000.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col7\" class=\"data row1 col7\" >$3,202,486.10</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col8\" class=\"data row1 col8\" >$44,028.81</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col9\" class=\"data row1 col9\" >$235,422,542.44</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row1_col10\" class=\"data row1 col10\" >98.0%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col0\" class=\"data row2 col0\" >CRUZ</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col1\" class=\"data row2 col1\" >Rafael</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col2\" class=\"data row2 col2\" >Republican</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col3\" class=\"data row2 col3\" >$92,111,063.05</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col4\" class=\"data row2 col4\" >$101,095.14</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col5\" class=\"data row2 col5\" >$0.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col6\" class=\"data row2 col6\" >$250,012.93</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col7\" class=\"data row2 col7\" >$154,093.55</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col8\" class=\"data row2 col8\" >$8,086.38</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col9\" class=\"data row2 col9\" >$92,624,351.05</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row2_col10\" class=\"data row2 col10\" >99.4%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col0\" class=\"data row3 col0\" >TRUMP</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col1\" class=\"data row3 col1\" >Donald</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col2\" class=\"data row3 col2\" >Republican</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col3\" class=\"data row3 col3\" >$36,959,857.71</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col4\" class=\"data row3 col4\" >$0.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col5\" class=\"data row3 col5\" >$49,950,643.36</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col6\" class=\"data row3 col6\" >$2,201,313.93</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col7\" class=\"data row3 col7\" >$2,186,237.76</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col8\" class=\"data row3 col8\" >$0.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col9\" class=\"data row3 col9\" >$91,298,110.38</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row3_col10\" class=\"data row3 col10\" >40.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col0\" class=\"data row4 col0\" >CARSON</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col1\" class=\"data row4 col1\" >Benjamin</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col2\" class=\"data row4 col2\" >Republican</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col3\" class=\"data row4 col3\" >$63,461,402.63</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col4\" class=\"data row4 col4\" >$5,588.29</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col5\" class=\"data row4 col5\" >$25,000.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col6\" class=\"data row4 col6\" >$0.00</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col7\" class=\"data row4 col7\" >$102,499.71</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col8\" class=\"data row4 col8\" >$649,470.63</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col9\" class=\"data row4 col9\" >$64,243,961.26</td>\n",
" <td id=\"T_522f967c_ffa8_11e9_b810_acde48001122row4_col10\" class=\"data row4 col10\" >98.8%</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1208e7208>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"format_dict['Surname'] = lambda x: x.upper()\n",
"contributions.head().style.format(format_dict).hide_index()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note the surnames themselves haven't changed:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:21.017819Z",
"start_time": "2019-11-05T08:43:21.005642Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Surname</th>\n",
" <th>Given Name</th>\n",
" <th>Party</th>\n",
" <th>Individual contributions</th>\n",
" <th>Committee contributions</th>\n",
" <th>Candidate contributions</th>\n",
" <th>Transfers</th>\n",
" <th>Offsets</th>\n",
" <th>Other receipts</th>\n",
" <th>Total</th>\n",
" <th>Percent individual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Clinton</td>\n",
" <td>Hillary</td>\n",
" <td>Democrat</td>\n",
" <td>$231,158,512.33</td>\n",
" <td>$1,339,118.32</td>\n",
" <td>$997,159.15</td>\n",
" <td>$33,940,000.00</td>\n",
" <td>$7,073,044.01</td>\n",
" <td>$32,863.96</td>\n",
" <td>$274,541,697.77</td>\n",
" <td>$0.84</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sanders</td>\n",
" <td>Bernard</td>\n",
" <td>Democrat</td>\n",
" <td>$230,670,405.61</td>\n",
" <td>$5,621.92</td>\n",
" <td>$0.00</td>\n",
" <td>$1,500,000.00</td>\n",
" <td>$3,202,486.10</td>\n",
" <td>$44,028.81</td>\n",
" <td>$235,422,542.44</td>\n",
" <td>$0.98</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Cruz</td>\n",
" <td>Rafael</td>\n",
" <td>Republican</td>\n",
" <td>$92,111,063.05</td>\n",
" <td>$101,095.14</td>\n",
" <td>$0.00</td>\n",
" <td>$250,012.93</td>\n",
" <td>$154,093.55</td>\n",
" <td>$8,086.38</td>\n",
" <td>$92,624,351.05</td>\n",
" <td>$0.99</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Trump</td>\n",
" <td>Donald</td>\n",
" <td>Republican</td>\n",
" <td>$36,959,857.71</td>\n",
" <td>$0.00</td>\n",
" <td>$49,950,643.36</td>\n",
" <td>$2,201,313.93</td>\n",
" <td>$2,186,237.76</td>\n",
" <td>$0.00</td>\n",
" <td>$91,298,110.38</td>\n",
" <td>$0.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Carson</td>\n",
" <td>Benjamin</td>\n",
" <td>Republican</td>\n",
" <td>$63,461,402.63</td>\n",
" <td>$5,588.29</td>\n",
" <td>$25,000.00</td>\n",
" <td>$0.00</td>\n",
" <td>$102,499.71</td>\n",
" <td>$649,470.63</td>\n",
" <td>$64,243,961.26</td>\n",
" <td>$0.99</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Surname Given Name Party Individual contributions \\\n",
"0 Clinton Hillary Democrat $231,158,512.33 \n",
"1 Sanders Bernard Democrat $230,670,405.61 \n",
"2 Cruz Rafael Republican $92,111,063.05 \n",
"3 Trump Donald Republican $36,959,857.71 \n",
"4 Carson Benjamin Republican $63,461,402.63 \n",
"\n",
" Committee contributions Candidate contributions Transfers \\\n",
"0 $1,339,118.32 $997,159.15 $33,940,000.00 \n",
"1 $5,621.92 $0.00 $1,500,000.00 \n",
"2 $101,095.14 $0.00 $250,012.93 \n",
"3 $0.00 $49,950,643.36 $2,201,313.93 \n",
"4 $5,588.29 $25,000.00 $0.00 \n",
"\n",
" Offsets Other receipts Total Percent individual \n",
"0 $7,073,044.01 $32,863.96 $274,541,697.77 $0.84 \n",
"1 $3,202,486.10 $44,028.81 $235,422,542.44 $0.98 \n",
"2 $154,093.55 $8,086.38 $92,624,351.05 $0.99 \n",
"3 $2,186,237.76 $0.00 $91,298,110.38 $0.40 \n",
"4 $102,499.71 $649,470.63 $64,243,961.26 $0.99 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"contributions.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Set background color"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can even do things like change the background color depending on the value of the cell. The syntax for this is\n",
"```python\n",
"def some_func(value):\n",
" \"\"\"Function should return valid CSS as a string\n",
" e.g. the return string might be\n",
" '''background-color: <some CSS color name>;\n",
" color: <some CSS color name>;\n",
" font-size: <some number>pt;\n",
" '''\n",
" \"\"\"\n",
" ... \n",
"```\n",
"\n",
"Here we will implement a function, `party_color`, the will return a CSS string that changes the color of the cell based on the value of the string (`red` for Republican, `blue` for Democrats, `green` for the Greens, and `grey` for everyone else). "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:21.021875Z",
"start_time": "2019-11-05T08:43:21.019039Z"
}
},
"outputs": [],
"source": [
"def party_color_string(x):\n",
" if x == 'Democrat':\n",
" return 'blue'\n",
" if x == 'Republican':\n",
" return 'red'\n",
" if x == 'Green':\n",
" return 'green'\n",
" return 'grey'\n",
"\n",
"def party_color(x):\n",
" return f'background-color: {party_color_string(x)}; color: white'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function is then passed to `applymap` as follows:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2019-11-05T08:43:21.040664Z",
"start_time": "2019-11-05T08:43:21.023165Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
" #T_52357358_ffa8_11e9_b810_acde48001122row0_col2 {\n",
" background-color: blue;\n",
" color: white;\n",
" } #T_52357358_ffa8_11e9_b810_acde48001122row1_col2 {\n",
" background-color: blue;\n",
" color: white;\n",
" } #T_52357358_ffa8_11e9_b810_acde48001122row2_col2 {\n",
" background-color: red;\n",
" color: white;\n",
" } #T_52357358_ffa8_11e9_b810_acde48001122row3_col2 {\n",
" background-color: red;\n",
" color: white;\n",
" } #T_52357358_ffa8_11e9_b810_acde48001122row4_col2 {\n",
" background-color: red;\n",
" color: white;\n",
" }</style><table id=\"T_52357358_ffa8_11e9_b810_acde48001122\" ><thead> <tr> <th class=\"col_heading level0 col0\" >Surname</th> <th class=\"col_heading level0 col1\" >Given Name</th> <th class=\"col_heading level0 col2\" >Party</th> <th class=\"col_heading level0 col3\" >Individual contributions</th> <th class=\"col_heading level0 col4\" >Committee contributions</th> <th class=\"col_heading level0 col5\" >Candidate contributions</th> <th class=\"col_heading level0 col6\" >Transfers</th> <th class=\"col_heading level0 col7\" >Offsets</th> <th class=\"col_heading level0 col8\" >Other receipts</th> <th class=\"col_heading level0 col9\" >Total</th> <th class=\"col_heading level0 col10\" >Percent individual</th> </tr></thead><tbody>\n",
" <tr>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col0\" class=\"data row0 col0\" >CLINTON</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col1\" class=\"data row0 col1\" >Hillary</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col2\" class=\"data row0 col2\" >Democrat</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col3\" class=\"data row0 col3\" >$231,158,512.33</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col4\" class=\"data row0 col4\" >$1,339,118.32</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col5\" class=\"data row0 col5\" >$997,159.15</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col6\" class=\"data row0 col6\" >$33,940,000.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col7\" class=\"data row0 col7\" >$7,073,044.01</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col8\" class=\"data row0 col8\" >$32,863.96</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col9\" class=\"data row0 col9\" >$274,541,697.77</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row0_col10\" class=\"data row0 col10\" >84.2%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col0\" class=\"data row1 col0\" >SANDERS</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col1\" class=\"data row1 col1\" >Bernard</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col2\" class=\"data row1 col2\" >Democrat</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col3\" class=\"data row1 col3\" >$230,670,405.61</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col4\" class=\"data row1 col4\" >$5,621.92</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col5\" class=\"data row1 col5\" >$0.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col6\" class=\"data row1 col6\" >$1,500,000.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col7\" class=\"data row1 col7\" >$3,202,486.10</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col8\" class=\"data row1 col8\" >$44,028.81</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col9\" class=\"data row1 col9\" >$235,422,542.44</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row1_col10\" class=\"data row1 col10\" >98.0%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col0\" class=\"data row2 col0\" >CRUZ</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col1\" class=\"data row2 col1\" >Rafael</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col2\" class=\"data row2 col2\" >Republican</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col3\" class=\"data row2 col3\" >$92,111,063.05</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col4\" class=\"data row2 col4\" >$101,095.14</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col5\" class=\"data row2 col5\" >$0.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col6\" class=\"data row2 col6\" >$250,012.93</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col7\" class=\"data row2 col7\" >$154,093.55</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col8\" class=\"data row2 col8\" >$8,086.38</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col9\" class=\"data row2 col9\" >$92,624,351.05</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row2_col10\" class=\"data row2 col10\" >99.4%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col0\" class=\"data row3 col0\" >TRUMP</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col1\" class=\"data row3 col1\" >Donald</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col2\" class=\"data row3 col2\" >Republican</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col3\" class=\"data row3 col3\" >$36,959,857.71</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col4\" class=\"data row3 col4\" >$0.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col5\" class=\"data row3 col5\" >$49,950,643.36</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col6\" class=\"data row3 col6\" >$2,201,313.93</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col7\" class=\"data row3 col7\" >$2,186,237.76</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col8\" class=\"data row3 col8\" >$0.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col9\" class=\"data row3 col9\" >$91,298,110.38</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row3_col10\" class=\"data row3 col10\" >40.5%</td>\n",
" </tr>\n",
" <tr>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col0\" class=\"data row4 col0\" >CARSON</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col1\" class=\"data row4 col1\" >Benjamin</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col2\" class=\"data row4 col2\" >Republican</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col3\" class=\"data row4 col3\" >$63,461,402.63</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col4\" class=\"data row4 col4\" >$5,588.29</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col5\" class=\"data row4 col5\" >$25,000.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col6\" class=\"data row4 col6\" >$0.00</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col7\" class=\"data row4 col7\" >$102,499.71</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col8\" class=\"data row4 col8\" >$649,470.63</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col9\" class=\"data row4 col9\" >$64,243,961.26</td>\n",
" <td id=\"T_52357358_ffa8_11e9_b810_acde48001122row4_col10\" class=\"data row4 col10\" >98.8%</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1209629e8>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(contributions.head()\n",
" .style\n",
" .format(format_dict)\n",
" .applymap(party_color, subset=['Party'])\n",
" .hide_index()\n",
")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment