Skip to content

Instantly share code, notes, and snippets.

@snippsat
Last active June 17, 2019 15:24
Show Gist options
  • Save snippsat/a19ea94c7582cd0888f3773d4fa6fe81 to your computer and use it in GitHub Desktop.
Save snippsat/a19ea94c7582cd0888f3773d4fa6fe81 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"#from tabulate import tabulate\n",
"\n",
"res = requests.get(\"http://web.archive.org/web/20070701133815/http://www.bbmf.co.uk/september07.html\")\n",
"soup = BeautifulSoup(res.content,'lxml')\n",
"table = soup.find_all('table')[0]\n",
"\n",
"df = pd.read_html(str(table))\n",
"#print( tabulate(df[0], headers='keys', tablefmt='psql') )"
]
},
{
"cell_type": "code",
"execution_count": 49,
"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>Date</th>\n",
" <th>Location</th>\n",
" <th>Lancaster</th>\n",
" <th>Spitfire</th>\n",
" <th>Hurricane</th>\n",
" <th>Dakota</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Fort Nelson</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>Lydd - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NaN</td>\n",
" <td>Shackerstone - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>NaN</td>\n",
" <td>Rye Meadows</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>NaN</td>\n",
" <td>Alfrick</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2</td>\n",
" <td>Lydd - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>NaN</td>\n",
" <td>Chart Sutton</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>NaN</td>\n",
" <td>Gedling</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>NaN</td>\n",
" <td>Ludford Magna</td>\n",
" <td>L</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>NaN</td>\n",
" <td>Elvington</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>NaN</td>\n",
" <td>Headingly Campus</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>NaN</td>\n",
" <td>Darley</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>7</td>\n",
" <td>RAF Wittering</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>NaN</td>\n",
" <td>RAF Honington</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>NaN</td>\n",
" <td>RAF Leeming</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Location Lancaster Spitfire Hurricane Dakota\n",
"2 1 Fort Nelson NaN S NaN NaN\n",
"3 NaN Lydd - Display L S H NaN\n",
"4 NaN Shackerstone - Display NaN S NaN NaN\n",
"5 NaN Rye Meadows NaN S NaN NaN\n",
"6 NaN Alfrick NaN S NaN NaN\n",
"7 2 Lydd - Display L S H NaN\n",
"8 NaN Chart Sutton NaN S H NaN\n",
"9 NaN Gedling NaN S H NaN\n",
"10 NaN Ludford Magna L NaN NaN NaN\n",
"11 NaN Elvington NaN NaN NaN D\n",
"12 NaN Headingly Campus NaN NaN NaN D\n",
"13 NaN Darley L S NaN NaN\n",
"14 7 RAF Wittering NaN S NaN NaN\n",
"15 NaN RAF Honington NaN S NaN NaN\n",
"16 NaN RAF Leeming NaN S NaN NaN"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Clean up,put index(Date location...) at top,delete 2 first row\n",
"df = df[1]\n",
"df = df.rename(columns=df.iloc[0])\n",
"df = df.iloc[2:]\n",
"df.head(15)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"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>Date</th>\n",
" <th>Location</th>\n",
" <th>Lancaster</th>\n",
" <th>Spitfire</th>\n",
" <th>Hurricane</th>\n",
" <th>Dakota</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>Lydd - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2</td>\n",
" <td>Lydd - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>NaN</td>\n",
" <td>Duxford - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>NaN</td>\n",
" <td>Duxford - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>15</td>\n",
" <td>Middle Wallop - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>NaN</td>\n",
" <td>Shoreham - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>NaN</td>\n",
" <td>Chichester</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>NaN</td>\n",
" <td>Shoreham - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Location Lancaster Spitfire Hurricane Dakota\n",
"3 NaN Lydd - Display L S H NaN\n",
"7 2 Lydd - Display L S H NaN\n",
"24 NaN Duxford - Display L S H NaN\n",
"29 NaN Duxford - Display L S H NaN\n",
"52 15 Middle Wallop - Display L S H NaN\n",
"53 NaN Shoreham - Display L S H NaN\n",
"56 NaN Chichester L S H NaN\n",
"66 NaN Shoreham - Display L S H NaN"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Lydd - Display. And that only, had the Spitfire Hurricane and Dakota booked\n",
"# Here Lydd -- Spitfire Hurricane,there where none where all where booked\n",
"lydd = df[(df['Lancaster'] == \"L\") & (df['Spitfire'] == 'S') & (df['Hurricane'] == 'H')]\n",
"lydd"
]
},
{
"cell_type": "code",
"execution_count": 61,
"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>Date</th>\n",
" <th>Location</th>\n",
" <th>Lancaster</th>\n",
" <th>Spitfire</th>\n",
" <th>Hurricane</th>\n",
" <th>Dakota</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>Lydd - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2</td>\n",
" <td>Lydd - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>NaN</td>\n",
" <td>Chart Sutton</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>NaN</td>\n",
" <td>Gedling</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>NaN</td>\n",
" <td>Duxford - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>NaN</td>\n",
" <td>Faldingworth</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>NaN</td>\n",
" <td>Donington Park</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>NaN</td>\n",
" <td>Cliveden</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>NaN</td>\n",
" <td>Duxford - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>NaN</td>\n",
" <td>Cliveden</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>NaN</td>\n",
" <td>Kemble - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>NaN</td>\n",
" <td>Donington Park</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>12</td>\n",
" <td>Odiham</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>13</td>\n",
" <td>Guernsey - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>NaN</td>\n",
" <td>Jersey - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>15</td>\n",
" <td>Middle Wallop - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>NaN</td>\n",
" <td>Shoreham - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>NaN</td>\n",
" <td>Chichester</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>NaN</td>\n",
" <td>Bentley Priory - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>NaN</td>\n",
" <td>Little Casterton</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>NaN</td>\n",
" <td>Shoreham - Display</td>\n",
" <td>L</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>NaN</td>\n",
" <td>Newhaven Fort</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>NaN</td>\n",
" <td>Staplehurst</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>NaN</td>\n",
" <td>Weald of Kent</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>NaN</td>\n",
" <td>Hanley Stoke on Trent</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>NaN</td>\n",
" <td>Southport - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>D</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>23</td>\n",
" <td>Southport - Display</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>H</td>\n",
" <td>D</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Location Lancaster Spitfire Hurricane Dakota\n",
"3 NaN Lydd - Display L S H NaN\n",
"7 2 Lydd - Display L S H NaN\n",
"8 NaN Chart Sutton NaN S H NaN\n",
"9 NaN Gedling NaN S H NaN\n",
"24 NaN Duxford - Display L S H NaN\n",
"25 NaN Faldingworth NaN S H NaN\n",
"26 NaN Donington Park NaN S H NaN\n",
"27 NaN Cliveden NaN S H NaN\n",
"29 NaN Duxford - Display L S H NaN\n",
"31 NaN Cliveden NaN S H NaN\n",
"32 NaN Kemble - Display NaN S H NaN\n",
"33 NaN Donington Park NaN S H NaN\n",
"40 12 Odiham NaN S H D\n",
"42 13 Guernsey - Display NaN S H D\n",
"43 NaN Jersey - Display NaN S H D\n",
"52 15 Middle Wallop - Display L S H NaN\n",
"53 NaN Shoreham - Display L S H NaN\n",
"56 NaN Chichester L S H NaN\n",
"61 NaN Bentley Priory - Display NaN S H NaN\n",
"62 NaN Little Casterton NaN S H NaN\n",
"66 NaN Shoreham - Display L S H NaN\n",
"67 NaN Newhaven Fort NaN S H NaN\n",
"68 NaN Staplehurst NaN S H NaN\n",
"69 NaN Weald of Kent NaN S H NaN\n",
"86 NaN Hanley Stoke on Trent NaN S H D\n",
"87 NaN Southport - Display NaN S H D\n",
"88 23 Southport - Display NaN S H D"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Here with \"or\" | Hurricane\n",
"lydd = df[(df['Lancaster'] == \"L\") & (df['Spitfire'] == 'S') & (df['Hurricane'] == 'H') | (df['Hurricane'] == 'H')]\n",
"lydd"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment