Exercise from Think Stats, 2nd Edition (thinkstats2.com) by Allen Downey
In [1]:
import nsfg
df = nsfg.ReadFemPreg()
df
Out[1]:
caseid
pregordr
howpreg_n
howpreg_p
moscurrp
nowprgdk
pregend1
pregend2
nbrnaliv
multbrth
...
laborfor_i
religion_i
metro_i
basewgt
adj_mod_basewgt
finalwgt
secu_p
sest
cmintvw
totalwgt_lb
0
1
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3410.389399
3869.349602
6448.271112
2
9
NaN
8.8125
1
1
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3410.389399
3869.349602
6448.271112
2
9
NaN
7.8750
2
2
1
NaN
NaN
NaN
NaN
5
NaN
3
5
...
0
0
0
7226.301740
8567.549110
12999.542264
2
12
NaN
9.1250
3
2
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
7226.301740
8567.549110
12999.542264
2
12
NaN
7.0000
4
2
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
7226.301740
8567.549110
12999.542264
2
12
NaN
6.1875
5
6
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
4870.926435
5325.196999
8874.440799
1
23
NaN
8.5625
6
6
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
4870.926435
5325.196999
8874.440799
1
23
NaN
9.5625
7
6
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
4870.926435
5325.196999
8874.440799
1
23
NaN
8.3750
8
7
1
NaN
NaN
NaN
NaN
5
NaN
1
NaN
...
0
0
0
3409.579565
3787.539000
6911.879921
2
14
NaN
7.5625
9
7
2
NaN
NaN
NaN
NaN
5
NaN
1
NaN
...
0
0
0
3409.579565
3787.539000
6911.879921
2
14
NaN
6.6250
10
12
1
NaN
NaN
NaN
NaN
5
NaN
1
NaN
...
0
0
0
3612.781968
4146.013572
6909.331618
1
31
NaN
7.8125
11
14
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2418.069494
2810.302771
3039.904507
2
56
NaN
7.0000
12
14
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2418.069494
2810.302771
3039.904507
2
56
NaN
4.0000
13
14
3
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
2418.069494
2810.302771
3039.904507
2
56
NaN
NaN
14
15
1
NaN
NaN
NaN
NaN
1
NaN
NaN
NaN
...
0
0
0
1667.816099
3200.862017
5553.495599
1
33
NaN
NaN
15
15
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
1667.816099
3200.862017
5553.495599
1
33
NaN
7.6875
16
15
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
1667.816099
3200.862017
5553.495599
1
33
NaN
7.5000
17
18
1
NaN
NaN
NaN
NaN
5
NaN
1
NaN
...
0
0
0
2957.257457
3404.403067
4153.371741
2
14
NaN
6.3125
18
18
2
NaN
NaN
NaN
NaN
1
NaN
NaN
NaN
...
0
0
0
2957.257457
3404.403067
4153.371741
2
14
NaN
NaN
19
21
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3408.342437
3965.763949
7237.122630
1
48
NaN
8.7500
20
21
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3408.342437
3965.763949
7237.122630
1
48
NaN
8.1875
21
23
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
6210.373020
8120.841310
13533.382043
2
64
NaN
5.5625
22
23
2
NaN
NaN
NaN
NaN
1
NaN
NaN
NaN
...
0
0
0
6210.373020
8120.841310
13533.382043
2
64
NaN
NaN
23
24
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3409.573258
4068.628645
7424.840414
1
27
NaN
6.7500
24
24
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3409.573258
4068.628645
7424.840414
1
27
NaN
7.3750
25
24
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3409.573258
4068.628645
7424.840414
1
27
NaN
6.8125
26
28
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3407.794208
3808.343516
6949.846082
2
57
NaN
8.1250
27
31
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3405.679025
4272.084519
5211.943113
1
2
NaN
7.1250
28
31
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3405.679025
4272.084519
5211.943113
1
2
NaN
6.0625
29
31
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3405.679025
4272.084519
5211.943113
1
2
NaN
7.4375
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
13563
12547
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3453.545517
6628.022524
11499.619080
1
52
NaN
7.6875
13564
12547
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3453.545517
6628.022524
11499.619080
1
52
NaN
7.6250
13565
12550
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3080.452699
3745.326058
5268.550165
1
79
NaN
8.1250
13566
12551
1
NaN
NaN
NaN
NaN
5
NaN
1
NaN
...
0
0
0
2418.538866
3653.453268
3951.940400
2
75
NaN
7.5000
13567
12554
1
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
1914.676604
2177.957240
2764.045534
2
75
NaN
NaN
13568
12554
2
NaN
NaN
NaN
NaN
4
NaN
NaN
NaN
...
0
0
0
1914.676604
2177.957240
2764.045534
2
75
NaN
NaN
13569
12556
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2474.619764
3250.573384
3965.699528
1
44
NaN
5.8125
13570
12556
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2474.619764
3250.573384
3965.699528
1
44
NaN
6.6875
13571
12556
3
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2474.619764
3250.573384
3965.699528
1
44
NaN
6.0000
13572
12556
4
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2474.619764
3250.573384
3965.699528
1
44
NaN
5.8125
13573
12561
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2418.089703
2698.650781
4497.301527
1
10
NaN
6.5625
13574
12561
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2418.089703
2698.650781
4497.301527
1
10
NaN
6.1250
13575
12564
1
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
1820.850938
2129.214067
2768.191208
2
44
NaN
NaN
13576
12565
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
3195.641221
3834.241709
6652.409365
1
78
NaN
6.4375
13577
12565
2
35
1
8
NaN
NaN
NaN
NaN
NaN
...
0
0
0
3195.641221
3834.241709
6652.409365
1
78
NaN
NaN
13578
12566
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2080.317155
2422.820274
2627.548587
2
2
NaN
6.0000
13579
12566
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2080.317155
2422.820274
2627.548587
2
2
NaN
7.0000
13580
12568
1
NaN
NaN
NaN
NaN
1
NaN
NaN
NaN
...
0
0
0
2734.687353
4258.980140
7772.212858
2
28
NaN
NaN
13581
12568
2
NaN
NaN
NaN
NaN
5
NaN
1
NaN
...
0
0
0
2734.687353
4258.980140
7772.212858
2
28
NaN
6.3750
13582
12568
3
NaN
NaN
NaN
NaN
4
NaN
NaN
NaN
...
0
0
0
2734.687353
4258.980140
7772.212858
2
28
NaN
NaN
13583
12569
1
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
2580.967613
2925.167116
5075.164946
2
61
NaN
NaN
13584
12569
2
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
2580.967613
2925.167116
5075.164946
2
61
NaN
6.3750
13585
12570
1
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
5181.311509
6205.829154
11325.017623
2
40
NaN
NaN
13586
12570
2
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
5181.311509
6205.829154
11325.017623
2
40
NaN
NaN
13587
12570
3
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
5181.311509
6205.829154
11325.017623
2
40
NaN
NaN
13588
12571
1
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
4670.540953
5795.692880
6269.200989
1
78
NaN
6.1875
13589
12571
2
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
4670.540953
5795.692880
6269.200989
1
78
NaN
NaN
13590
12571
3
NaN
NaN
NaN
NaN
3
NaN
NaN
NaN
...
0
0
0
4670.540953
5795.692880
6269.200989
1
78
NaN
NaN
13591
12571
4
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
4670.540953
5795.692880
6269.200989
1
78
NaN
7.5000
13592
12571
5
NaN
NaN
NaN
NaN
6
NaN
1
NaN
...
0
0
0
4670.540953
5795.692880
6269.200989
1
78
NaN
7.5000
13593 rows × 244 columns
Print value counts for birthord and compare to results published in the codebook
In [2]:
df.birthord.value_counts().sort_index()
Out[2]:
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 [2]:
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 [2]:
Compute the mean birthweight.
In [3]:
df.totalwgt_lb.mean()
Out[3]:
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 [3]:
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 [3]:
Create a boolean Series.
In [4]:
df.outcome == 1
Out[4]:
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 [5]:
live = df[df.outcome == 1]
len(live)
Out[5]:
9148
Count the number of live births with birthwgt_lb between 0 and 5 pounds (including both). The result should be 1125.
In [6]:
len(live[(live.birthwgt_lb >= 0) & (live.birthwgt_lb <= 5)])
Out[6]:
1125
Count the number of live births with birthwgt_lb between 9 and 95 pounds (including both). The result should be 798
In [6]:
Use birthord to select the records for first babies and others. How many are there of each?
In [7]:
firsts = df[df.birthord==1]
others = df[df.birthord>1]
len(firsts), len(others)
Out[7]:
(4413, 4735)
Compute the mean weight for first babies and others.
In [8]:
firsts.totalwgt_lb.mean()
Out[8]:
7.201094430437772
In [9]:
others.totalwgt_lb.mean()
Out[9]:
7.3258556149732623
Compute the mean prglngth for first babies and others. Compute the difference in means, expressed in hours.
In [9]:
Content source: Hbl15/ThinkStats2
Similar notebooks: