mirror of
https://github.com/jsvine/pdfplumber.git
synced 2026-08-29 16:40:24 +08:00
760 lines
322 KiB
Plaintext
760 lines
322 KiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"# Demonstration of `pdfplumber`'s `extract_table` method.\n",
|
||
|
|
"\n",
|
||
|
|
"This notebook uses `pdfplumber` to extract data from an [California Worker Adjustment and Retraining Notification (WARN) report](../pdfs/ca-warn-report.pdf)."
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"### Import `pdfplumber`"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 1,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import pdfplumber"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"### Load the PDF"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 2,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"pdf = pdfplumber.open(\"../pdfs/ca-warn-report.pdf\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"### Get the first page"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 3,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false,
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"p0 = pdf.pages[0]"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"### Display the first page"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 4,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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\ncFpBE19/YG2/9to15+G
|
||
|
|
"text/plain": [
|
||
|
|
"<pdfplumber.display.PageImage at 0x105c8c908>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 4,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"im = p0.to_image()\n",
|
||
|
|
"im"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"### Use `.extract_table` to get the data from the largest table on the page"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 5,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"table = p0.extract_table()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"`.extract_table` returns a list of lists, with each inner list representing a row in the table. Here are the first three rows:"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 6,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/plain": [
|
||
|
|
"[['Notice Date',\n",
|
||
|
|
" 'Effective',\n",
|
||
|
|
" 'Received',\n",
|
||
|
|
" 'Company',\n",
|
||
|
|
" 'City',\n",
|
||
|
|
" 'No. Of',\n",
|
||
|
|
" 'Layoff/Closure'],\n",
|
||
|
|
" ['06/22/2015',\n",
|
||
|
|
" '0 3 / 2 5 / 2 0 16',\n",
|
||
|
|
" '0 7 / 0 1 / 2 0 15',\n",
|
||
|
|
" 'Maxim Integrated Product',\n",
|
||
|
|
" 'San Jose',\n",
|
||
|
|
" '150',\n",
|
||
|
|
" 'Closure Permanent'],\n",
|
||
|
|
" ['06/30/2015',\n",
|
||
|
|
" '0 8 / 2 9 / 2 0 15',\n",
|
||
|
|
" '0 7 / 0 1 / 2 0 15',\n",
|
||
|
|
" 'McGraw-Hill Education',\n",
|
||
|
|
" 'Monterey',\n",
|
||
|
|
" '137',\n",
|
||
|
|
" 'Layoff Unknown at this time']]"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 6,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"table[:3]"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## Basic cleanup\n",
|
||
|
|
"\n",
|
||
|
|
"We can use `pandas` to render the list as a DataFrame, and to remove the extra spaces within some of the dates."
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 7,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": true
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import pandas as pd"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 8,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": true
|
||
|
|
},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"df = pd.DataFrame(table[1:], columns=table[0])\n",
|
||
|
|
"for column in [\"Effective\", \"Received\"]:\n",
|
||
|
|
" df[column] = df[column].str.replace(\" \", \"\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 9,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"text/html": [
|
||
|
|
"<div>\n",
|
||
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||
|
|
" <thead>\n",
|
||
|
|
" <tr style=\"text-align: right;\">\n",
|
||
|
|
" <th></th>\n",
|
||
|
|
" <th>Notice Date</th>\n",
|
||
|
|
" <th>Effective</th>\n",
|
||
|
|
" <th>Received</th>\n",
|
||
|
|
" <th>Company</th>\n",
|
||
|
|
" <th>City</th>\n",
|
||
|
|
" <th>No. Of</th>\n",
|
||
|
|
" <th>Layoff/Closure</th>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" </thead>\n",
|
||
|
|
" <tbody>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>0</th>\n",
|
||
|
|
" <td>06/22/2015</td>\n",
|
||
|
|
" <td>03/25/2016</td>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>Maxim Integrated Product</td>\n",
|
||
|
|
" <td>San Jose</td>\n",
|
||
|
|
" <td>150</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>1</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>08/29/2015</td>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>McGraw-Hill Education</td>\n",
|
||
|
|
" <td>Monterey</td>\n",
|
||
|
|
" <td>137</td>\n",
|
||
|
|
" <td>Layoff Unknown at this time</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>2</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>08/30/2015</td>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>Long Beach Memorial Medical Center</td>\n",
|
||
|
|
" <td>Long Beach</td>\n",
|
||
|
|
" <td>90</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>3</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>09/02/2015</td>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>Leidos</td>\n",
|
||
|
|
" <td>El Segundo</td>\n",
|
||
|
|
" <td>72</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>4</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>09/30/2016</td>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>Bosch Healthcare Systems, Inc.</td>\n",
|
||
|
|
" <td>Palo Alto</td>\n",
|
||
|
|
" <td>55</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>5</th>\n",
|
||
|
|
" <td>06/29/2015</td>\n",
|
||
|
|
" <td>09/01/2015</td>\n",
|
||
|
|
" <td>07/02/2015</td>\n",
|
||
|
|
" <td>Encompass Digital Media, Inc.</td>\n",
|
||
|
|
" <td>Los Angeles</td>\n",
|
||
|
|
" <td>41</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>6</th>\n",
|
||
|
|
" <td>07/02/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>07/02/2015</td>\n",
|
||
|
|
" <td>Alphatec Spine</td>\n",
|
||
|
|
" <td>Carlsbad</td>\n",
|
||
|
|
" <td>99</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>7</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>08/07/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>Symantec Corporation</td>\n",
|
||
|
|
" <td>Mountain View</td>\n",
|
||
|
|
" <td>60</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>8</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>08/31/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>Fusion Contacts Centers, LLC</td>\n",
|
||
|
|
" <td>Santa Maria</td>\n",
|
||
|
|
" <td>50</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>9</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>09/15/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>KLA-Tencor Corporation</td>\n",
|
||
|
|
" <td>Milpitas</td>\n",
|
||
|
|
" <td>213</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>10</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>Southern California Edison Company</td>\n",
|
||
|
|
" <td>San Clemente</td>\n",
|
||
|
|
" <td>100</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>11</th>\n",
|
||
|
|
" <td>07/02/2015</td>\n",
|
||
|
|
" <td>09/01/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>State Fish Company, Inc.</td>\n",
|
||
|
|
" <td>Wilmington</td>\n",
|
||
|
|
" <td>76</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>12</th>\n",
|
||
|
|
" <td>07/02/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>Boeing Company</td>\n",
|
||
|
|
" <td>Long Beach</td>\n",
|
||
|
|
" <td>56</td>\n",
|
||
|
|
" <td>Layoff Unknown at this time</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>13</th>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>Bridgepoint Education, Inc.</td>\n",
|
||
|
|
" <td>San Diego</td>\n",
|
||
|
|
" <td>7</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>14</th>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>Bridgepoint Education, Inc.</td>\n",
|
||
|
|
" <td>San Diego</td>\n",
|
||
|
|
" <td>15</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>15</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>06/29/2015</td>\n",
|
||
|
|
" <td>07/07/2015</td>\n",
|
||
|
|
" <td>BAE Systems</td>\n",
|
||
|
|
" <td>San Francisco</td>\n",
|
||
|
|
" <td>4</td>\n",
|
||
|
|
" <td>Layoff Temporary</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>16</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>06/29/2015</td>\n",
|
||
|
|
" <td>07/07/2015</td>\n",
|
||
|
|
" <td>BAE Systems</td>\n",
|
||
|
|
" <td>San Francisco</td>\n",
|
||
|
|
" <td>78</td>\n",
|
||
|
|
" <td>Layoff Temporary</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>17</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>09/07/2015</td>\n",
|
||
|
|
" <td>07/07/2015</td>\n",
|
||
|
|
" <td>Bay Bread LLC dba Bakery Los Angeles</td>\n",
|
||
|
|
" <td>San Fernando</td>\n",
|
||
|
|
" <td>50</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>18</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>09/25/2015</td>\n",
|
||
|
|
" <td>07/07/2015</td>\n",
|
||
|
|
" <td>Bay Bread LLC dba New French Bakery</td>\n",
|
||
|
|
" <td>South San</td>\n",
|
||
|
|
" <td>121</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>19</th>\n",
|
||
|
|
" <td>07/02/2015</td>\n",
|
||
|
|
" <td>06/12/2015</td>\n",
|
||
|
|
" <td>07/07/2015</td>\n",
|
||
|
|
" <td>Hewlett-Packard Company</td>\n",
|
||
|
|
" <td>Palo Alto</td>\n",
|
||
|
|
" <td>65</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>20</th>\n",
|
||
|
|
" <td>07/08/2015</td>\n",
|
||
|
|
" <td>09/06/2015</td>\n",
|
||
|
|
" <td>07/08/2015</td>\n",
|
||
|
|
" <td>Microsoft Corporation</td>\n",
|
||
|
|
" <td>San Diego</td>\n",
|
||
|
|
" <td>129</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>21</th>\n",
|
||
|
|
" <td>06/25/2015</td>\n",
|
||
|
|
" <td>10/09/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>Aramark Healthcare Support Services,</td>\n",
|
||
|
|
" <td>Culver City</td>\n",
|
||
|
|
" <td>53</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>22</th>\n",
|
||
|
|
" <td>07/01/2015</td>\n",
|
||
|
|
" <td>09/10/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>Maxim Integrated Product</td>\n",
|
||
|
|
" <td>San Jose</td>\n",
|
||
|
|
" <td>20</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>23</th>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>ProCourier, Inc.</td>\n",
|
||
|
|
" <td>San Diego</td>\n",
|
||
|
|
" <td>22</td>\n",
|
||
|
|
" <td>Layoff Unknown at this time</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>24</th>\n",
|
||
|
|
" <td>07/06/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>ProCourier, Inc.</td>\n",
|
||
|
|
" <td>Los Angeles</td>\n",
|
||
|
|
" <td>71</td>\n",
|
||
|
|
" <td>Layoff Unknown at this time</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>25</th>\n",
|
||
|
|
" <td>07/07/2015</td>\n",
|
||
|
|
" <td>09/04/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>ProCourier, Inc.</td>\n",
|
||
|
|
" <td>Irvine</td>\n",
|
||
|
|
" <td>22</td>\n",
|
||
|
|
" <td>Layoff Unknown at this time</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>26</th>\n",
|
||
|
|
" <td>07/09/2015</td>\n",
|
||
|
|
" <td>07/22/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>Berkeley Pyramid Alehouse</td>\n",
|
||
|
|
" <td>Berkeley</td>\n",
|
||
|
|
" <td>63</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>27</th>\n",
|
||
|
|
" <td>07/09/2015</td>\n",
|
||
|
|
" <td>09/14/2015</td>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>Fireman's Fund Insurance Company</td>\n",
|
||
|
|
" <td>Novato</td>\n",
|
||
|
|
" <td>35</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>28</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>08/31/2015</td>\n",
|
||
|
|
" <td>07/13/2015</td>\n",
|
||
|
|
" <td>First Transit</td>\n",
|
||
|
|
" <td>San Bernardino</td>\n",
|
||
|
|
" <td>127</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>29</th>\n",
|
||
|
|
" <td>06/30/2015</td>\n",
|
||
|
|
" <td>08/31/2015</td>\n",
|
||
|
|
" <td>07/13/2015</td>\n",
|
||
|
|
" <td>First Transit</td>\n",
|
||
|
|
" <td>Rancho</td>\n",
|
||
|
|
" <td>71</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>30</th>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>07/14/2015</td>\n",
|
||
|
|
" <td>07/13/2015</td>\n",
|
||
|
|
" <td>11 Main LLC</td>\n",
|
||
|
|
" <td>San Mateo</td>\n",
|
||
|
|
" <td>35</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>31</th>\n",
|
||
|
|
" <td>07/10/2015</td>\n",
|
||
|
|
" <td>07/14/2015</td>\n",
|
||
|
|
" <td>07/13/2015</td>\n",
|
||
|
|
" <td>11 Main LLC</td>\n",
|
||
|
|
" <td>Chico</td>\n",
|
||
|
|
" <td>44</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>32</th>\n",
|
||
|
|
" <td>07/15/2015</td>\n",
|
||
|
|
" <td>07/15/2015</td>\n",
|
||
|
|
" <td>07/15/2015</td>\n",
|
||
|
|
" <td>TaylorMade Golf Company</td>\n",
|
||
|
|
" <td>Carlsbad</td>\n",
|
||
|
|
" <td>64</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>33</th>\n",
|
||
|
|
" <td>07/08/2015</td>\n",
|
||
|
|
" <td>09/06/2015</td>\n",
|
||
|
|
" <td>07/16/2015</td>\n",
|
||
|
|
" <td>Southern California Edison Company</td>\n",
|
||
|
|
" <td>Rosemead</td>\n",
|
||
|
|
" <td>38</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>34</th>\n",
|
||
|
|
" <td>07/14/2015</td>\n",
|
||
|
|
" <td>09/18/2015</td>\n",
|
||
|
|
" <td>07/20/2015</td>\n",
|
||
|
|
" <td>Actavis, Inc.</td>\n",
|
||
|
|
" <td>Corona</td>\n",
|
||
|
|
" <td>45</td>\n",
|
||
|
|
" <td>Layoff Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" <tr>\n",
|
||
|
|
" <th>35</th>\n",
|
||
|
|
" <td>07/17/2015</td>\n",
|
||
|
|
" <td>07/13/2015</td>\n",
|
||
|
|
" <td>07/21/2015</td>\n",
|
||
|
|
" <td>American Management Services LLC</td>\n",
|
||
|
|
" <td>Monterey</td>\n",
|
||
|
|
" <td>56</td>\n",
|
||
|
|
" <td>Closure Permanent</td>\n",
|
||
|
|
" </tr>\n",
|
||
|
|
" </tbody>\n",
|
||
|
|
"</table>\n",
|
||
|
|
"</div>"
|
||
|
|
],
|
||
|
|
"text/plain": [
|
||
|
|
" Notice Date Effective Received Company \\\n",
|
||
|
|
"0 06/22/2015 03/25/2016 07/01/2015 Maxim Integrated Product \n",
|
||
|
|
"1 06/30/2015 08/29/2015 07/01/2015 McGraw-Hill Education \n",
|
||
|
|
"2 06/30/2015 08/30/2015 07/01/2015 Long Beach Memorial Medical Center \n",
|
||
|
|
"3 07/01/2015 09/02/2015 07/01/2015 Leidos \n",
|
||
|
|
"4 07/01/2015 09/30/2016 07/01/2015 Bosch Healthcare Systems, Inc. \n",
|
||
|
|
"5 06/29/2015 09/01/2015 07/02/2015 Encompass Digital Media, Inc. \n",
|
||
|
|
"6 07/02/2015 07/06/2015 07/02/2015 Alphatec Spine \n",
|
||
|
|
"7 06/30/2015 08/07/2015 07/06/2015 Symantec Corporation \n",
|
||
|
|
"8 06/30/2015 08/31/2015 07/06/2015 Fusion Contacts Centers, LLC \n",
|
||
|
|
"9 06/30/2015 09/15/2015 07/06/2015 KLA-Tencor Corporation \n",
|
||
|
|
"10 07/01/2015 09/04/2015 07/06/2015 Southern California Edison Company \n",
|
||
|
|
"11 07/02/2015 09/01/2015 07/06/2015 State Fish Company, Inc. \n",
|
||
|
|
"12 07/02/2015 09/04/2015 07/06/2015 Boeing Company \n",
|
||
|
|
"13 07/06/2015 09/04/2015 07/06/2015 Bridgepoint Education, Inc. \n",
|
||
|
|
"14 07/06/2015 09/04/2015 07/06/2015 Bridgepoint Education, Inc. \n",
|
||
|
|
"15 07/01/2015 06/29/2015 07/07/2015 BAE Systems \n",
|
||
|
|
"16 07/01/2015 06/29/2015 07/07/2015 BAE Systems \n",
|
||
|
|
"17 07/01/2015 09/07/2015 07/07/2015 Bay Bread LLC dba Bakery Los Angeles \n",
|
||
|
|
"18 07/01/2015 09/25/2015 07/07/2015 Bay Bread LLC dba New French Bakery \n",
|
||
|
|
"19 07/02/2015 06/12/2015 07/07/2015 Hewlett-Packard Company \n",
|
||
|
|
"20 07/08/2015 09/06/2015 07/08/2015 Microsoft Corporation \n",
|
||
|
|
"21 06/25/2015 10/09/2015 07/10/2015 Aramark Healthcare Support Services, \n",
|
||
|
|
"22 07/01/2015 09/10/2015 07/10/2015 Maxim Integrated Product \n",
|
||
|
|
"23 07/06/2015 09/04/2015 07/10/2015 ProCourier, Inc. \n",
|
||
|
|
"24 07/06/2015 09/04/2015 07/10/2015 ProCourier, Inc. \n",
|
||
|
|
"25 07/07/2015 09/04/2015 07/10/2015 ProCourier, Inc. \n",
|
||
|
|
"26 07/09/2015 07/22/2015 07/10/2015 Berkeley Pyramid Alehouse \n",
|
||
|
|
"27 07/09/2015 09/14/2015 07/10/2015 Fireman's Fund Insurance Company \n",
|
||
|
|
"28 06/30/2015 08/31/2015 07/13/2015 First Transit \n",
|
||
|
|
"29 06/30/2015 08/31/2015 07/13/2015 First Transit \n",
|
||
|
|
"30 07/10/2015 07/14/2015 07/13/2015 11 Main LLC \n",
|
||
|
|
"31 07/10/2015 07/14/2015 07/13/2015 11 Main LLC \n",
|
||
|
|
"32 07/15/2015 07/15/2015 07/15/2015 TaylorMade Golf Company \n",
|
||
|
|
"33 07/08/2015 09/06/2015 07/16/2015 Southern California Edison Company \n",
|
||
|
|
"34 07/14/2015 09/18/2015 07/20/2015 Actavis, Inc. \n",
|
||
|
|
"35 07/17/2015 07/13/2015 07/21/2015 American Management Services LLC \n",
|
||
|
|
"\n",
|
||
|
|
" City No. Of Layoff/Closure \n",
|
||
|
|
"0 San Jose 150 Closure Permanent \n",
|
||
|
|
"1 Monterey 137 Layoff Unknown at this time \n",
|
||
|
|
"2 Long Beach 90 Layoff Permanent \n",
|
||
|
|
"3 El Segundo 72 Layoff Permanent \n",
|
||
|
|
"4 Palo Alto 55 Closure Permanent \n",
|
||
|
|
"5 Los Angeles 41 Closure Permanent \n",
|
||
|
|
"6 Carlsbad 99 Layoff Permanent \n",
|
||
|
|
"7 Mountain View 60 Layoff Permanent \n",
|
||
|
|
"8 Santa Maria 50 Closure Permanent \n",
|
||
|
|
"9 Milpitas 213 Layoff Permanent \n",
|
||
|
|
"10 San Clemente 100 Closure Permanent \n",
|
||
|
|
"11 Wilmington 76 Closure Permanent \n",
|
||
|
|
"12 Long Beach 56 Layoff Unknown at this time \n",
|
||
|
|
"13 San Diego 7 Layoff Permanent \n",
|
||
|
|
"14 San Diego 15 Layoff Permanent \n",
|
||
|
|
"15 San Francisco 4 Layoff Temporary \n",
|
||
|
|
"16 San Francisco 78 Layoff Temporary \n",
|
||
|
|
"17 San Fernando 50 Closure Permanent \n",
|
||
|
|
"18 South San 121 Closure Permanent \n",
|
||
|
|
"19 Palo Alto 65 Layoff Permanent \n",
|
||
|
|
"20 San Diego 129 Layoff Permanent \n",
|
||
|
|
"21 Culver City 53 Closure Permanent \n",
|
||
|
|
"22 San Jose 20 Layoff Permanent \n",
|
||
|
|
"23 San Diego 22 Layoff Unknown at this time \n",
|
||
|
|
"24 Los Angeles 71 Layoff Unknown at this time \n",
|
||
|
|
"25 Irvine 22 Layoff Unknown at this time \n",
|
||
|
|
"26 Berkeley 63 Closure Permanent \n",
|
||
|
|
"27 Novato 35 Layoff Permanent \n",
|
||
|
|
"28 San Bernardino 127 Layoff Permanent \n",
|
||
|
|
"29 Rancho 71 Layoff Permanent \n",
|
||
|
|
"30 San Mateo 35 Closure Permanent \n",
|
||
|
|
"31 Chico 44 Layoff Permanent \n",
|
||
|
|
"32 Carlsbad 64 Layoff Permanent \n",
|
||
|
|
"33 Rosemead 38 Layoff Permanent \n",
|
||
|
|
"34 Corona 45 Layoff Permanent \n",
|
||
|
|
"35 Monterey 56 Closure Permanent "
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 9,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"df"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"## How did it work?\n",
|
||
|
|
"\n",
|
||
|
|
"We can use `pdfplumber`'s visual debugging to show how the table was extracted. The red lines represent the lines `pdfplumber` found on the page; the blue circles represent the intersections of those lines, and the light-blue shading indicates the cells derived from those intersections."
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 10,
|
||
|
|
"metadata": {
|
||
|
|
"collapsed": false
|
||
|
|
},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "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\n6ZLGvevUvpiUwWAwGAz
|
||
|
|
"text/plain": [
|
||
|
|
"<pdfplumber.display.PageImage at 0x105c8c908>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"execution_count": 10,
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "execute_result"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"im.debug_tablefinder()"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"metadata": {
|
||
|
|
"deletable": true,
|
||
|
|
"editable": true
|
||
|
|
},
|
||
|
|
"source": [
|
||
|
|
"---\n",
|
||
|
|
"\n",
|
||
|
|
"---\n",
|
||
|
|
"\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.4.3"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 0
|
||
|
|
}
|