Skip to content

Instantly share code, notes, and snippets.

@ankostis
Created May 13, 2016 16:53
Show Gist options
  • Save ankostis/0560dad5698d9f0c15fa409c803edc31 to your computer and use it in GitHub Desktop.
Save ankostis/0560dad5698d9f0c15fa409c803edc31 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.display import display\n",
"from collections import OrderedDict, ChainMap\n",
"import functools as ft\n",
"import numpy as np, pandas as pd, math\n",
"from matplotlib import pyplot as plt, cm, colors as mcl\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [],
"source": [
"## From http://ecomodder.com/wiki/index.php/Vehicle_Coefficient_of_Drag_List\n",
"#\n",
"inp_txt=\"\"\"Make ↓\tModel ↓\tYear ↓\tCd ↓\tHeight (In) ↓\tWidth (In) ↓\tFrontal Area (ft^2) ↓\tCdA ↓\n",
"Acura\tCL\t1997 - 1999\t0.34\t54.7\t70.1\t21.6\t7.33\n",
"Acura\tCL\t2000 - 2003\t0.32\t55.5\t70.6\t22.0\t7.05\n",
"Acura\tIntegra\t1994 - 2001\t0.32\t51.9\t66.7\t19.5\t6.23\n",
"Acura\tNSX\t1995 - 2005\t0.32\t46.1\t71.3\t19.2\t6.13\n",
"Acura\tRSX\t2002 - 2004\t0.32\t54.5\t67.9\t20.8\t6.66\n",
"Acura\tTSX\t2004 - 2008\t0.27\t57.3\t69.4\t\t\n",
"Alfa Romeo\t145\t1994 - 2001\t0.32\t56.2\t67.4\t22.41\t7.21\n",
"Aptera\t2e\tprototype\t0.15\t\t\t19.9\t2.98\n",
"Audi\tA2\t1999 - 2003\t\t\t\t\t6.63\n",
"Audi\tA2 3L\t2001 - 2003\t0.25\t\t\t\t5.86\n",
"Audi\tA3\t1996 - 2003\t0.31\t56.0\t68.3\t22.39\t6.89\n",
"Audi\tA4\t1994 - 2001\t0.29\t55.7\t68.1\t21.85\t6.35\n",
"Audi\tA6\t1997 - 2004\t0.29\t57.2\t71.3\t22.82\t6.67\n",
"Audi\tA8\t1994 - 2002\t0.28\t56.6\t74.0\t24.22\t6.78\n",
"Audi\tTT\t1998 - 2006\t0.34\t-\t-\t21.42\t7.28\n",
"Audi\tTT\t2006 -\t0.30\t-\t-\t22.47\t6.75\n",
"BMW\tCompact\t1993 - 2000\t0.31\t\t67.0\t20.99\t6.57\n",
"BMW\t3-series\t1990 - 1999\t0.30\t\t\t21.10\t6.24\n",
"BMW\t5-series\t1995 - 2003\t0.27\t56.5\t70.9\t23.36\t6.35\n",
"BMW\t7-series\t1994 - 2001\t0.30\t56.1\t73.3\t23.79\t7.21\n",
"Buick\tLeSabre\t1991\t0.36\t\t\t24.19\t7.5\n",
"Buick\tPark Avenue\t1991 - 1993\t0.31\t55.3\t74.9\t24.19\t8.71\n",
"Buick\tPark Avenue\t1994 - 1996\t0.31\t55.1\t74.1\t23.52\t7.29\n",
"Buick\tPark Avenue\t1997 - 2005\t\t57.4\t74.7\t\t\n",
"Buick\tPark Avenue\t2006 - 20XX\t\t58.3\t74.8\t\t\n",
"Buick\tRegal GS\t1991\t0.36\t\t\t22.41\t8.07\n",
"Chevrolet\tAstro Van\t1995 - 2005\t0.40\t75.5\t77.5\t34.1\t13.65\n",
"Chevrolet\tAveo\t2004 - 2008\t0.35\t58.5\t66\t23.3\t8.16\n",
"Chevrolet\tAveo Hatchback\t2009\t0.32\t59.3\t66.1\t22.9\t7.32\n",
"Chevrolet\tAveo Sedan\t2009\t0.32\t58.9\t67\t23.0\t7.37\n",
"Chevrolet\tCamaro\t1993 - 2002\t0.34\t51.3\t74.1\t22.0\t7.48\n",
"Chevrolet\tCavalier\t1995 - 2005\t0.36\t53.2\t67.4\t20.2\t7.26\n",
"Chevrolet\tCobalt XFE\t2008 - 2009\t0.34\t57.1\t67.9\t22.0\t7.47\n",
"Chevrolet\tMonte Carlo\t1995 - 2000\t0.36\t53.8\t72.5\t22.6\t8.14\n",
"Chevrolet\tVolt\t2011 - 2015\t0.28\t56.64\t70.37\t23.25\t6.51\n",
"Chevrolet\tVolt\t2016 -\t0.285\t56.4\t71.2\t23.42\t6.68\n",
"Chrysler\tPT Cruiser\t2000 - 2006\t0.40\t63.0\t67.1\t23.8\t9.51\n",
"Chrysler\tSebring\t1995 - 2000\t0.32\t53.0\t69.7\t20.8\t6.65\n",
"Chrysler\tSebring Convertible\t1996 - 2000\t0.36\t54.2\t69.2\t21.82\t7.85\n",
"Chrysler\tVoyager\t1996 - 2000\t0.37\t68.5\t75.6\t30.14\t11.19\n",
"Citroën\tC4\t2004 -\t0.28\t57.4\t69.6\t\t\n",
"Citroën\tC8\t1994 - 2003\t0.34\t\t\t28.95\t9.79\n",
"Citroën\tSaxo\t1996 - 2003\t0.34\t54.3\t62.8\t19.7\t6.66\n",
"Citroën\tXantia\t1993 - 2001\t0.31\t54.0\t69.1\t21.85\t6.67\n",
"Citroën\tXM\t1989 - 2000\t0.30\t54.8\t70.6\t22.82\t6.78\n",
"Citroën\tZX\t1991 - 1998\t0.36\t\t\t20.77\t7.43\n",
"Daewoo\tEspero\t1990 - 1997\t0.32\t54.6\t67.6\t21.74\t6.99\n",
"Daewoo\tNexia\t1994 - 1997\t0.34\t\t\t20.99\t7.21\n",
"Dodge\tAvenger\t2008-2009\t0.326\t\t\t25.15\t8.2\n",
"Dodge\tCaravan\t1996-2000\t0.35\t68.6\t76.8\t30.7\t10.76\n",
"Dodge\tMagnum (RWD) SE\t2005-2007\t0.337\t58.4\t74.1\t25.4\t8.56\n",
"Dodge\tMagnum (RWD) SXT\t2005-2007\t0.346\t58.4\t74.1\t25.4\t8.79\n",
"Dodge\tMagnum (RWD) R/T\t2005-2007\t0.355\t58.4\t74.1\t25.4\t9.02\n",
"Dodge\tMagnum (AWD) SXT, R/T\t2005-2007\t0.365\t58.4\t74.1\t25.4\t9.27\n",
"Dodge\tNeon\t1995-1999\t0.33\t54.9\t67.5\t21.6\t7.13\n",
"Dodge\tRAM 1500 QC\t2002-2008\t0.52\t\t\t35.1\t18.25\n",
"Dodge\tRAM SRT10\t2004-2006\t0.45\t\t\t34.6\t15.57\n",
"Dodge\tShadow\t1991-1994\t0.42\t\t\t21\t8.82\n",
"Fiat\tBravo\t1995 - 2001\t0.32\t55.9\t68.9\t22.06\t7.10\n",
"Fiat\tCinquecento\t1991 - 1998\t0.33\t56.6\t58.7\t19.37\t6.35\n",
"Fiat\tPunto\t1993 - 1999\t0.30\t57.0\t64.0\t20.99\t6.35\n",
"Fiat\tUlysse\t1994 - 2003\t0.34\t\t\t28.95\t9.79\n",
"Ford\tAspire\t1994 - 1997\t0.36\t55.6\t65.5\t21.2\t7.65\n",
"Ford\tEscort (Euro)\t1995 - 2000\t0.32\t\t\t20.88\t6.67\n",
"Ford\tEscort\t1997 - 2002\t0.36\t52.3\t67.4\t19.8\t7.14\n",
"Ford\tExplorer II\t1995 - 2001\t0.43\t68.0\t70.2\t32.93\t14.21\n",
"Ford\tF-150 Lightning\t1999 - 2004\t0.36\t70.9\t79.1\t31.5\t11.36\n",
"Ford\tFiesta\t1995 - 2002\t0.36\t\t\t19.80\t7.10\n",
"Ford\tFiesta\t2011 -\t0.33\t58.0\t67.8\t22.9\t7.57\n",
"Ford\tGalaxy\t1995 - 2000\t0.32\t67.9\t74.2\t28.84\t9.15\n",
"Ford\tKa\t1996 - 2008\t0.35\t54.8\t64.2\t20.23\t7.10\n",
"Ford\tMaverick\t1988 - 1994\t0.52\t71.3\t76.0\t29.17\t15.18\n",
"Ford\tMondeo\t1996 - 2000\t0.31\t\t\t22.06\t6.89\n",
"Ford\tMondeo Turnier\t1996 - 2000\t0.32\t\t\t22.17\t7.10\n",
"Ford\tRanger\t2001\t0.49\t68.5\t64.9\t25.9\t12.7\n",
"Ford\tScorpio\t1985 - 1998\t0.32\t54.6\t69.3\t22.06\t7.10\n",
"Ford\tSVT Mustang Cobra\t1994 - 2004\t0.37\t52.5\t73.1\t21.6\t7.99\n",
"Ford\tThunderbird\t1989 - 1997\t0.31\t52.8\t72.0\t21.4\t6.63\n",
"Ford\tWindstar I\t1994 - 1998\t0.35\t68.0\t75.4\t30.03\t10.55\n",
"General Motors\tEV1\t1996\t0.19\t\t\t\t3.96\n",
"Geo\tMetro 4dr\t1989 - 1994\t\t53.5\t62.7\t19.6\t0.00\n",
"Geo\tMetro 4dr\t1995 - 1997\t0.32\t55.4\t62.6\t19.5\t6.24\n",
"Geo\tMetro 2dr hatch\t1989 - 1994\t\t52.4\t62.0\t19.0\t0.00\n",
"Geo\tMetro 2dr hatch\t1995 - 1997\t0.34\t54.7\t62.6\t20.0\t6.79\n",
"Geo\tMetro Convertible\t1989 - 1994\t\t52.0\t62.7\t19.0\t0.00\n",
"GMC\tSierra XFE\t2009\t0.412\t80.0\t73.6\t34.3\t14.2\n",
"Honda\tAccord Ex Coupe\t1998 - 2002\t0.34\t55.1\t70.3\t21.8\t7.41\n",
"Honda\tCivic\t1988 - 1991\t\t53.5\t65.9\t20.6\t0.00\n",
"Honda\tCivic Hatch\t1988 - 1991\t0.33\t52.4\t65.6\t20.1\t6.63\n",
"Honda\tCivic Coupe\t1992 - 1995\t0.32\t50.9\t66.9\t19.9\t6.36\n",
"Honda\tCivic\t2001 - 2005\t\t56.9\t67.7\t22.5\t0.00\n",
"Honda\tCivic Coupe\t2006 -\t0.29\t56.5\t69.0\t21.9\t6.36\n",
"Honda\tCivic Del Sol\t1992 - 1997\t0.35\t49.4\t66.7\t18.5\t6.49\n",
"Honda\tCivic Hatch\t1992 - 1995\t0.31\t50.9\t66.9\t19.9\t6.16\n",
"Honda\tCivic Hatch\t1996 - 2000\t0.36\t54.1\t67.1\t21.8\t7.62\n",
"Honda\tCivic Sedan\t1996 - 2000\t0.32\t54.7\t67.1\t21.4\t6.85\n",
"Honda\tCivic Hybrid\t2003 - 2005\t0.28\t56.3\t67.5\t21.4\t5.99\n",
"Honda\tCivic Hybrid\t2005 -\t0.27\t56.3\t69.0\t21.9\t5.90\n",
"Honda\tCivic SI\t1996 - 2000\t0.34\t54.1\t67.1\t20.4\t6.94\n",
"Honda\tCRX\t1984 - 1987\t0.32\t50.8\t63.9\t18.3\t5.84\n",
"Honda\tCRX\t1988 - 1991\t0.30\t50.1\t65.9\t18.6\t5.57\n",
"Honda\tCRX HF\t1988 - 1991\t0.29\t50.1\t65.9\t18.6\t5.39\n",
"Honda\tCR-Z\t2010 -\t0.30\t54.9\t68.5\t21.9\t6.58\n",
"Honda\tInsight\t2000 - 2006\t0.25\t53.3\t66.7\t20.0\t5.00\n",
"Honda\tInsight\t2010 -\t0.28\t56.3\t66.7\t21.9\t6.13\n",
"Honda\tFit\t2006 - 2008\t0.35\t60.0\t65.9\t23.1\t8.085\n",
"Honda\tFit\t2009 -\t\t60.0\t66.7\t23.3\t0.00\n",
"Honda\tPrelude\t1997 - 2001\t0.32\t51.8\t69.0\t20.1\t6.43\n",
"Honda\tS2000\t2000 -\t0.33\t50.6\t68.9\t19.6\t6.47\n",
"Hyundai\tAccent/Pony/Excel\t1994 - 1999\t0.31\t54.9\t63.8\t20.56\t6.35\n",
"Hyundai\tElantra\t1991 - 1993\t\t54.5\t65.9\t21.0\t0.00\n",
"Hyundai\tElantra\t1994 - 1995\t\t52.0\t66.1\t20.1\t0.00\n",
"Hyundai\tElantra\t1996 - 2000\t0.33\t54.9\t66.9\t20.7\t6.82\n",
"Hyundai\tElantra\t2001 - 2006\t0.34\t56.1\t67.9\t21.4\t7.29\n",
"Hyundai\tElantra\t2007 -\t0.32\t58.3\t69.9\t22.9\t7.34\n",
"Hyundai\tElantra touring\t2007 -\t0.33\t59.8\t69.5\t23.4\t7.71\n",
"Hyundai\tElantra wagon\t1996 - 1997\t0.33\t57.4\t66.9\t21.6\t7.13\n",
"Hyundai\tElantra wagon\t1998 - 2000\t0.33\t58.8\t66.9\t22.1\t7.30\n",
"Hyundai\tSonata\t2006 -\t0.32\t58.0\t72.1\t23.5\t7.53\n",
"Hyundai\tTiburon GT\t2002 -\t0.32\t52.3\t69.3\t20.4\t6.52\n",
"Infiniti\tG20\t1991-1996\t0.30\t54.7\t66.7\t21.28\t6.38\n",
"Infiniti\tG20\t1999-2002\t0.30\t55.1\t66.7\t21.44\t6.43\n",
"Infiniti\tQ45\t2002-2006\t0.30\t58.7\t72.6\t24.9\t7.46\n",
"Jeep\tCherokee\t1984 - 2001\t0.52\t64.0\t67.9\t24.54\t12.81\n",
"Jeep\tGrand Cherokee\t1993 - 1998\t0.42\t64.9\t69.2\t25.94\t10.87\n",
"Jeep\tLiberty\t2012\t0.394\t71.0\t72.3\t30.21\t12.0\n",
"Jeep\tWrangler TJ-Hardtop\t1997-2005\t0.55\t69.8\t68.3\t27.81\t15.3\n",
"Jeep\tWrangler TJ-Soft Top\t1997-2005\t0.58\t71.2\t68.3\t28.37\t16.45\n",
"Kia\tPicanto\t2004-2011\t0.34\t58.3\t62.8\t\t\n",
"Lancia\tDelta HPE (3-door)\t1993 - 1999\t0.33\t56.0\t69.3\t22.49\t7.43\n",
"Lexus\tLS 400\t1994 - 2000\t0.27\t56.0\t72.0\t24.00\t6.46\n",
"Mazda\t323 C\t1994 - 1998\t0.33\t54.3\t65.7\t21.31\t6.99\n",
"Mazda\t626\t1992 - 1997\t0.29\t53.9\t68.9\t21.63\t6.24\n",
"Mazda\tMiata\t1998 - 2005\t0.38\t47.3\t66.1\t17.6\t6.68\n",
"Mazda\tMX-3\t1992 - 1995\t0.32\t51.6\t66.7\t19.4\t6.20\n",
"Mazda\tRX-7\t1992 - 2002\t0.33\t48.4\t68.9\t18.8\t6.19\n",
"Mazda\tRX-8\t2003 - 2012\t0.30\t52.8\t69.7\t21.47\t6.44\n",
"Mazda\tXedos 6\t1992 - 1999\t0.31\t\t\t20.34\t6.35\n",
"Mazda\tXedos 9/Millenia\t1993 - 2003\t0.28\t54.9\t69.7\t23.46\t6.57\n",
"Mercedes-Benz\tC-class\t1993 - 2000\t0.30\t56.1\t67.7\t22.06\t6.67\n",
"Mercedes\tCL500\t1998 - 2000\t0.28\t55.0\t73.1\t23.9\t6.69\n",
"Mercedes-Benz\tE-class\t1995 - 2002\t0.27\t56.7\t70.8\t23.25\t6.24\n",
"Mercedes-Benz\tG-class\t1990 -\t0.53\t72.3\t69.3\t31.64\t16.79\n",
"Mercedes-Benz\tS-class\t1991 - 1999\t0.31\t\t\t25.62\t7.96\n",
"Mercedes\tSL600\t1989 - 2002\t0.45\t50.7\t71.3\t21.2\t9.54\n",
"Mercedes-Benz\tVito\t1996 - 2003\t0.34\t\t\t34.27\t11.62\n",
"Mercury\tCougar\t1999 - 2002\t0.31\t52.2\t69.6\t20.4\t6.34\n",
"Mini\tMini Cooper S\t2001 - 2006\t0.33\t55.8\t66.5\t21.3\t7.03\n",
"Mitsubishi\tColt\t1995 - 2002\t0.30\t54.5\t66.0\t21.53\t6.46\n",
"Mitsubishi\tEclipse GS-T\t1995 - 1999\t0.29\t51.0\t68.3\t20.4\t5.92\n",
"Mitsubishi\tEclipse GTS\t2000 - 2005\t0.35\t51.6\t68.9\t20.4\t7.14\n",
"Mitsubishi\ti-MiEV\t2012 -\t0.35\t63.6\t62.4\t23.2\t8.10\n",
"Mitsubishi\tLancer\t2000 - 2007\t0.30\t54.1\t66.7\t21.0\t6.31\n",
"Mitsubishi\tMirage Coupe\t1991 - 1996\t0.32\t51.4\t66.5\t19.2\t6.15\n",
"Mitsubishi\tMirage Hatch\t2014 - 2016\t0.28\t59.1\t65.6\t21.97\t6.15\n",
"Mitsubishi\tMirage Hatch\t2017 -\t0.27\t59.1\t65.6\t21.97\t5.93\n",
"Mitsubishi\tPajero\t1991 - 1999\t0.49\t72.8\t66.7\t27.23\t13.02\n",
"Nissan\t200SX SE\t1991 - 1994\t0.30\t50.8\t66.5\t19.0\t5.70\n",
"Nissan\t200SX SE-R\t1995 - 1999\t0.34\t54.2\t66.6\t20.3\t6.90\n",
"Nissan\t300ZX Turbo\t1990 - 1996\t0.31\t49.2\t70.5\t19.5\t6.05\n",
"Nissan\t350Z\t2002 -\t0.31\t51.9\t71.5\t20.9\t6.47\n",
"Nissan\tAlmera\t1995 - 2000\t0.30\t54.9\t66.5\t20.45\t6.13\n",
"Nissan\tAltima\t1993 - 1997\t0.34\t55.9\t67.1\t21.1\t7.17\n",
"Nissan\tAltima\t1998 - 2001\t0.32\t55.9\t69.1\t21.7\t6.95\n",
"Nissan\tAltima\t2002 - 2006\t0.32\t57.9\t70.4\t22.9\t7.34\n",
"Nissan\tAltima coupe\t2007 -\t0.31\t55.3\t70.7\t22.0\t6.82\n",
"Nissan\tAltima hybrid\t2007 -\t0.30\t58.1\t69.6\t22.7\t6.82\n",
"Nissan\tAltima sedan\t2007 -\t0.31\t57.9\t70.7\t23.0\t7.14\n",
"Nissan\tCube\t2008 -\t0.35\t65.0\t66.7\t25.32\t8.86\n",
"Nissan\tLeaf\t2011 -\t0.28\t61.0\t69.7\t24.8\t6.94\n",
"Nissan\tMaxima\t1995 - 1999\t0.32\t55.7\t69.7\t22.51\t7.20\n",
"Nissan\tMicra\t1992 - 2003\t0.35\t\t\t19.59\t6.89\n",
"Nissan\tMurano\t2003 - 2007\t0.39\t66.5\t74.0\t28.71\t11.20\n",
"Nissan\tMurano\t2008 -\t0.39\t67.3\t74.0\t29.05\t11.32\n",
"Nissan\tNX2000\t1991 - 1993\t0.32\t51.8\t66.1\t20\t6.39\n",
"Nissan\tPatrol GR\t1987 - 1998\t0.52\t71.3\t76.0\t29.17\t15.18\n",
"Nissan\tPrimera\t1995 - 1999\t0.29\t\t\t21.10\t6.13\n",
"Nissan\tSentra\t1991 - 1994\t0.35\t53.0\t65.6\t19.6\t6.84\n",
"Nissan\tSentra\t1995 - 1999\t0.33\t54.5\t66.6\t20.4\t6.74\n",
"Nissan\tSentra\t2000 - 2006\t0.33\t55.5\t67.3\t21.0\t6.93\n",
"Nissan\tSentra\t2007 -\t0.35\t59.5\t70.5\t23.6\t8.26\n",
"Nissan\tTerrano II\t1996 - 2004\t0.44\t67.1\t68.7\t29.38\t12.92\n",
"Nissan\tVersa\t2004 -\t0.31\t60.4\t66.7\t22.7\t7.03\n",
"Opel\tAstra\t1991 - 1998\t0.32\t\t\t21.20\t6.78\n",
"Opel\tAstra Caravan\t1991 - 1998\t0.33\t\t\t21.74\t7.10\n",
"Opel\tCorsa B\t1992 - 2000\t0.36\t56.7\t63.4\t20.23\t7.21\n",
"Opel\tCorsa C\t2000 - 2006\t0.32\t56.7\t64.8\t21.1\t6.75\n",
"Opel\tCalibra 2.0i\t1989 - 1997\t0.26\t52\t66.5\t20.8\t5.40\n",
"Opel\tOmega B\t1994 - 1999\t0.29\t57.3\t70.3\t23.14\t6.78\n",
"Opel\tSintra\t1996 - 1999\t0.34\t\t\t30.14\t10.22\n",
"Opel\tTigra\t1994 - 2001\t0.31\t\t\t19.15\t5.94\n",
"Opel\tVectra A\t1988 - 1995\t0.29\t55.1\t66.9\t21.9\t6.36\n",
"Opel\tVectra B\t1995 - 2002\t0.28\t56.0\t67.0\t21.74\t6.13\n",
"Peugeot\t106\t1991 - 2004\t0.32\t53.9\t62.6\t19.48\t6.24\n",
"Peugeot\t206\t1998 -\t0.33\t\t\t\t\n",
"Peugeot\t207\t2006 -\t0.30\t\t\t\t\n",
"Peugeot\t207 Economique\t2009 -\t0.274\t\t\t\t\n",
"Peugeot\t306\t1993 - 2002\t0.32\t\t\t20.66\t6.67\n",
"Peugeot\t307 SW\t2001 - 2008\t0.33\t61.4\t70\t27.46\t9.06\n",
"Peugeot\t308\t2008 -\t0.29\t\t\t\t\n",
"Peugeot\t406\t1995 - 2004\t0.31\t55.0\t69.0\t22.06\t6.78\n",
"Peugeot\t806\t1994 - 2002\t0.34\t\t\t28.95\t9.79\n",
"Pontiac\tBonneville\t1992 - 1997\t0.36\t55.7\t74.5\t24.3\t8.75\n",
"Pontiac\tBonneville\t1998 - 1999\t\t56.0\t74.4\t24.3\t\n",
"Pontiac\tBonneville SE\t2000 - 2001\t\t56.0\t74.2\t24.3\t\n",
"Pontiac\tBonneville SLE & SSEi\t2000 - 2001\t\t56.4\t74.2\t24.4\t\n",
"Pontiac\tBonneville\t2002 - 2005\t\t56.6\t74.2\t24.5\t\n",
"Pontiac\tFiero\t1986\t0.36\t\t\t18.72\t6.75\n",
"Pontiac\tGrand AM GT\t1992\t0.34\t\t\t21.12\t7.18\n",
"Pontiac\tGrand AM SE\t1992\t0.34\t\t\t20.82\t7.08\n",
"Pontiac\tGrand Prix\t1991\t0.34\t\t\t22.32\t7.59\n",
"Pontiac\tGrand Prix\t1998 - 2003\t\t54.7\t72.7\t23.197\t\n",
"Pontiac\tTrans Am\t1985 - 1989\t0.29\t\t\t\t\n",
"Pontiac\tFirebird Trans Am\t1993 - 2002\t0.34\t52.0\t74.5\t22.0\t7.48\n",
"Pontiac\tTrans Sport\t1990 - 1996\t0.30\t65.7\t74.6\t28.6\t8.58\n",
"Pontiac\tVibe\t2003\t0.33\t\t\t\t\n",
"Porsche\t914\t1969 - 1976\t0.36\t\t\t17.2\t6.19\n",
"Renault\tClio\t1990 - 1998\t0.33\t\t\t20.02\t6.57\n",
"Renault\tEspace II\t1991 - 1997\t0.32\t\t\t27.88\t8.93\n",
"Renault\tEspace III\t1997 - 2003\t0.31\t\t\t27.77\t8.61\n",
"Renault\tLaguna\t1993 - 2001\t0.30\t56.4\t69.0\t22.28\t6.67\n",
"Renault\tMegane\t1995 - 2002\t0.32\t\t\t21.42\t6.89\n",
"Renault\tTwingo\t1992 - 2007\t0.35\t\t\t20.99\t7.32\n",
"Rover\t214\t1995-1999\t0.33\t56\t67\t21.5\t7.1\n",
"Saab\t900 (Classic)\t1979-1993\t0.34\t56.25\t66.5\t21.82\t7.42\n",
"Saab\t9000 CS\t1992 - 1998\t0.32\t55.9\t69.4\t22.39\t7.21\n",
"Saab\tSonett III (Model 97)\t1970 - 1974\t0.31\t46.8\t59.1\t15.15\t4.70\n",
"Saturn\tSC\t1991 - 1996\t0.32\t50.6\t67.6\t20.0\t6.39\n",
"Saturn\tSC\t1996 - 2002\t0.31\t53.0\t67.3\t20.8\t6.45\n",
"Saturn\tSC2\t1997 - 2002\t0.33\t52.2\t67.3\t20.9\t6.90\n",
"Saturn\tSL\t1991 - 1995\t0.34\t52.5\t67.6\t20.7\t7.04\n",
"Saturn\tSL\t1996 - 2002\t0.32\t54.8\t66.6\t21.3\t6.81\n",
"Saturn\tSW\t1993 - 1995\t\t53.7\t67.6\t21.2\t\n",
"Saturn\tSW\t1996 - 2001\t0.36\t55.0\t66.5\t21.3\t7.68\n",
"Scion\tFR-S\t2012 -\t0.27\t50.6\t69.9\t20.6\t5.57\n",
"Scion\tTc\t2005 -\t0.32\t55.7\t69.1\t21.6\t6.93\n",
"Scion\tXa\t2004 - 2007\t0.31\t60.2\t66.7\t22.6\t7.00\n",
"Scion\tXb\t2004 - 2007\t0.35\t64.6\t66.5\t24.2\t8.46\n",
"Scion\tXb\t2008 -\t0.32\t64.7\t69.3\t25.2\t8.07\n",
"Scion\tXd\t2008 -\t0.32\t60.0\t67.9\t22.9\t7.33\n",
"Seat\tCordoba\t1993 - 2002\t0.32\t55.4\t65.0\t20.99\t6.67\n",
"Seat\tIbiza\t1993 - 1999\t0.33\t\t\t20.88\t6.89\n",
"Seat\tToledo\t1991 - 1998\t0.32\t56.1\t65.4\t21.10\t6.78\n",
"Škoda\tFelicia\t1994 - 2001\t0.346\t55.7\t64.37\t20.91\t7.23\n",
"Škoda\tOctavia\t1996 -\t0.32\t\t\t22.17\t7.10\n",
"Subaru\tImpreza 2.5RS\t1993 - 2001\t0.36\t55.5\t67.1\t20.9\t7.54\n",
"Subaru\tImpreza WRX\t2002 - 2007\t0.33\t56.7\t68.1\t22.63\t7.47\n",
"Subaru\tLegacy\t1994 - 1999\t0.35\t\t\t23.25\t8.18\n",
"Subaru\tLegacy\t2009\t0.31\t56.5\t68.1\t22.44\t6.96\n",
"Subaru\tLegacy Wagon\t1995 - 1999\t0.32\t57.1\t67.5\t22.5\t7.20\n",
"Subaru\tLegacy Outback Wagon\t1995 - 1999\t0.32\t63.0\t67.0\t24.6\t7.87\n",
"Subaru\tLegacy Outback Wagon\t2000 - 2004\t0.32\t58.3\t68.7\t23.4\t7.48\n",
"Subaru\tOutback Wagon\t2005 - 2009\t0.31\t58.1\t68.1\t23.1\t7.15\n",
"Subaru\tOutback Wagon\t2010 -\t0.37\t65.7\t71.7\t27.5\t10.16\n",
"Subaru\tLoyale Wagon\t1988 - 1994\t0.38\t53.0\t65.4\t19.75\t7.50\n",
"Toyota\tCamry\t1991 - 1996\t0.31\t\t\t22.06\t6.80\n",
"Toyota\tCamry Solara\t1999 - 2003\t0.36\t55.1\t71.1\t22.0\t7.93\n",
"Toyota\tCarina\t1996 - 2001\t0.30\t54.9\t66.7\t20.99\t6.35\n",
"Toyota\tCelica GT-S\t1994 - 1999\t0.34\t50.1\t68.3\t19.2\t6.54\n",
"Toyota\tCelica GT\t2000 - 2006\t0.32\t51.4\t68.3\t20.5\t6.55\n",
"Toyota\tCorolla\t1993 - 1997\t0.33\t53.5\t66.3\t20.0\t6.58\n",
"Toyota\tCorolla\t1998 - 2002\t0.31\t54.5\t66.7\t20.4\t6.34\n",
"Toyota\tCorolla\t2003 - 2008\t0.30\t58.5\t66.9\t22.0\t6.60\n",
"Toyota\tCorolla\t2009 -\t0.29\t57.7\t69.3\t22.5\t6.52\n",
"Toyota\tEcho\t2000 - 2005\t0.29\t59.4\t65.4\t21.9\t6.34\n",
"Toyota\tiQ 3dr\t2010 -\t0.299\t\t\t23.1\t6.89\n",
"Toyota\tMatrix\t2003 - 2008\t0.32\t61.6\t69.9\t24.2\t7.75\n",
"Toyota\tMatrix\t2009 -\t0.33\t61.0\t69.5\t23.8\t7.87\n",
"Toyota\tMR2\t1985 - 1989\t0.32\t49.2\t65.5\t18.1\t5.80\n",
"Toyota\tMR2\t1991 - 1995\t0.31\t48.6\t66.9\t18.3\t5.67\n",
"Toyota\tMR-Spyder\t1999 - 2007\t0.31\t48.8\t66.7\t18.3\t5.68\n",
"Toyota\tPaseo\t1992 - 1995\t0.32\t50.5\t65.2\t18.5\t5.93\n",
"Toyota\tPaseo\t1996 - 1998\t0.32\t51.0\t65.4\t18.8\t6.00\n",
"Toyota\tPrevia\t1990-2000\t0.33\t69.0\t70.9\t28.5\t9.42\n",
"Toyota\tPrius\t2000 - 2003\t0.29\t57.6\t66.7\t21.6\t6.27\n",
"Toyota\tPrius\t2004 - 2009\t0.26\t58.7\t67.9\t22.4\t5.83\n",
"Toyota\tPrius\t2010 - 2015\t0.25\t58.3\t68.7\t23.4\t5.84\n",
"Toyota\tPrius C\t2012 -\t0.28\t56.9\t66.7\t22.1\t6.20\n",
"Toyota\tSienna\t2011 -\t0.309\t\t\t\t\n",
"Toyota\tSupra\t1993 - 2002\t0.32\t50.2\t71.3\t20.1\t6.44\n",
"Toyota\tTercel\t1991 - 1994\t0.36\t53.1\t64.8\t19.4\t6.97\n",
"Toyota\tTercel\t1995 - 1999\t0.32\t53.2\t65.4\t19.6\t6.26\n",
"Toyota\tYaris\t2007 - 2013\t0.29\t56.5\t66.5\t21.1\t6.13\n",
"Toyota\tYaris\t2014 -\t0.29\t59.4\t66.7\t23.1\t6.70\n",
"Volkswagen\t1L Concept\t\t0.15\t39.6\t49.2\t11.0\t1.65\n",
"Volkswagen\tXL1\t2014 -\t0.189\t45.4\t65.6\t15.87\t3.00\n",
"Volkswagen\tBeetle\t1998 -\t0.38\t59.5\t67.9\t22.7\t8.64\n",
"Volkswagen\tBeetle\t1959 - 1979\t0.48\t0\t0\t0\t0\n",
"Volkswagen\tCaravelle/Transporter\t1990 - 2003\t0.37\t\t\t33.37\t12.27\n",
"Volkswagen\tGolf\t1997 - 2003\t0.32\t\t\t21.31\t6.89\n",
"Volkswagen\tGolf Variant\t1997 - 2003\t0.34\t\t\t22.06\t7.43\n",
"Volkswagen\tJetta\t1993 - 1999\t0.30\t56.1\t66.7\t21.0\t6.31\n",
"Volkswagen\tJetta\t1986-1992\t0.36\t55.7\t65.5\t21.79\t7.84\n",
"Volkswagen\tJetta sedan\t2000 - 2005\t0.30\t56.7\t68.3\t21.8\t6.54\n",
"Volkswagen\tJetta\t2006 -\t0.31\t57.4\t70.1\t22.6\t7.02\n",
"Volkswagen\tJetta wagon\t2000 - 2005\t0.30\t58.5\t68.3\t22.5\t6.74\n",
"Volkswagen\tPassat\t1995 - 1997\t0.31\t56.4\t67.5\t21.4\t6.64\n",
"Volkswagen\tPassat Wagon\t1995 - 1997\t0.33\t58.7\t67.5\t22.3\t7.36\n",
"Volkswagen\tPassat Wagon B5\t2000\t0.27\t57.5\t68.5\t22.97\t6.20\n",
"Volkswagen\tPolo\t1994 - 2002\t0.33\t\t\t20.45\t6.67\n",
"Volkswagen\tSharan\t1995 - 2000\t0.32\t69.4\t71.3\t28.84\t9.15\n",
"Volkswagen\tVento/Jetta\t1992 - 1999\t0.32\t56.3\t66.5\t21.42\t6.89\n",
"Volvo\t850\t1992 - 1997\t0.32\t55.7\t69.3\t23.03\t7.43\n",
"Volvo\t940\t1990 - 1998\t0.34\t55.5\t69.3\t23.14\t7.86\n",
"Volvo\tC70 Coupe\t1997 - 2005\t0.32\t55.1\t72.0\t22.3\t7.14\n",
"Volvo\tV70/V70XC\t1996 - 2000\t0.32\t56.2\t69.3\t22.7\t7.26\n",
"Volvo\tV70/V70XC\t2001 - 2009\t0.30\t57.6\t71.0\t24.0\t7.20\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 61,
"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>keys</th>\n",
" <th>names</th>\n",
" <th>types</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>/make</td>\n",
" <td>Make ↓</td>\n",
" <td>&lt;class 'str'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>/model</td>\n",
" <td>Model ↓</td>\n",
" <td>&lt;class 'str'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>/years</td>\n",
" <td>Year ↓</td>\n",
" <td>&lt;class 'str'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>/year</td>\n",
" <td>Year</td>\n",
" <td>&lt;class 'numpy.int16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>/yf</td>\n",
" <td>YearFrom</td>\n",
" <td>&lt;class 'numpy.int16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>/yt</td>\n",
" <td>YearTo</td>\n",
" <td>&lt;class 'numpy.int16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>/cd</td>\n",
" <td>Cd ↓</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>/hi</td>\n",
" <td>Height (In) ↓</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>/hm</td>\n",
" <td>Height (m)</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>/wi</td>\n",
" <td>Width (In) ↓</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>/wm</td>\n",
" <td>Width (m)</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>/fi</td>\n",
" <td>Frontal Area (ft^2) ↓</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>/fm</td>\n",
" <td>FArea (m^2)</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>/crop</td>\n",
" <td>Crop (m^2)</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>/cda</td>\n",
" <td>CdA ↓</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>/r</td>\n",
" <td>ratio</td>\n",
" <td>&lt;class 'numpy.float16'&gt;</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" keys names types\n",
"0 /make Make ↓ <class 'str'>\n",
"1 /model Model ↓ <class 'str'>\n",
"2 /years Year ↓ <class 'str'>\n",
"3 /year Year <class 'numpy.int16'>\n",
"4 /yf YearFrom <class 'numpy.int16'>\n",
"5 /yt YearTo <class 'numpy.int16'>\n",
"6 /cd Cd ↓ <class 'numpy.float16'>\n",
"7 /hi Height (In) ↓ <class 'numpy.float16'>\n",
"8 /hm Height (m) <class 'numpy.float16'>\n",
"9 /wi Width (In) ↓ <class 'numpy.float16'>\n",
"10 /wm Width (m) <class 'numpy.float16'>\n",
"11 /fi Frontal Area (ft^2) ↓ <class 'numpy.float16'>\n",
"12 /fm FArea (m^2) <class 'numpy.float16'>\n",
"13 /crop Crop (m^2) <class 'numpy.float16'>\n",
"14 /cda CdA ↓ <class 'numpy.float16'>\n",
"15 /r ratio <class 'numpy.float16'>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from pandalone import mappings\n",
"\n",
"def column_pstep(cdf):\n",
" return mappings.pmods_from_tuples(cdf[['keys', 'names']].values).step()\n",
"\n",
"def column_dtypes(cdf):\n",
" return dict(zip(cdf['names'], cdf['types']))\n",
"\n",
"def columns_df():\n",
" cdf = pd.DataFrame([\n",
" ['make', 'Make ↓', str],\n",
" ['model', 'Model ↓', str],\n",
" ['years', 'Year ↓', str],\n",
" ['year', 'Year', np.int16],\n",
" ['yf', 'YearFrom', np.int16],\n",
" ['yt', 'YearTo', np.int16],\n",
" ['cd', 'Cd ↓', np.float16],\n",
" ['hi', 'Height (In) ↓', np.float16],\n",
" ['hm', 'Height (m)', np.float16],\n",
" ['wi', 'Width (In) ↓', np.float16],\n",
" ['wm', 'Width (m)', np.float16],\n",
" ['fi', 'Frontal Area (ft^2) ↓', np.float16],\n",
" ['fm', 'FArea (m^2)', np.float16],\n",
" ['crop', 'Crop (m^2)', np.float16],\n",
" ['cda', 'CdA ↓', np.float16],\n",
" ['r', 'ratio', np.float16],\n",
" ], columns=['keys', 'names', 'types'])\n",
" cdf['keys'] = '/' + cdf['keys']\n",
" #cdf = cdf.set_index('keys')\n",
" return cdf\n",
"cdf = columns_df()\n",
"display(cdf)\n",
"#c = mappings.pstep_from_df(cdf)\n",
"c = column_pstep(cdf)\n",
"col_dtypes = column_dtypes(cdf)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Make ↓', 'Model ↓', 'Year ↓', 'Cd ↓', 'Height (In) ↓', 'Width (In) ↓',\n",
" 'Frontal Area (ft^2) ↓', 'CdA ↓'],\n",
" dtype='object')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import io\n",
"df=pd.read_table(io.StringIO(inp_txt), dtype=col_dtypes, na_values='-')\n",
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Make ↓ object\n",
"Model ↓ object\n",
"Year ↓ object\n",
"Cd ↓ float16\n",
"Height (In) ↓ float16\n",
"Width (In) ↓ float16\n",
"Frontal Area (ft^2) ↓ float16\n",
"CdA ↓ float16\n",
"YearFrom float16\n",
"YearTo float16\n",
"dtype: object"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def parse_year_column(df):\n",
" ydf = df[c.years].str.split(' ?- ?').apply(pd.Series, convert_dtype=True)\n",
" ydf.columns = [c.yf, c.yt]\n",
" ydf[c.yf] = pd.to_numeric(ydf[c.yf], errors='coerce').astype(np.float16)\n",
" ydf[c.yt] = pd.to_numeric(ydf[c.yt], errors='coerce').astype(np.float16)\n",
" df = pd.concat((df, ydf), axis=1)\n",
" return df\n",
"ydf = parse_year_column(df)\n",
"ydf.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>Make ↓</th>\n",
" <th>Model ↓</th>\n",
" <th>Year ↓</th>\n",
" <th>Cd ↓</th>\n",
" <th>Height (In) ↓</th>\n",
" <th>Width (In) ↓</th>\n",
" <th>Frontal Area (ft^2) ↓</th>\n",
" <th>CdA ↓</th>\n",
" <th>YearFrom</th>\n",
" <th>YearTo</th>\n",
" <th>Height (m)</th>\n",
" <th>Width (m)</th>\n",
" <th>FArea (m^2)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>1997 - 1999</td>\n",
" <td>0.340088</td>\n",
" <td>54.68750</td>\n",
" <td>70.1250</td>\n",
" <td>21.593750</td>\n",
" <td>7.328125</td>\n",
" <td>1997</td>\n",
" <td>1999</td>\n",
" <td>1.389648</td>\n",
" <td>1.781250</td>\n",
" <td>2.005859</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>2000 - 2003</td>\n",
" <td>0.320068</td>\n",
" <td>55.50000</td>\n",
" <td>70.6250</td>\n",
" <td>22.000000</td>\n",
" <td>7.050781</td>\n",
" <td>2000</td>\n",
" <td>2003</td>\n",
" <td>1.410156</td>\n",
" <td>1.793945</td>\n",
" <td>2.042969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Acura</td>\n",
" <td>Integra</td>\n",
" <td>1994 - 2001</td>\n",
" <td>0.320068</td>\n",
" <td>51.90625</td>\n",
" <td>66.6875</td>\n",
" <td>19.500000</td>\n",
" <td>6.230469</td>\n",
" <td>1994</td>\n",
" <td>2001</td>\n",
" <td>1.318359</td>\n",
" <td>1.694336</td>\n",
" <td>1.811523</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Acura</td>\n",
" <td>NSX</td>\n",
" <td>1995 - 2005</td>\n",
" <td>0.320068</td>\n",
" <td>46.09375</td>\n",
" <td>71.3125</td>\n",
" <td>19.203125</td>\n",
" <td>6.128906</td>\n",
" <td>1995</td>\n",
" <td>2005</td>\n",
" <td>1.170898</td>\n",
" <td>1.811523</td>\n",
" <td>1.784180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Acura</td>\n",
" <td>RSX</td>\n",
" <td>2002 - 2004</td>\n",
" <td>0.320068</td>\n",
" <td>54.50000</td>\n",
" <td>67.8750</td>\n",
" <td>20.796875</td>\n",
" <td>6.660156</td>\n",
" <td>2002</td>\n",
" <td>2004</td>\n",
" <td>1.384766</td>\n",
" <td>1.724609</td>\n",
" <td>1.931641</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Make ↓ Model ↓ Year ↓ Cd ↓ Height (In) ↓ Width (In) ↓ \\\n",
"0 Acura CL 1997 - 1999 0.340088 54.68750 70.1250 \n",
"1 Acura CL 2000 - 2003 0.320068 55.50000 70.6250 \n",
"2 Acura Integra 1994 - 2001 0.320068 51.90625 66.6875 \n",
"3 Acura NSX 1995 - 2005 0.320068 46.09375 71.3125 \n",
"4 Acura RSX 2002 - 2004 0.320068 54.50000 67.8750 \n",
"\n",
" Frontal Area (ft^2) ↓ CdA ↓ YearFrom YearTo Height (m) Width (m) \\\n",
"0 21.593750 7.328125 1997 1999 1.389648 1.781250 \n",
"1 22.000000 7.050781 2000 2003 1.410156 1.793945 \n",
"2 19.500000 6.230469 1994 2001 1.318359 1.694336 \n",
"3 19.203125 6.128906 1995 2005 1.170898 1.811523 \n",
"4 20.796875 6.660156 2002 2004 1.384766 1.724609 \n",
"\n",
" FArea (m^2) \n",
"0 2.005859 \n",
"1 2.042969 \n",
"2 1.811523 \n",
"3 1.784180 \n",
"4 1.931641 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Convert units Inch/Feet --> Meter\n",
"import pint\n",
"ureg = pint.UnitRegistry()\n",
"def append_col_inch_to_meter(df, ci, cm):\n",
" df[cm] = (df[ci].values * ureg.inch).to('meter')\n",
"\n",
"append_col_inch_to_meter(ydf, c.hi, c.hm)\n",
"append_col_inch_to_meter(ydf, c.wi, c.wm)\n",
"ydf[c.fm] = (df[c.fi].values * ureg.feet ** 2).to('meter**2')\n",
"ydf.head()"
]
},
{
"cell_type": "code",
"execution_count": 62,
"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>Cd ↓</th>\n",
" <th>Height (In) ↓</th>\n",
" <th>Width (In) ↓</th>\n",
" <th>Frontal Area (ft^2) ↓</th>\n",
" <th>CdA ↓</th>\n",
" <th>YearFrom</th>\n",
" <th>YearTo</th>\n",
" <th>Height (m)</th>\n",
" <th>Width (m)</th>\n",
" <th>FArea (m^2)</th>\n",
" <th>ratio</th>\n",
" <th>Crop (m^2)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>290.000000</td>\n",
" <td>248.000000</td>\n",
" <td>249.000000</td>\n",
" <td>292.000000</td>\n",
" <td>289.000000</td>\n",
" <td>305.000000</td>\n",
" <td>244.000000</td>\n",
" <td>248.000000</td>\n",
" <td>249.000000</td>\n",
" <td>292.000000</td>\n",
" <td>242.000000</td>\n",
" <td>248.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.328857</td>\n",
" <td>56.437500</td>\n",
" <td>68.187500</td>\n",
" <td>22.468750</td>\n",
" <td>7.281250</td>\n",
" <td>inf</td>\n",
" <td>inf</td>\n",
" <td>1.434570</td>\n",
" <td>1.733398</td>\n",
" <td>2.087891</td>\n",
" <td>0.828613</td>\n",
" <td>2.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.051605</td>\n",
" <td>6.558594</td>\n",
" <td>5.550781</td>\n",
" <td>3.583984</td>\n",
" <td>2.476562</td>\n",
" <td>7.447734</td>\n",
" <td>5.480078</td>\n",
" <td>0.166626</td>\n",
" <td>0.140991</td>\n",
" <td>0.333008</td>\n",
" <td>0.022858</td>\n",
" <td>0.358154</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.150024</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1959.000000</td>\n",
" <td>1974.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.766602</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.302307</td>\n",
" <td>53.781250</td>\n",
" <td>66.625000</td>\n",
" <td>20.703125</td>\n",
" <td>6.378906</td>\n",
" <td>1992.000000</td>\n",
" <td>1998.000000</td>\n",
" <td>1.366455</td>\n",
" <td>1.692383</td>\n",
" <td>1.922852</td>\n",
" <td>0.810059</td>\n",
" <td>2.321777</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.320068</td>\n",
" <td>55.906250</td>\n",
" <td>67.875000</td>\n",
" <td>21.906250</td>\n",
" <td>6.898438</td>\n",
" <td>1996.000000</td>\n",
" <td>2001.000000</td>\n",
" <td>1.419922</td>\n",
" <td>1.724609</td>\n",
" <td>2.035156</td>\n",
" <td>0.832275</td>\n",
" <td>2.475586</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.340088</td>\n",
" <td>58.312500</td>\n",
" <td>70.187500</td>\n",
" <td>23.296875</td>\n",
" <td>7.539062</td>\n",
" <td>2002.000000</td>\n",
" <td>2004.000000</td>\n",
" <td>1.481445</td>\n",
" <td>1.783203</td>\n",
" <td>2.164062</td>\n",
" <td>0.840210</td>\n",
" <td>2.602051</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.580078</td>\n",
" <td>80.000000</td>\n",
" <td>79.125000</td>\n",
" <td>35.093750</td>\n",
" <td>18.250000</td>\n",
" <td>2017.000000</td>\n",
" <td>2016.000000</td>\n",
" <td>2.033203</td>\n",
" <td>2.009766</td>\n",
" <td>3.259766</td>\n",
" <td>0.993652</td>\n",
" <td>3.802734</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Cd ↓ Height (In) ↓ Width (In) ↓ Frontal Area (ft^2) ↓ \\\n",
"count 290.000000 248.000000 249.000000 292.000000 \n",
"mean 0.328857 56.437500 68.187500 22.468750 \n",
"std 0.051605 6.558594 5.550781 3.583984 \n",
"min 0.150024 0.000000 0.000000 0.000000 \n",
"25% 0.302307 53.781250 66.625000 20.703125 \n",
"50% 0.320068 55.906250 67.875000 21.906250 \n",
"75% 0.340088 58.312500 70.187500 23.296875 \n",
"max 0.580078 80.000000 79.125000 35.093750 \n",
"\n",
" CdA ↓ YearFrom YearTo Height (m) Width (m) \\\n",
"count 289.000000 305.000000 244.000000 248.000000 249.000000 \n",
"mean 7.281250 inf inf 1.434570 1.733398 \n",
"std 2.476562 7.447734 5.480078 0.166626 0.140991 \n",
"min 0.000000 1959.000000 1974.000000 0.000000 0.000000 \n",
"25% 6.378906 1992.000000 1998.000000 1.366455 1.692383 \n",
"50% 6.898438 1996.000000 2001.000000 1.419922 1.724609 \n",
"75% 7.539062 2002.000000 2004.000000 1.481445 1.783203 \n",
"max 18.250000 2017.000000 2016.000000 2.033203 2.009766 \n",
"\n",
" FArea (m^2) ratio Crop (m^2) \n",
"count 292.000000 242.000000 248.000000 \n",
"mean 2.087891 0.828613 2.500000 \n",
"std 0.333008 0.022858 0.358154 \n",
"min 0.000000 0.766602 0.000000 \n",
"25% 1.922852 0.810059 2.321777 \n",
"50% 2.035156 0.832275 2.475586 \n",
"75% 2.164062 0.840210 2.602051 \n",
"max 3.259766 0.993652 3.802734 "
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ydf[c.crop] = ydf[c.hm] * ydf[c.wm]\n",
"ydf[c.r] = ydf[c.fm] / ydf[c.crop]\n",
"ydf.describe()"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false,
"scrolled": 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>Make ↓</th>\n",
" <th>Model ↓</th>\n",
" <th>Year ↓</th>\n",
" <th>Cd ↓</th>\n",
" <th>Height (In) ↓</th>\n",
" <th>Width (In) ↓</th>\n",
" <th>Frontal Area (ft^2) ↓</th>\n",
" <th>CdA ↓</th>\n",
" <th>YearFrom</th>\n",
" <th>YearTo</th>\n",
" <th>Height (m)</th>\n",
" <th>Width (m)</th>\n",
" <th>FArea (m^2)</th>\n",
" <th>ratio</th>\n",
" <th>Crop (m^2)</th>\n",
" <th>Year</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>1997 - 1999</td>\n",
" <td>0.340088</td>\n",
" <td>54.6875</td>\n",
" <td>70.125</td>\n",
" <td>21.59375</td>\n",
" <td>7.328125</td>\n",
" <td>1997</td>\n",
" <td>1999</td>\n",
" <td>1.389648</td>\n",
" <td>1.781250</td>\n",
" <td>2.005859</td>\n",
" <td>0.810547</td>\n",
" <td>2.474609</td>\n",
" <td>1997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>1997 - 1999</td>\n",
" <td>0.340088</td>\n",
" <td>54.6875</td>\n",
" <td>70.125</td>\n",
" <td>21.59375</td>\n",
" <td>7.328125</td>\n",
" <td>1997</td>\n",
" <td>1999</td>\n",
" <td>1.389648</td>\n",
" <td>1.781250</td>\n",
" <td>2.005859</td>\n",
" <td>0.810547</td>\n",
" <td>2.474609</td>\n",
" <td>1998</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>1997 - 1999</td>\n",
" <td>0.340088</td>\n",
" <td>54.6875</td>\n",
" <td>70.125</td>\n",
" <td>21.59375</td>\n",
" <td>7.328125</td>\n",
" <td>1997</td>\n",
" <td>1999</td>\n",
" <td>1.389648</td>\n",
" <td>1.781250</td>\n",
" <td>2.005859</td>\n",
" <td>0.810547</td>\n",
" <td>2.474609</td>\n",
" <td>1999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>2000 - 2003</td>\n",
" <td>0.320068</td>\n",
" <td>55.5000</td>\n",
" <td>70.625</td>\n",
" <td>22.00000</td>\n",
" <td>7.050781</td>\n",
" <td>2000</td>\n",
" <td>2003</td>\n",
" <td>1.410156</td>\n",
" <td>1.793945</td>\n",
" <td>2.042969</td>\n",
" <td>0.807617</td>\n",
" <td>2.529297</td>\n",
" <td>2000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Acura</td>\n",
" <td>CL</td>\n",
" <td>2000 - 2003</td>\n",
" <td>0.320068</td>\n",
" <td>55.5000</td>\n",
" <td>70.625</td>\n",
" <td>22.00000</td>\n",
" <td>7.050781</td>\n",
" <td>2000</td>\n",
" <td>2003</td>\n",
" <td>1.410156</td>\n",
" <td>1.793945</td>\n",
" <td>2.042969</td>\n",
" <td>0.807617</td>\n",
" <td>2.529297</td>\n",
" <td>2001</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Make ↓ Model ↓ Year ↓ Cd ↓ Height (In) ↓ Width (In) ↓ \\\n",
"0 Acura CL 1997 - 1999 0.340088 54.6875 70.125 \n",
"1 Acura CL 1997 - 1999 0.340088 54.6875 70.125 \n",
"2 Acura CL 1997 - 1999 0.340088 54.6875 70.125 \n",
"3 Acura CL 2000 - 2003 0.320068 55.5000 70.625 \n",
"4 Acura CL 2000 - 2003 0.320068 55.5000 70.625 \n",
"\n",
" Frontal Area (ft^2) ↓ CdA ↓ YearFrom YearTo Height (m) Width (m) \\\n",
"0 21.59375 7.328125 1997 1999 1.389648 1.781250 \n",
"1 21.59375 7.328125 1997 1999 1.389648 1.781250 \n",
"2 21.59375 7.328125 1997 1999 1.389648 1.781250 \n",
"3 22.00000 7.050781 2000 2003 1.410156 1.793945 \n",
"4 22.00000 7.050781 2000 2003 1.410156 1.793945 \n",
"\n",
" FArea (m^2) ratio Crop (m^2) Year \n",
"0 2.005859 0.810547 2.474609 1997 \n",
"1 2.005859 0.810547 2.474609 1998 \n",
"2 2.005859 0.810547 2.474609 1999 \n",
"3 2.042969 0.807617 2.529297 2000 \n",
"4 2.042969 0.807617 2.529297 2001 "
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def spread_vehicles_per_year(ydf):\n",
" rows = []\n",
" for indx, row in ydf.dropna(axis=0, subset=[c.yf, c.yt]).iterrows():\n",
" if abs(row[c.yf] - row[c.yt]) > 30:\n",
" continue\n",
" for year in np.arange(row[c.yf], row[c.yt]+1):\n",
" row[c.year] = int(year)\n",
" rows.append(row.tolist())\n",
" y2df = pd.DataFrame(rows, columns=list(ydf.columns) + [c.year])\n",
" return y2df\n",
"y2df = spread_vehicles_per_year(ydf)\n",
"y2df.head()"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nVb85/7f03qp62fz+P1NVt1bVB6rq1+dLObef86qq+lBV3VVVz1u43/wdsaHzV1WPmdd/rqp++oJ9\nmb8jdIC5e25V/f78d+ptVfXXFvY1fO5aa5O7JfnOJNckuXPhvncl+c751y9K8o/mX1+a5I4k3zLf\n/jM51+n/vSR/af71WzM7g0v317futyHzd8HzviWz885vb5u/Cc9dZuf9f+P8669N8uEkTzJ3KzN/\n/0NmywWT5LFJfn/hOebv6OfucUmumX/9qCQfSPLUJK9J8qPz+1+R5NXzr69OcntmSzdPJ/kD//et\n1Pw9Isl3JPmhJD99wb7M37Tn7tuSPG7+9dOSfOxi5m6SHfE2O0Xhpy+4+5vauVMX/kaS751//bwk\nd7TW3jd/7qdba62qHpfk61prt83rfjGzteiMbOD8LXphZhd9ivnrY+DctSSPrKpLM/tP5UtJPmvu\n+lly/r5n/vXVSX5z/rxPJbm/qp5l/vporf1Ra+09868/n+SuzM409vwkvzAv+4Wcm4vvTvKm1tpX\nWmv3JPlQkmvNXx9D56+19sXW2u9m9nvzYebv6B1g7u5orf3R/Ov3J7ly/gnjgeZukkF8F++vqu+e\nf/19mX2TkuSbk6Sqfm3+UcH/NL//8ZldQGjbrhcT4kjsNn+L/pucO4Wl+ZuO3ebuV5J8Mcl9Se5J\n8k9ba/fH3E3NhfP3xPnXdyT57qq6tKq+Mckz54+Zv86q6nRmn2y8M8lVrbVPJrPAkOTPzcsuvGDe\nx+f3mb/Olpy/3Zi/jobOXVX97STvbrOrxx9o7lYpiP9gkh+uqtuSPDLJn87vvyzJszPrpv6VJH9r\ncb0Ok7Hb/CVJquraJF9orf3HHoNjT7vN3X+e5CuZfaz355P8w/kvMaZlt/n7uczC221J/lmS30ny\nYJcR8rD5Gv5fSfIj8+7chWdUcIaFCTN/q2vo3FXV05L8RGbLiw5s7Av6HJrW2geTXJ8kVfVNSf7L\n+UMfS/J/t9Y+PX/srUm+Pckbcq7zk+x9MSFGtsf8bbvwgk4fj/mbhD3m7oVJfq219lCST1XV7yR5\nVmYX3TJ3E7Hb/LXWHkzyD7br5vP3wST3x/x1UVWXZRYE/mVrbfu6Gp+sqqtaa5+cf/T9x/P7d/sd\n6XdnJwPnbzfmr4Ohc1dVT0jyq0n+2/nSsOSAczfljnjNb7ON2WXuU1WXJPmxJD87f+jXk3xrVV05\n/0aeSfL++ccIn6mqa6uqkvxAFi4YxOiWnb/M5+f7Ml8fnjz8MZD562O/ufvn84c+kuSvzx97ZJLr\nktxl7rpb6t9eVX1tVT1i/vV/keTLrbW7zV9XP5fkP7bWfmrhvrdkdpBtkvx3OTcXb0nygqq6fL60\n6ClJ3mX+uhoyf4se/vdq/rpZeu6q6mSSf5vkFa21d24XH3jueh+tussRrG9M8onMDmL4SJIXJ3lZ\nZkey3p3kf72g/vszu+rmnUl+YuH+ZyZ5b2YHsfxU79d1XG4HmL8zSX53h/2YvwnPXWbLHP7P+b+9\n9yX5B+Zupebv1Py+92d20bUnmr+uc/fszJYGvSezs6G8O8kNSR6T2UG2H5jP08mF57wqs7Ol3JXk\neeZv5ebvw0n+3ySfnf97far5m/7cJfmfk3xuXrdd/2cPOncu6AMAAB1MeWkKAACsLUEcAAA6EMQB\nAKADQRwAADoQxAEAoANBHAAAOhDEAdZIVf12Vd2wsP1fz684DMDEOI84wBqpqqcl+b+SXJPk8swu\nNvG8du4yzAfZ56WttQcPZ4QAbBPEAdZMVb06yRczu/rpZ1tr/0tV/UCSH07yNZldyfbGee2/SPKM\nJF+b5Jdbaz8+v/+jSX4pyfMyuyLnvzr6VwKw3i7rPQAADt0/yqwT/qUkz5p3yf9Wkr/cWnuoqv5F\nVb2gtfamJK9ord1fVZcm+a2q+pXW2t3z/XyytfbMPi8BYP0J4gBrprX2xar65SSfa619uaqem+RZ\nSX6/qirJlUk+Mi//O1X1g5n9f/ANSa5Osh3Ef/mIhw5wrAjiAOvpofktSSrJz7XWzi4WVNVTkrws\nybNaa5+rqn+ZWUjf9oUjGSnAMeWsKQDr7zeSfF9VfX2SVNVjquqJSR6d5LNJPl9V35Dk+o5jBDh2\ndMQB1lxr7X1VdVOS36iqS5L8aZL/vrX2H6rqriR3Jbk3yTsWn9ZhqADHirOmAABAB5amAABAB4I4\nAAB0IIgDAEAHgjgAAHQgiAMAQAeCOAAAdCCIAwBAB/8/AHC8y1yr2xgAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xafb6278>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fdf = y2df.dropna(axis=0, subset=[c.r])\n",
"fdf = fdf.sort_values(c.year)\n",
"fdf.plot.scatter(c.year, c.r, figsize=(12,8), marker='+');"
]
},
{
"cell_type": "code",
"execution_count": 65,
"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>FArea (m^2)</th>\n",
" <th>ratio</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1253.000000</td>\n",
" <td>1253.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>2.074625</td>\n",
" <td>0.830420</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.282124</td>\n",
" <td>0.024230</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.407227</td>\n",
" <td>0.774414</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1.900391</td>\n",
" <td>0.810059</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>2.019531</td>\n",
" <td>0.833008</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>2.150391</td>\n",
" <td>0.840332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>3.167969</td>\n",
" <td>0.993652</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" FArea (m^2) ratio\n",
"count 1253.000000 1253.000000\n",
"mean 2.074625 0.830420\n",
"std 0.282124 0.024230\n",
"min 1.407227 0.774414\n",
"25% 1.900391 0.810059\n",
"50% 2.019531 0.833008\n",
"75% 2.150391 0.840332\n",
"max 3.167969 0.993652"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Year</th>\n",
" <th>ratio</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1195</th>\n",
" <td>1970</td>\n",
" <td>0.788086</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1196</th>\n",
" <td>1971</td>\n",
" <td>0.788086</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1197</th>\n",
" <td>1972</td>\n",
" <td>0.788086</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1198</th>\n",
" <td>1973</td>\n",
" <td>0.788086</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1199</th>\n",
" <td>1974</td>\n",
" <td>0.788086</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1173</th>\n",
" <td>1979</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1174</th>\n",
" <td>1980</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1175</th>\n",
" <td>1981</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1176</th>\n",
" <td>1982</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1177</th>\n",
" <td>1983</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>530</th>\n",
" <td>1984</td>\n",
" <td>0.811035</td>\n",
" </tr>\n",
" <tr>\n",
" <th>599</th>\n",
" <td>1984</td>\n",
" <td>0.813477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1178</th>\n",
" <td>1984</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>417</th>\n",
" <td>1985</td>\n",
" <td>0.839355</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1387</th>\n",
" <td>1985</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>600</th>\n",
" <td>1985</td>\n",
" <td>0.813477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1179</th>\n",
" <td>1985</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>531</th>\n",
" <td>1985</td>\n",
" <td>0.811035</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1180</th>\n",
" <td>1986</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1522</th>\n",
" <td>1986</td>\n",
" <td>0.859863</td>\n",
" </tr>\n",
" <tr>\n",
" <th>418</th>\n",
" <td>1986</td>\n",
" <td>0.839355</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1388</th>\n",
" <td>1986</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>532</th>\n",
" <td>1986</td>\n",
" <td>0.811035</td>\n",
" </tr>\n",
" <tr>\n",
" <th>601</th>\n",
" <td>1986</td>\n",
" <td>0.813477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1523</th>\n",
" <td>1987</td>\n",
" <td>0.859863</td>\n",
" </tr>\n",
" <tr>\n",
" <th>419</th>\n",
" <td>1987</td>\n",
" <td>0.839355</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1389</th>\n",
" <td>1987</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>892</th>\n",
" <td>1987</td>\n",
" <td>0.774414</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1181</th>\n",
" <td>1987</td>\n",
" <td>0.838867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>602</th>\n",
" <td>1987</td>\n",
" <td>0.813477</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1460</th>\n",
" <td>2008</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>702</th>\n",
" <td>2008</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1320</th>\n",
" <td>2008</td>\n",
" <td>0.840332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1607</th>\n",
" <td>2009</td>\n",
" <td>0.845215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>180</th>\n",
" <td>2009</td>\n",
" <td>0.816406</td>\n",
" </tr>\n",
" <tr>\n",
" <th>703</th>\n",
" <td>2009</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1433</th>\n",
" <td>2009</td>\n",
" <td>0.809570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1461</th>\n",
" <td>2009</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1321</th>\n",
" <td>2009</td>\n",
" <td>0.840332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>704</th>\n",
" <td>2010</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1462</th>\n",
" <td>2010</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1434</th>\n",
" <td>2010</td>\n",
" <td>0.840820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1435</th>\n",
" <td>2011</td>\n",
" <td>0.840820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1463</th>\n",
" <td>2011</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>187</th>\n",
" <td>2011</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>705</th>\n",
" <td>2011</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>188</th>\n",
" <td>2012</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1464</th>\n",
" <td>2012</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>706</th>\n",
" <td>2012</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1436</th>\n",
" <td>2012</td>\n",
" <td>0.840820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1437</th>\n",
" <td>2013</td>\n",
" <td>0.840820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1465</th>\n",
" <td>2013</td>\n",
" <td>0.808105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>189</th>\n",
" <td>2013</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1438</th>\n",
" <td>2014</td>\n",
" <td>0.840820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>819</th>\n",
" <td>2014</td>\n",
" <td>0.815918</td>\n",
" </tr>\n",
" <tr>\n",
" <th>190</th>\n",
" <td>2014</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>820</th>\n",
" <td>2015</td>\n",
" <td>0.815918</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1439</th>\n",
" <td>2015</td>\n",
" <td>0.840820</td>\n",
" </tr>\n",
" <tr>\n",
" <th>191</th>\n",
" <td>2015</td>\n",
" <td>0.839844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>821</th>\n",
" <td>2016</td>\n",
" <td>0.815918</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1253 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" Year ratio\n",
"1195 1970 0.788086\n",
"1196 1971 0.788086\n",
"1197 1972 0.788086\n",
"1198 1973 0.788086\n",
"1199 1974 0.788086\n",
"1173 1979 0.838867\n",
"1174 1980 0.838867\n",
"1175 1981 0.838867\n",
"1176 1982 0.838867\n",
"1177 1983 0.838867\n",
"530 1984 0.811035\n",
"599 1984 0.813477\n",
"1178 1984 0.838867\n",
"417 1985 0.839355\n",
"1387 1985 0.808105\n",
"600 1985 0.813477\n",
"1179 1985 0.838867\n",
"531 1985 0.811035\n",
"1180 1986 0.838867\n",
"1522 1986 0.859863\n",
"418 1986 0.839355\n",
"1388 1986 0.808105\n",
"532 1986 0.811035\n",
"601 1986 0.813477\n",
"1523 1987 0.859863\n",
"419 1987 0.839355\n",
"1389 1987 0.808105\n",
"892 1987 0.774414\n",
"1181 1987 0.838867\n",
"602 1987 0.813477\n",
"... ... ...\n",
"1460 2008 0.808105\n",
"702 2008 0.839844\n",
"1320 2008 0.840332\n",
"1607 2009 0.845215\n",
"180 2009 0.816406\n",
"703 2009 0.839844\n",
"1433 2009 0.809570\n",
"1461 2009 0.808105\n",
"1321 2009 0.840332\n",
"704 2010 0.839844\n",
"1462 2010 0.808105\n",
"1434 2010 0.840820\n",
"1435 2011 0.840820\n",
"1463 2011 0.808105\n",
"187 2011 0.839844\n",
"705 2011 0.839844\n",
"188 2012 0.839844\n",
"1464 2012 0.808105\n",
"706 2012 0.839844\n",
"1436 2012 0.840820\n",
"1437 2013 0.840820\n",
"1465 2013 0.808105\n",
"189 2013 0.839844\n",
"1438 2014 0.840820\n",
"819 2014 0.815918\n",
"190 2014 0.839844\n",
"820 2015 0.815918\n",
"1439 2015 0.840820\n",
"191 2015 0.839844\n",
"821 2016 0.815918\n",
"\n",
"[1253 rows x 2 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(fdf[[c.fm, c.r]].describe())\n",
"display(fdf[[c.year, c.r]])"
]
}
],
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment