Skip to content

Instantly share code, notes, and snippets.

@janduplessis883
Created May 2, 2023 13:12
Show Gist options
  • Save janduplessis883/51cd3e5fc8db9ed38c3104f746fa85f1 to your computer and use it in GitHub Desktop.
Save janduplessis883/51cd3e5fc8db9ed38c3104f746fa85f1 to your computer and use it in GitHub Desktop.
4 New Pandas Function to use .query() .nlargest() .groupby() and .cut()
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "11ccb4de",
"metadata": {},
"source": [
"# New Pandas Function you should know\n",
"from this [YouTube video](https://youtu.be/TYTPThKKHOQ)\n",
"\n",
"## `.query()`, `nlargest()`, `groupby()` & `.cut()`"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2a8a88f7",
"metadata": {
"id": "4950c5a1-2702-4b37-889b-4f1face12b39"
},
"outputs": [],
"source": [
"# Importing default Libraries\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd \n",
"import numpy as np\n",
"import seaborn as sns\n",
"import warnings\n",
"import sketch\n",
"\n",
"# Hi-resolution Plots and Matplotlib inline\n",
"%matplotlib inline\n",
"\n",
"# Set the maximum number of rows and columns to be displayed\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "031d126e",
"metadata": {
"id": "eba8b4ff-251c-4c1a-8187-6dd16dde1a45"
},
"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>total_bill</th>\n",
" <th>tip</th>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th>day</th>\n",
" <th>time</th>\n",
" <th>size</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>16.99</td>\n",
" <td>1.01</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10.34</td>\n",
" <td>1.66</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>21.01</td>\n",
" <td>3.50</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>23.68</td>\n",
" <td>3.31</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>24.59</td>\n",
" <td>3.61</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"0 16.99 1.01 Female No Sun Dinner 2\n",
"1 10.34 1.66 Male No Sun Dinner 3\n",
"2 21.01 3.50 Male No Sun Dinner 3\n",
"3 23.68 3.31 Male No Sun Dinner 2\n",
"4 24.59 3.61 Female No Sun Dinner 4"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_csv('../jan-datasets/tips.csv')\n",
"data.head()"
]
},
{
"cell_type": "markdown",
"id": "3db51210",
"metadata": {},
"source": [
"## Filtering Data with `.query()` function"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "940c2a1b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th>day</th>\n",
" <th>time</th>\n",
" <th>size</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10.34</td>\n",
" <td>1.66</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>15.04</td>\n",
" <td>1.96</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>10.27</td>\n",
" <td>1.71</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>15.42</td>\n",
" <td>1.57</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>9.55</td>\n",
" <td>1.45</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>9.68</td>\n",
" <td>1.32</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>9.94</td>\n",
" <td>1.56</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>11.24</td>\n",
" <td>1.76</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>11.02</td>\n",
" <td>1.98</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>12.02</td>\n",
" <td>1.97</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>10.51</td>\n",
" <td>1.25</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>12.03</td>\n",
" <td>1.50</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Fri</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>12.46</td>\n",
" <td>1.50</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Fri</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>15.36</td>\n",
" <td>1.64</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>8.52</td>\n",
" <td>1.48</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>130</th>\n",
" <td>19.08</td>\n",
" <td>1.50</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>9.78</td>\n",
" <td>1.73</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>190</th>\n",
" <td>15.69</td>\n",
" <td>1.50</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>195</th>\n",
" <td>7.56</td>\n",
" <td>1.44</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>217</th>\n",
" <td>11.59</td>\n",
" <td>1.50</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>218</th>\n",
" <td>7.74</td>\n",
" <td>1.44</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>222</th>\n",
" <td>8.58</td>\n",
" <td>1.92</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Fri</td>\n",
" <td>Lunch</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>224</th>\n",
" <td>13.42</td>\n",
" <td>1.58</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Fri</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>233</th>\n",
" <td>10.77</td>\n",
" <td>1.47</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>235</th>\n",
" <td>10.07</td>\n",
" <td>1.25</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>236</th>\n",
" <td>12.60</td>\n",
" <td>1.00</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>237</th>\n",
" <td>32.83</td>\n",
" <td>1.17</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>242</th>\n",
" <td>17.82</td>\n",
" <td>1.75</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"1 10.34 1.66 Male No Sun Dinner 3\n",
"8 15.04 1.96 Male No Sun Dinner 2\n",
"10 10.27 1.71 Male No Sun Dinner 2\n",
"12 15.42 1.57 Male No Sun Dinner 2\n",
"30 9.55 1.45 Male No Sat Dinner 2\n",
"43 9.68 1.32 Male No Sun Dinner 2\n",
"53 9.94 1.56 Male No Sun Dinner 2\n",
"58 11.24 1.76 Male Yes Sat Dinner 2\n",
"62 11.02 1.98 Male Yes Sat Dinner 2\n",
"70 12.02 1.97 Male No Sat Dinner 2\n",
"75 10.51 1.25 Male No Sat Dinner 2\n",
"97 12.03 1.50 Male Yes Fri Dinner 2\n",
"99 12.46 1.50 Male No Fri Dinner 2\n",
"105 15.36 1.64 Male Yes Sat Dinner 2\n",
"126 8.52 1.48 Male No Thur Lunch 2\n",
"130 19.08 1.50 Male No Thur Lunch 2\n",
"148 9.78 1.73 Male No Thur Lunch 2\n",
"190 15.69 1.50 Male Yes Sun Dinner 2\n",
"195 7.56 1.44 Male No Thur Lunch 2\n",
"217 11.59 1.50 Male Yes Sat Dinner 2\n",
"218 7.74 1.44 Male Yes Sat Dinner 2\n",
"222 8.58 1.92 Male Yes Fri Lunch 1\n",
"224 13.42 1.58 Male Yes Fri Lunch 2\n",
"233 10.77 1.47 Male No Sat Dinner 2\n",
"235 10.07 1.25 Male No Sat Dinner 2\n",
"236 12.60 1.00 Male Yes Sat Dinner 2\n",
"237 32.83 1.17 Male Yes Sat Dinner 2\n",
"242 17.82 1.75 Male No Sat Dinner 2"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.query('sex==\"Male\" & tip<2').head(30)"
]
},
{
"cell_type": "markdown",
"id": "17f4b8fe",
"metadata": {},
"source": [
"with **variables** in a list that you pass to the query function"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "db2aaadf",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th>day</th>\n",
" <th>time</th>\n",
" <th>size</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10.34</td>\n",
" <td>1.66</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>21.01</td>\n",
" <td>3.50</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>25.29</td>\n",
" <td>4.71</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>26.88</td>\n",
" <td>3.12</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>18.43</td>\n",
" <td>3.00</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>16.29</td>\n",
" <td>3.71</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>20.65</td>\n",
" <td>3.35</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>39.42</td>\n",
" <td>7.58</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>17.81</td>\n",
" <td>2.34</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>18.35</td>\n",
" <td>2.50</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"1 10.34 1.66 Male No Sun Dinner 3\n",
"2 21.01 3.50 Male No Sun Dinner 3\n",
"5 25.29 4.71 Male No Sun Dinner 4\n",
"7 26.88 3.12 Male No Sun Dinner 4\n",
"13 18.43 3.00 Male No Sun Dinner 4\n",
"17 16.29 3.71 Male No Sun Dinner 3\n",
"19 20.65 3.35 Male No Sat Dinner 3\n",
"23 39.42 7.58 Male No Sat Dinner 4\n",
"25 17.81 2.34 Male No Sat Dinner 4\n",
"31 18.35 2.50 Male No Sat Dinner 4"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"days = [\"Sat\", \"Sun\" ]\n",
"data.query('sex==\"Male\" & size>2 & day==@days').head (10)"
]
},
{
"cell_type": "markdown",
"id": "874b89b0",
"metadata": {},
"source": [
"## `nlargest()` and `nsmallest()`"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "fdc89396",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th>day</th>\n",
" <th>time</th>\n",
" <th>size</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>170</th>\n",
" <td>50.81</td>\n",
" <td>10.00</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>212</th>\n",
" <td>48.33</td>\n",
" <td>9.00</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>39.42</td>\n",
" <td>7.58</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>48.27</td>\n",
" <td>6.73</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>141</th>\n",
" <td>34.30</td>\n",
" <td>6.70</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>183</th>\n",
" <td>23.17</td>\n",
" <td>6.50</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>214</th>\n",
" <td>28.17</td>\n",
" <td>6.50</td>\n",
" <td>Female</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>32.40</td>\n",
" <td>6.00</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>239</th>\n",
" <td>29.03</td>\n",
" <td>5.92</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>24.71</td>\n",
" <td>5.85</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"170 50.81 10.00 Male Yes Sat Dinner 3\n",
"212 48.33 9.00 Male No Sat Dinner 4\n",
"23 39.42 7.58 Male No Sat Dinner 4\n",
"59 48.27 6.73 Male No Sat Dinner 4\n",
"141 34.30 6.70 Male No Thur Lunch 6\n",
"183 23.17 6.50 Male Yes Sun Dinner 4\n",
"214 28.17 6.50 Female Yes Sat Dinner 3\n",
"47 32.40 6.00 Male No Sun Dinner 4\n",
"239 29.03 5.92 Male No Sat Dinner 3\n",
"88 24.71 5.85 Male No Thur Lunch 2"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.nlargest(10, 'tip')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "481b3a41",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th>day</th>\n",
" <th>time</th>\n",
" <th>size</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>3.07</td>\n",
" <td>1.00</td>\n",
" <td>Female</td>\n",
" <td>Yes</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>5.75</td>\n",
" <td>1.00</td>\n",
" <td>Female</td>\n",
" <td>Yes</td>\n",
" <td>Fri</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>111</th>\n",
" <td>7.25</td>\n",
" <td>1.00</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sat</td>\n",
" <td>Dinner</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>172</th>\n",
" <td>7.25</td>\n",
" <td>5.15</td>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>149</th>\n",
" <td>7.51</td>\n",
" <td>2.00</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Thur</td>\n",
" <td>Lunch</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"67 3.07 1.00 Female Yes Sat Dinner 1\n",
"92 5.75 1.00 Female Yes Fri Dinner 2\n",
"111 7.25 1.00 Female No Sat Dinner 1\n",
"172 7.25 5.15 Male Yes Sun Dinner 2\n",
"149 7.51 2.00 Male No Thur Lunch 2"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.nsmallest(5, 'total_bill')"
]
},
{
"cell_type": "markdown",
"id": "91af87e8",
"metadata": {
"heading_collapsed": true
},
"source": [
"## `groupby()` Function with all the variations"
]
},
{
"cell_type": "markdown",
"id": "225b46e1",
"metadata": {
"hidden": true
},
"source": [
"### with single column"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "6accd89a",
"metadata": {
"hidden": true
},
"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>total_bill</th>\n",
" <th>tip</th>\n",
" <th>size</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Female</th>\n",
" <td>18.056897</td>\n",
" <td>2.833448</td>\n",
" <td>2.459770</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Male</th>\n",
" <td>20.744076</td>\n",
" <td>3.089618</td>\n",
" <td>2.630573</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip size\n",
"sex \n",
"Female 18.056897 2.833448 2.459770\n",
"Male 20.744076 3.089618 2.630573"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby(by='sex').mean()"
]
},
{
"cell_type": "markdown",
"id": "c20a78b2",
"metadata": {
"hidden": true
},
"source": [
"### with multiple column"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c29a5919",
"metadata": {
"hidden": true
},
"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></th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" <th>size</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Female</th>\n",
" <th>No</th>\n",
" <td>18.105185</td>\n",
" <td>2.773519</td>\n",
" <td>2.592593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yes</th>\n",
" <td>17.977879</td>\n",
" <td>2.931515</td>\n",
" <td>2.242424</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Male</th>\n",
" <th>No</th>\n",
" <td>19.791237</td>\n",
" <td>3.113402</td>\n",
" <td>2.711340</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yes</th>\n",
" <td>22.284500</td>\n",
" <td>3.051167</td>\n",
" <td>2.500000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip size\n",
"sex smoker \n",
"Female No 18.105185 2.773519 2.592593\n",
" Yes 17.977879 2.931515 2.242424\n",
"Male No 19.791237 3.113402 2.711340\n",
" Yes 22.284500 3.051167 2.500000"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby(by=['sex','smoker']).mean()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "692da81d",
"metadata": {
"hidden": true
},
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"2\" halign=\"left\">total_bill</th>\n",
" <th colspan=\"2\" halign=\"left\">tip</th>\n",
" <th colspan=\"2\" halign=\"left\">size</th>\n",
" </tr>\n",
" <tr>\n",
" <th>smoker</th>\n",
" <th>No</th>\n",
" <th>Yes</th>\n",
" <th>No</th>\n",
" <th>Yes</th>\n",
" <th>No</th>\n",
" <th>Yes</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Female</th>\n",
" <td>18.105185</td>\n",
" <td>17.977879</td>\n",
" <td>2.773519</td>\n",
" <td>2.931515</td>\n",
" <td>2.592593</td>\n",
" <td>2.242424</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Male</th>\n",
" <td>19.791237</td>\n",
" <td>22.284500</td>\n",
" <td>3.113402</td>\n",
" <td>3.051167</td>\n",
" <td>2.711340</td>\n",
" <td>2.500000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip size \n",
"smoker No Yes No Yes No Yes\n",
"sex \n",
"Female 18.105185 17.977879 2.773519 2.931515 2.592593 2.242424\n",
"Male 19.791237 22.284500 3.113402 3.051167 2.711340 2.500000"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby(by=['sex','smoker']).mean().unstack()"
]
},
{
"cell_type": "markdown",
"id": "0ad5a015",
"metadata": {
"hidden": true
},
"source": [
"### `groupby()` with different <B>AGGREGATION FUNCTION</b>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f099a510",
"metadata": {
"hidden": true
},
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th colspan=\"3\" halign=\"left\">total_bill</th>\n",
" <th colspan=\"3\" halign=\"left\">tip</th>\n",
" <th colspan=\"3\" halign=\"left\">size</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th>sum</th>\n",
" <th>max</th>\n",
" <th>mean</th>\n",
" <th>sum</th>\n",
" <th>max</th>\n",
" <th>mean</th>\n",
" <th>sum</th>\n",
" <th>max</th>\n",
" <th>mean</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Female</th>\n",
" <th>No</th>\n",
" <td>977.68</td>\n",
" <td>35.83</td>\n",
" <td>18.105185</td>\n",
" <td>149.77</td>\n",
" <td>5.2</td>\n",
" <td>2.773519</td>\n",
" <td>140</td>\n",
" <td>6</td>\n",
" <td>2.592593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yes</th>\n",
" <td>593.27</td>\n",
" <td>44.30</td>\n",
" <td>17.977879</td>\n",
" <td>96.74</td>\n",
" <td>6.5</td>\n",
" <td>2.931515</td>\n",
" <td>74</td>\n",
" <td>4</td>\n",
" <td>2.242424</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Male</th>\n",
" <th>No</th>\n",
" <td>1919.75</td>\n",
" <td>48.33</td>\n",
" <td>19.791237</td>\n",
" <td>302.00</td>\n",
" <td>9.0</td>\n",
" <td>3.113402</td>\n",
" <td>263</td>\n",
" <td>6</td>\n",
" <td>2.711340</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yes</th>\n",
" <td>1337.07</td>\n",
" <td>50.81</td>\n",
" <td>22.284500</td>\n",
" <td>183.07</td>\n",
" <td>10.0</td>\n",
" <td>3.051167</td>\n",
" <td>150</td>\n",
" <td>5</td>\n",
" <td>2.500000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip size \\\n",
" sum max mean sum max mean sum max \n",
"sex smoker \n",
"Female No 977.68 35.83 18.105185 149.77 5.2 2.773519 140 6 \n",
" Yes 593.27 44.30 17.977879 96.74 6.5 2.931515 74 4 \n",
"Male No 1919.75 48.33 19.791237 302.00 9.0 3.113402 263 6 \n",
" Yes 1337.07 50.81 22.284500 183.07 10.0 3.051167 150 5 \n",
"\n",
" \n",
" mean \n",
"sex smoker \n",
"Female No 2.592593 \n",
" Yes 2.242424 \n",
"Male No 2.711340 \n",
" Yes 2.500000 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby(by=['sex', 'smoker']).agg(['sum', 'max', 'mean'])"
]
},
{
"cell_type": "markdown",
"id": "15e1989f",
"metadata": {
"hidden": true
},
"source": [
"### farious Aggregation functions for individual columns"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "777e7053",
"metadata": {
"hidden": true
},
"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></th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Female</th>\n",
" <th>No</th>\n",
" <td>977.68</td>\n",
" <td>2.773519</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yes</th>\n",
" <td>593.27</td>\n",
" <td>2.931515</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Male</th>\n",
" <th>No</th>\n",
" <td>1919.75</td>\n",
" <td>3.113402</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Yes</th>\n",
" <td>1337.07</td>\n",
" <td>3.051167</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip\n",
"sex smoker \n",
"Female No 977.68 2.773519\n",
" Yes 593.27 2.931515\n",
"Male No 1919.75 3.113402\n",
" Yes 1337.07 3.051167"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"agg_criteria = {'total_bill': 'sum', 'tip': 'mean'}\n",
"data.groupby(by=['sex', 'smoker']).agg(agg_criteria)"
]
},
{
"cell_type": "markdown",
"id": "67435b32",
"metadata": {
"hidden": true
},
"source": [
"### flatten the dataframe with `as_index=False`"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "35c91e12",
"metadata": {
"hidden": true
},
"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>sex</th>\n",
" <th>smoker</th>\n",
" <th>total_bill</th>\n",
" <th>tip</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>977.68</td>\n",
" <td>2.773519</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Female</td>\n",
" <td>Yes</td>\n",
" <td>593.27</td>\n",
" <td>2.931515</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>1919.75</td>\n",
" <td>3.113402</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Male</td>\n",
" <td>Yes</td>\n",
" <td>1337.07</td>\n",
" <td>3.051167</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sex smoker total_bill tip\n",
"0 Female No 977.68 2.773519\n",
"1 Female Yes 593.27 2.931515\n",
"2 Male No 1919.75 3.113402\n",
"3 Male Yes 1337.07 3.051167"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby(by=['sex', 'smoker'], as_index=False).agg(agg_criteria)"
]
},
{
"cell_type": "markdown",
"id": "71743dd5",
"metadata": {
"heading_collapsed": true
},
"source": [
"## Pandas `.cut()` function"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "c54179ae",
"metadata": {
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data['tip'].hist()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "3b07c59d",
"metadata": {
"hidden": true
},
"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>total_bill</th>\n",
" <th>tip</th>\n",
" <th>sex</th>\n",
" <th>smoker</th>\n",
" <th>day</th>\n",
" <th>time</th>\n",
" <th>size</th>\n",
" <th>tip_category</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>16.99</td>\n",
" <td>1.01</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>small</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10.34</td>\n",
" <td>1.66</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" <td>small</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>21.01</td>\n",
" <td>3.50</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>3</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>23.68</td>\n",
" <td>3.31</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>24.59</td>\n",
" <td>3.61</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>25.29</td>\n",
" <td>4.71</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" <td>high</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>8.77</td>\n",
" <td>2.00</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>small</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>26.88</td>\n",
" <td>3.12</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>15.04</td>\n",
" <td>1.96</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>small</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>14.78</td>\n",
" <td>3.23</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>10.27</td>\n",
" <td>1.71</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>small</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>35.26</td>\n",
" <td>5.00</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" <td>high</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>15.42</td>\n",
" <td>1.57</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>small</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>18.43</td>\n",
" <td>3.00</td>\n",
" <td>Male</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>4</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>14.83</td>\n",
" <td>3.02</td>\n",
" <td>Female</td>\n",
" <td>No</td>\n",
" <td>Sun</td>\n",
" <td>Dinner</td>\n",
" <td>2</td>\n",
" <td>medium</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" total_bill tip sex smoker day time size tip_category\n",
"0 16.99 1.01 Female No Sun Dinner 2 small\n",
"1 10.34 1.66 Male No Sun Dinner 3 small\n",
"2 21.01 3.50 Male No Sun Dinner 3 medium\n",
"3 23.68 3.31 Male No Sun Dinner 2 medium\n",
"4 24.59 3.61 Female No Sun Dinner 4 medium\n",
"5 25.29 4.71 Male No Sun Dinner 4 high\n",
"6 8.77 2.00 Male No Sun Dinner 2 small\n",
"7 26.88 3.12 Male No Sun Dinner 4 medium\n",
"8 15.04 1.96 Male No Sun Dinner 2 small\n",
"9 14.78 3.23 Male No Sun Dinner 2 medium\n",
"10 10.27 1.71 Male No Sun Dinner 2 small\n",
"11 35.26 5.00 Female No Sun Dinner 4 high\n",
"12 15.42 1.57 Male No Sun Dinner 2 small\n",
"13 18.43 3.00 Male No Sun Dinner 4 medium\n",
"14 14.83 3.02 Female No Sun Dinner 2 medium"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bins = [0, 2, 4, 11] # if you don't want to use hard coded upper-limit use float('inf') or -float('inf') for the lower-bound limit\n",
"labels = ['small', 'medium', 'high']\n",
"data['tip_category'] = pd.cut(data['tip'], bins=bins, labels=labels)\n",
"data.head(15)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.6"
},
"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
},
"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": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment