In [35]:
import nsfg
df = nsfg.ReadFemPreg()
df


Out[35]:
caseid pregordr howpreg_n howpreg_p moscurrp nowprgdk pregend1 pregend2 nbrnaliv multbrth cmotpreg prgoutcome cmprgend flgdkmo1 cmprgbeg ageatend hpageend gestasun_m gestasun_w wksgest
0 1 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1093 NaN 1084 NaN NaN 9 0 39 ...
1 1 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1166 NaN 1157 NaN NaN 9 0 39 ...
2 2 1 NaN NaN NaN NaN 5 NaN 3 5 NaN 1 1156 NaN 1147 NaN NaN 0 39 39 ...
3 2 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1198 NaN 1189 NaN NaN 0 39 39 ...
4 2 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1204 NaN 1195 NaN NaN 0 39 39 ...
5 6 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1074 NaN 1065 NaN NaN 0 38 38 ...
6 6 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1096 NaN 1087 NaN NaN 0 40 40 ...
7 6 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1112 NaN 1102 NaN NaN 0 42 42 ...
8 7 1 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1095 NaN 1086 NaN NaN 9 0 39 ...
9 7 2 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1146 NaN 1138 NaN NaN 8 0 35 ...
10 12 1 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1060 NaN 1051 NaN NaN 9 0 39 ...
11 14 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1065 NaN 1056 NaN NaN 9 0 39 ...
12 14 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1084 NaN 1076 NaN NaN 8 2 37 ...
13 14 3 NaN NaN NaN NaN 3 NaN NaN NaN 1147 2 1147 1 1145 30 31 2 0 9 ...
14 15 1 NaN NaN NaN NaN 1 NaN NaN NaN 1174 2 1174 0 1173 NaN 27 0 3 3 ...
15 15 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1184 NaN 1176 NaN NaN 0 33 33 ...
16 15 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1208 NaN 1200 NaN NaN 0 33 33 ...
17 18 1 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 943 NaN 934 NaN NaN 9 0 39 ...
18 18 2 NaN NaN NaN NaN 1 NaN NaN NaN 1050 2 1050 0 1049 NaN 42 0 5 5 ...
19 21 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1137 NaN 1128 NaN NaN 9 2 41 ...
20 21 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1169 NaN 1160 NaN NaN 9 0 39 ...
21 23 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 953 NaN 944 NaN NaN 9 0 39 ...
22 23 2 NaN NaN NaN NaN 1 NaN NaN NaN 1051 2 1051 1 1049 27 26 0 8 8 ...
23 24 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1077 NaN 1068 NaN NaN 9 0 39 ...
24 24 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1119 NaN 1110 NaN NaN 9 0 39 ...
25 24 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1163 NaN 1154 NaN NaN 9 0 39 ...
26 28 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1148 NaN 1139 NaN NaN 9 0 39 ...
27 31 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 931 NaN 921 NaN NaN 9 3 42 ...
28 31 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 955 NaN 947 NaN NaN 8 2 37 ...
29 31 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 965 NaN 956 NaN NaN 9 1 40 ...
30 36 1 NaN NaN NaN NaN 1 NaN NaN NaN 1149 2 1149 0 1146 NaN 28 2 3 12 ...
31 36 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1178 NaN 1169 NaN NaN 9 2 41 ...
32 38 1 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1101 NaN 1092 NaN NaN 8 3 38 ...
33 38 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1121 NaN 1112 NaN NaN 9 0 39 ...
34 38 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1233 NaN 1224 NaN NaN 9 0 39 ...
35 39 1 NaN NaN NaN NaN 5 NaN 2 1 NaN 1 1152 NaN 1143 NaN NaN 9 0 39 ...
36 39 2 NaN NaN NaN NaN 3 NaN NaN NaN 1183 2 1183 0 1179 NaN 25 4 0 17 ...
37 44 1 NaN NaN NaN NaN 1 NaN NaN NaN 1023 2 1023 0 1018 NaN 20 5 2 24 ...
38 44 2 NaN NaN NaN NaN 1 NaN NaN NaN 1123 2 1123 0 1122 NaN 35 1 2 6 ...
39 44 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1165 NaN 1156 NaN NaN 0 39 39 ...
40 44 4 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1222 NaN 1214 NaN NaN 0 36 36 ...
41 45 1 NaN NaN NaN NaN 1 NaN NaN NaN 1225 2 1225 0 1222 NaN 19 3 0 13 ...
42 46 1 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1009 NaN 1001 NaN NaN 0 36 36 ...
43 46 2 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1051 NaN 1042 NaN NaN 0 40 40 ...
44 49 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1091 NaN 1082 NaN NaN 9 0 39 ...
45 49 2 NaN NaN NaN NaN 3 NaN NaN NaN 1126 2 1126 1 1123 20 21 3 0 13 ...
46 49 3 NaN NaN NaN NaN 3 NaN NaN NaN 1150 2 1150 1 1147 22 23 3 0 13 ...
47 49 4 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1163 NaN 1154 NaN NaN 9 0 39 ...
48 51 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1104 NaN 1095 NaN NaN 9 0 39 ...
49 51 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1177 NaN 1168 NaN NaN 9 0 39 ...
50 51 3 NaN NaN NaN NaN 1 NaN NaN NaN 1195 2 1195 0 1193 NaN 29 0 8 8 ...
51 52 1 NaN NaN NaN NaN 3 NaN NaN NaN 1080 2 1080 0 1079 NaN 24 0 5 5 ...
52 57 1 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1064 NaN 1055 NaN NaN 9 0 39 ...
53 57 2 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1098 NaN 1090 NaN NaN 8 2 37 ...
54 57 3 NaN NaN NaN NaN 5 NaN 1 NaN NaN 1 1109 NaN 1100 NaN NaN 9 0 39 ...
55 60 1 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1092 NaN 1083 NaN NaN 9 1 40 ...
56 60 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1146 NaN 1137 NaN NaN 9 1 40 ...
57 63 1 NaN NaN NaN NaN 1 NaN NaN NaN 1081 2 1081 1 1079 25 35 2 0 9 ...
58 63 2 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1101 NaN 1092 NaN NaN 0 41 41 ...
59 63 3 NaN NaN NaN NaN 6 NaN 1 NaN NaN 1 1134 NaN 1125 NaN NaN 0 37 37 ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

13593 rows × 244 columns

Print value counts for birthord and compare to results published in the codebook


In [36]:
df.birthord.value_counts().sort_index()


Out[36]:
1     4413
2     2874
3     1234
4      421
5      126
6       50
7       20
8        7
9        2
10       1
dtype: int64

Print value counts for prglngth and compare to results published in the codebook


In [36]:

Print value counts for agepreg and compare to results published in the codebook.

Looking at this data, please remember my comments in the book about the obligation to approach data with consideration for the context and respect for the respondents.


In [36]:

Compute the mean birthweight.


In [37]:
df.totalwgt_lb.mean()


Out[37]:
7.2656284576233681

Create a new column named totalwgt_kg that contains birth weight in kilograms. Compute its mean. Remember that when you create a new column, you have to use dictionary syntax, not dot notation.


In [37]:

Look through the codebook and find a variable, other than the ones mentioned in the book, that you find interesting. Compute values counts, means, or other statistics.


In [37]:

Create a boolean Series.


In [38]:
df.outcome == 1


Out[38]:
0      True
1      True
2      True
3      True
4      True
5      True
6      True
7      True
8      True
9      True
10     True
11     True
12     True
13    False
14    False
...
13578     True
13579     True
13580    False
13581     True
13582    False
13583    False
13584     True
13585    False
13586    False
13587    False
13588     True
13589    False
13590    False
13591     True
13592     True
Name: outcome, Length: 13593, dtype: bool

Use a boolean Series to select the records for the pregnancies that ended in live birth.


In [39]:
live = df[df.outcome == 1]
len(live)


Out[39]:
9148

Count the number of live births with birthwgt_lb between 0 and 5 pounds (including both). The result should be 1125.


In [40]:
len(live[(live.birthwgt_lb >= 0) & (live.birthwgt_lb <= 5)])


Out[40]:
1125

Count the number of live births with birthwgt_lb between 9 and 95 pounds (including both). The result should be 798


In [40]:

Use birthord to select the records for first babies and others. How many are there of each?


In [41]:
firsts = df[df.birthord==1]
others = df[df.birthord>1]
len(firsts), len(others)


Out[41]:
(4413, 4735)

Compute the mean weight for first babies and others.


In [42]:
firsts.totalwgt_lb.mean()


Out[42]:
7.201094430437772

In [43]:
others.totalwgt_lb.mean()


Out[43]:
7.3258556149732623

Compute the mean prglngth for first babies and others. Compute the difference in means, expressed in hours.


In [43]: