Import libraries


In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
pd.set_option('display.max_columns', None)
%matplotlib inline

Define source paths


In [2]:
source_path = "/Users/sandrapietrowska/Documents/Trainings/luigi/data_source/"

Import data


In [3]:
raw_dataset = pd.read_csv(source_path + "Speed_Dating_Data.csv")

Data exploration

Shape, types


In [4]:
raw_dataset.shape


Out[4]:
(8378, 195)

In [5]:
raw_dataset.head()


Out[5]:
iid id gender idg condtn wave round position positin1 order partner pid match int_corr samerace age_o race_o pf_o_att pf_o_sin pf_o_int pf_o_fun pf_o_amb pf_o_sha dec_o attr_o sinc_o intel_o fun_o amb_o shar_o like_o prob_o met_o age field field_cd undergra mn_sat tuition race imprace imprelig from zipcode income goal date go_out career career_c sports tvsports exercise dining museums art hiking gaming clubbing reading tv theater movies concerts music shopping yoga exphappy expnum attr1_1 sinc1_1 intel1_1 fun1_1 amb1_1 shar1_1 attr4_1 sinc4_1 intel4_1 fun4_1 amb4_1 shar4_1 attr2_1 sinc2_1 intel2_1 fun2_1 amb2_1 shar2_1 attr3_1 sinc3_1 fun3_1 intel3_1 amb3_1 attr5_1 sinc5_1 intel5_1 fun5_1 amb5_1 dec attr sinc intel fun amb shar like prob met match_es attr1_s sinc1_s intel1_s fun1_s amb1_s shar1_s attr3_s sinc3_s intel3_s fun3_s amb3_s satis_2 length numdat_2 attr7_2 sinc7_2 intel7_2 fun7_2 amb7_2 shar7_2 attr1_2 sinc1_2 intel1_2 fun1_2 amb1_2 shar1_2 attr4_2 sinc4_2 intel4_2 fun4_2 amb4_2 shar4_2 attr2_2 sinc2_2 intel2_2 fun2_2 amb2_2 shar2_2 attr3_2 sinc3_2 intel3_2 fun3_2 amb3_2 attr5_2 sinc5_2 intel5_2 fun5_2 amb5_2 you_call them_cal date_3 numdat_3 num_in_3 attr1_3 sinc1_3 intel1_3 fun1_3 amb1_3 shar1_3 attr7_3 sinc7_3 intel7_3 fun7_3 amb7_3 shar7_3 attr4_3 sinc4_3 intel4_3 fun4_3 amb4_3 shar4_3 attr2_3 sinc2_3 intel2_3 fun2_3 amb2_3 shar2_3 attr3_3 sinc3_3 intel3_3 fun3_3 amb3_3 attr5_3 sinc5_3 intel5_3 fun5_3 amb5_3
0 1 1.0 0 1 1 1 10 7 NaN 4 1 11.0 0 0.14 0 27.0 2.0 35.0 20.0 20.0 20.0 0.0 5.0 0 6.0 8.0 8.0 8.0 8.0 6.0 7.0 4.0 2.0 21.0 Law 1.0 NaN NaN NaN 4.0 2.0 4.0 Chicago 60,521 69,487.00 2.0 7.0 1.0 lawyer NaN 9.0 2.0 8.0 9.0 1.0 1.0 5.0 1.0 5.0 6.0 9.0 1.0 10.0 10.0 9.0 8.0 1.0 3.0 2.0 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN 35.0 20.0 15.0 20.0 5.0 5.0 6.0 8.0 8.0 8.0 7.0 NaN NaN NaN NaN NaN 1 6.0 9.0 7.0 7.0 6.0 5.0 7.0 6.0 2.0 4.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 2.0 1.0 NaN NaN NaN NaN NaN NaN 19.44 16.67 13.89 22.22 11.11 16.67 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 7.0 8.0 7.0 6.0 NaN NaN NaN NaN NaN 1.0 1.0 0.0 NaN NaN 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.0 7.0 7.0 7.0 7.0 NaN NaN NaN NaN NaN
1 1 1.0 0 1 1 1 10 7 NaN 3 2 12.0 0 0.54 0 22.0 2.0 60.0 0.0 0.0 40.0 0.0 0.0 0 7.0 8.0 10.0 7.0 7.0 5.0 8.0 4.0 2.0 21.0 Law 1.0 NaN NaN NaN 4.0 2.0 4.0 Chicago 60,521 69,487.00 2.0 7.0 1.0 lawyer NaN 9.0 2.0 8.0 9.0 1.0 1.0 5.0 1.0 5.0 6.0 9.0 1.0 10.0 10.0 9.0 8.0 1.0 3.0 2.0 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN 35.0 20.0 15.0 20.0 5.0 5.0 6.0 8.0 8.0 8.0 7.0 NaN NaN NaN NaN NaN 1 7.0 8.0 7.0 8.0 5.0 6.0 7.0 5.0 1.0 4.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 2.0 1.0 NaN NaN NaN NaN NaN NaN 19.44 16.67 13.89 22.22 11.11 16.67 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 7.0 8.0 7.0 6.0 NaN NaN NaN NaN NaN 1.0 1.0 0.0 NaN NaN 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.0 7.0 7.0 7.0 7.0 NaN NaN NaN NaN NaN
2 1 1.0 0 1 1 1 10 7 NaN 10 3 13.0 1 0.16 1 22.0 4.0 19.0 18.0 19.0 18.0 14.0 12.0 1 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0 1.0 21.0 Law 1.0 NaN NaN NaN 4.0 2.0 4.0 Chicago 60,521 69,487.00 2.0 7.0 1.0 lawyer NaN 9.0 2.0 8.0 9.0 1.0 1.0 5.0 1.0 5.0 6.0 9.0 1.0 10.0 10.0 9.0 8.0 1.0 3.0 2.0 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN 35.0 20.0 15.0 20.0 5.0 5.0 6.0 8.0 8.0 8.0 7.0 NaN NaN NaN NaN NaN 1 5.0 8.0 9.0 8.0 5.0 7.0 7.0 NaN 1.0 4.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 2.0 1.0 NaN NaN NaN NaN NaN NaN 19.44 16.67 13.89 22.22 11.11 16.67 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 7.0 8.0 7.0 6.0 NaN NaN NaN NaN NaN 1.0 1.0 0.0 NaN NaN 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.0 7.0 7.0 7.0 7.0 NaN NaN NaN NaN NaN
3 1 1.0 0 1 1 1 10 7 NaN 5 4 14.0 1 0.61 0 23.0 2.0 30.0 5.0 15.0 40.0 5.0 5.0 1 7.0 8.0 9.0 8.0 9.0 8.0 7.0 7.0 2.0 21.0 Law 1.0 NaN NaN NaN 4.0 2.0 4.0 Chicago 60,521 69,487.00 2.0 7.0 1.0 lawyer NaN 9.0 2.0 8.0 9.0 1.0 1.0 5.0 1.0 5.0 6.0 9.0 1.0 10.0 10.0 9.0 8.0 1.0 3.0 2.0 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN 35.0 20.0 15.0 20.0 5.0 5.0 6.0 8.0 8.0 8.0 7.0 NaN NaN NaN NaN NaN 1 7.0 6.0 8.0 7.0 6.0 8.0 7.0 6.0 2.0 4.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 2.0 1.0 NaN NaN NaN NaN NaN NaN 19.44 16.67 13.89 22.22 11.11 16.67 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 7.0 8.0 7.0 6.0 NaN NaN NaN NaN NaN 1.0 1.0 0.0 NaN NaN 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.0 7.0 7.0 7.0 7.0 NaN NaN NaN NaN NaN
4 1 1.0 0 1 1 1 10 7 NaN 7 5 15.0 1 0.21 0 24.0 3.0 30.0 10.0 20.0 10.0 10.0 20.0 1 8.0 7.0 9.0 6.0 9.0 7.0 8.0 6.0 2.0 21.0 Law 1.0 NaN NaN NaN 4.0 2.0 4.0 Chicago 60,521 69,487.00 2.0 7.0 1.0 lawyer NaN 9.0 2.0 8.0 9.0 1.0 1.0 5.0 1.0 5.0 6.0 9.0 1.0 10.0 10.0 9.0 8.0 1.0 3.0 2.0 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN 35.0 20.0 15.0 20.0 5.0 5.0 6.0 8.0 8.0 8.0 7.0 NaN NaN NaN NaN NaN 1 5.0 6.0 7.0 7.0 6.0 6.0 6.0 6.0 2.0 4.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 2.0 1.0 NaN NaN NaN NaN NaN NaN 19.44 16.67 13.89 22.22 11.11 16.67 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 6.0 7.0 8.0 7.0 6.0 NaN NaN NaN NaN NaN 1.0 1.0 0.0 NaN NaN 15.0 20.0 20.0 15.0 15.0 15.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 5.0 7.0 7.0 7.0 7.0 NaN NaN NaN NaN NaN

In [6]:
raw_dataset.dtypes.value_counts()


Out[6]:
float64    174
int64       13
object       8
dtype: int64

Missing values


In [7]:
raw_dataset.isnull().sum().head(10)


Out[7]:
iid            0
id             1
gender         0
idg            0
condtn         0
wave           0
round          0
position       0
positin1    1846
order          0
dtype: int64

In [8]:
summary = raw_dataset.describe().transpose()
print summary.head(15)


           count        mean         std   min     25%     50%     75%     max
iid       8378.0  283.675937  158.583367  1.00  154.00  281.00  407.00  552.00
id        8377.0    8.960248    5.491329  1.00    4.00    8.00   13.00   22.00
gender    8378.0    0.500597    0.500029  0.00    0.00    1.00    1.00    1.00
idg       8378.0   17.327166   10.940735  1.00    8.00   16.00   26.00   44.00
condtn    8378.0    1.828837    0.376673  1.00    2.00    2.00    2.00    2.00
wave      8378.0   11.350919    5.995903  1.00    7.00   11.00   15.00   21.00
round     8378.0   16.872046    4.358458  5.00   14.00   18.00   20.00   22.00
position  8378.0    9.042731    5.514939  1.00    4.00    8.00   13.00   22.00
positin1  6532.0    9.295775    5.650199  1.00    4.00    9.00   14.00   22.00
order     8378.0    8.927668    5.477009  1.00    4.00    8.00   13.00   22.00
partner   8378.0    8.963595    5.491068  1.00    4.00    8.00   13.00   22.00
pid       8368.0  283.863767  158.584899  1.00  154.00  281.00  408.00  552.00
match     8378.0    0.164717    0.370947  0.00    0.00    0.00    0.00    1.00
int_corr  8220.0    0.196010    0.303539 -0.83   -0.02    0.21    0.43    0.91
samerace  8378.0    0.395799    0.489051  0.00    0.00    0.00    1.00    1.00

