Contents

Python Pandas For Your Grandpa - 4.8 Challenge: Product Volumes

Setup

Given a Series of product descriptions like “birch table measures 3’x6’x2’", estimate the volume of each product. (Note that 3’ means 3 feet.)

import numpy as np
import pandas as pd

descriptions = pd.Series([
    "soft and fuzzy teddy bear, product dims: 1'x2'x1', shipping not included",
    "birch table measures 3'x6'x2'",
    "tortilla blanket ~ sleep like a fajita ~ 6'x8'x1'",
    "inflatable arm tube man | 12'x1'x1' when inflated",
    "dinosaur costume -- 6'x4'x2' -- for kids and small adults"
], dtype='string')

Solution 1

I came up with two solutions to this one, both of which use regular expressions. Now, even though we didn’t cover regular expressions in the course, I included this problem because once you do learn regular expressions, you’ll wanna know how to use them with pandas. And, this’ll give you a good chance to see how they’re useful.

dims = descriptions.str.extract(r"(\d+)'x(\d+)'x(\d+)'").astype('int64')
dims.product(axis=1)
## 0     2
## 1    36
## 2    48
## 3    12
## 4    48
## dtype: int64

Solution 2

dims = descriptions.str.extractall(r"(\d+)'").astype('int64')
dims.groupby(dims.index.get_level_values(0)).agg(pd.Series.product)
##     0
## 0   2
## 1  36
## 2  48
## 3  12
## 4  48

Course Curriculum

  1. Introduction
    1.1 Introduction
  2. Series
    2.1 Series Creation
    2.2 Series Basic Indexing
    2.3 Series Basic Operations
    2.4 Series Boolean Indexing
    2.5 Series Missing Values
    2.6 Series Vectorization
    2.7 Series apply()
    2.8 Series View vs Copy
    2.9 Challenge: Baby Names
    2.10 Challenge: Bees Knees
    2.11 Challenge: Car Shopping
    2.12 Challenge: Price Gouging
    2.13 Challenge: Fair Teams
  3. DataFrame
    3.1 DataFrame Creation
    3.2 DataFrame To And From CSV
    3.3 DataFrame Basic Indexing
    3.4 DataFrame Basic Operations
    3.5 DataFrame apply()
    3.6 DataFrame View vs Copy
    3.7 DataFrame merge()
    3.8 DataFrame Aggregation
    3.9 DataFrame groupby()
    3.10 Challenge: Hobbies
    3.11 Challenge: Party Time
    3.12 Challenge: Vending Machines
    3.13 Challenge: Cradle Robbers
    3.14 Challenge: Pot Holes
  4. Advanced
    4.1 Strings
    4.2 Dates And Times
    4.3 Categoricals
    4.4 MultiIndex
    4.5 DataFrame Reshaping
    4.6 Challenge: Class Transitions
    4.7 Challenge: Rose Thorn
    4.8 Challenge: Product Volumes
    4.9 Challenge: Session Groups
    4.10 Challenge: OB-GYM
  5. Final Boss
    5.1 Challenge: COVID Tracing
    5.2 Challenge: Pickle
    5.3 Challenge: TV Commercials
    5.4 Challenge: Family IQ
    5.5 Challenge: Concerts