Python Pandas For Your Grandpa - 3.10 Challenge: Hobbies
Contents
Setup
Suppose we’ve polled five couples on their hobbies. For each couple, determine what hobbies the man has that the woman doesn’t have and what hobbies the woman has that the man doesn’t have.
import numpy as np
import pandas as pd
couples = pd.DataFrame({
'man': [
['fishing', 'biking', 'reading'],
['hunting', 'mudding', 'fishing'],
['reading', 'movies', 'running'],
['running', 'reading', 'biking', 'mudding'],
['movies', 'reading', 'yodeling']
],
'woman': [
['biking', 'reading', 'movies'],
['fishing', 'drinking'],
['knitting', 'reading'],
['running', 'biking', 'fishing', 'movies'],
['movies']
]
})
print(couples)
## man woman
## 0 [fishing, biking, reading] [biking, reading, movies]
## 1 [hunting, mudding, fishing] [fishing, drinking]
## 2 [reading, movies, running] [knitting, reading]
## 3 [running, reading, biking, mudding] [running, biking, fishing, movies]
## 4 [movies, reading, yodeling] [movies]
Solution
sets = couples.applymap(set)
woman_not_man = sets.diff(axis=1, periods=1).drop(columns='man')
man_not_woman = sets.diff(periods=-1, axis=1).drop(columns='woman')
hobbies_not_shared = pd.concat((man_not_woman, woman_not_man), axis=1).applymap(list)
print(hobbies_not_shared)
## man woman
## 0 [fishing] [movies]
## 1 [mudding, hunting] [drinking]
## 2 [running, movies] [knitting]
## 3 [mudding, reading] [fishing, movies]
## 4 [yodeling, reading] []
Course Curriculum
- Introduction
1.1 Introduction - 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 Seriesapply()
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 - DataFrame
3.1 DataFrame Creation
3.2 DataFrame To And From CSV
3.3 DataFrame Basic Indexing
3.4 DataFrame Basic Operations
3.5 DataFrameapply()
3.6 DataFrame View vs Copy
3.7 DataFramemerge()
3.8 DataFrame Aggregation
3.9 DataFramegroupby()
3.10 Challenge: Hobbies
3.11 Challenge: Party Time
3.12 Challenge: Vending Machines
3.13 Challenge: Cradle Robbers
3.14 Challenge: Pot Holes - 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 - 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