In [9]:
plt.hist(raw_dataset['age'].dropna());


We want to know what you look for in the opposite sex.


In [10]:
# Attractiveness
plt.hist(raw_dataset['attr_o'].dropna());



In [11]:
# Sincere
plt.hist(raw_dataset['sinc_o'].dropna());



In [12]:
# Intelligent
plt.hist(raw_dataset['intel_o'].dropna()) ;



In [13]:
# Fun
plt.hist(raw_dataset['fun_o'].dropna());



In [14]:
# Ambitious
plt.hist(raw_dataset['amb_o'].dropna());


What is your primary goal in participating in this event? 

  • Seemed like a fun night out=1,
  • To meet new people=2,
  • To get a date=3,
  • Looking for a serious relationship=4,
  • To say I did it=5,
  • Other=6

In [15]:
raw_dataset.groupby('date').iid.nunique().sort_values(ascending=False)


Out[15]:
date
6.0    136
4.0    131
5.0     99
7.0     94
3.0     54
2.0     22
1.0      7
Name: iid, dtype: int64

In general, how frequently do you go on dates? 

  • Several times a week=1
  • Twice a week=2
  • Once a week=3
  • Twice a month=4
  • Once a month=5
  • Several times a year=6
  • Almost never=7

In [16]:
raw_dataset.groupby('go_out').iid.nunique().sort_values(ascending=False)


Out[16]:
go_out
2.0    191
1.0    177
3.0    127
4.0     29
5.0     12
6.0      6
7.0      2
Name: iid, dtype: int64

In [17]:
raw_dataset.groupby('career').iid.nunique().sort_values(ascending=False).head(10)


Out[17]:
career
Finance          13
professor        12
Lawyer           11
Professor        10
Social Worker     9
Consulting        8
lawyer            7
Business          7
Law               7
Academic          6
Name: iid, dtype: int64

In [ ]:


In [ ]: