On a recent project involving the removal of a platform in the North Sea, the mechanical properties of the pile-sleeve grout was required. The existing grout piping in the vicinity of the pile and sleeves was removed by an ROV and brought to the surface. Grout testing specimens were cut and the compressive strength and the tensile strength measured. The tensile strength was indirectly measured using the Brazil Test.

The following is the measured data. This is a nice demonstration of the pandas package.

In [51]:
import math
import numpy as np
In [52]:
data = [
['B1 1P','UCT 651',97.219999999999999,11.34,85.719999999999999,6.4500000000000002],
['B1 1P','UCT 652',84.75,11.34,74.730000000000004,5.4199999999999999],
['B1 1P','UCT 653',89.900000000000006,11.34,79.280000000000001,6.4400000000000004],
['B1 1P','UCT 654',92.75,11.34,81.790000000000006,8.3599999999999994],
['B1 2P','UCT 655',75.629999999999995,11.34,66.689999999999998,5.5599999999999996],
['B1 2P','UCT 656',102.67,11.34,90.540000000000006,6.5800000000000001],
['B1 2P','UCT 657',85.5,11.34,75.400000000000006,6.6500000000000004],
['B3 1P','UCT 658',43.450000000000003,11.34,38.32,5.29],
['B3 1P','UCT 659',60.229999999999997,11.34,53.109999999999999,4.9299999999999997],
['B3 1P','UCT 660',101.47,11.34,89.480000000000004,6.9800000000000004],
['B1 3P','UCT 661',70.890000000000001,11.34,62.509999999999998,3.8799999999999999],
['B1 3P','UCT 662',33.219999999999999,11.34,29.289999999999999,4.9299999999999997],
['B1 3P','UCT 663',65.200000000000003,11.34,57.5,5.9199999999999999],
['B1 4P','UCT 664',76.879999999999995,11.34,67.799999999999997,6.3499999999999996],
['B1 4P','UCT 665',58.530000000000001,11.34,51.609999999999999,3.4700000000000002],
['B1 4P','UCT 666',48.030000000000001,11.34,42.350000000000001,4.1699999999999999],
['B3 2P','UCT 667',121.0,11.34,106.7,7.6399999999999997],
['B3 2P','UCT 668',112.0,11.34,98.769999999999996,8.7300000000000004],
['B3 2P','UCT 669',99.170000000000002,11.34,87.450000000000003,6.6799999999999997],
['B3 3P','UCT 670',113.55,11.34,100.13,7.4199999999999999],
['B3 3P','UCT 671',82.459999999999994,11.34,72.719999999999999,5.8899999999999997],
['B3 3P','UCT 672',95.159999999999997,11.34,83.920000000000002,6.6299999999999999],
['B3 4P','UCT 673',101.72,11.34,89.700000000000003,5.0800000000000001],
['B3 4P','UCT 674',118.95999999999999,11.34,104.90000000000001,7.9000000000000004],
['B3 4P','UCT 675',83.219999999999999,11.34,73.390000000000001,5.1399999999999997],
['D3 1P','UCT 676',109.65000000000001,11.34,96.689999999999998,6.4400000000000004],
['D3 1P','UCT 677',117.67,11.34,103.77,7.4900000000000002],
['D3 1P','UCT 678',106.47,11.34,93.890000000000001,7.54],
['D3 2P','UCT 679',96.769999999999996,11.34,85.340000000000003,7.2699999999999996],
['D3 2P','UCT 680',43.060000000000002,11.34,37.969999999999999,4.5700000000000003],
['D3 2P','UCT 681',58.75,11.34,51.810000000000002,6.4100000000000001],
['D3 3P','UCT 682',82.219999999999999,11.34,72.5,5.9699999999999998],
['D3 3P','UCT 683',75.129999999999995,11.34,66.25,4.96],
['D3 4P','UCT 684',38.740000000000002,11.34,34.159999999999997,5.54],
['D3 4P','UCT 685',50.780000000000001,11.34,44.780000000000001,5.4500000000000002],
['D1 1P','UCT 686',41.799999999999997,11.34,36.859999999999999,7.2599999999999998],
['D1 1P','UCT 687',55.259999999999998,11.34,48.729999999999997,4.2400000000000002],
['D1 2P','UCT 688',113.69,11.34,100.26000000000001,6.2300000000000004],
['D1 2P','UCT 689',84.200000000000003,11.34,74.25,4.9500000000000002],
['D1 3P','UCT 690',96.510000000000005,11.34,85.109999999999999,5.96],
['D1 3P','UCT 691',108.89,11.34,96.019999999999996,6.9199999999999999],
['D1 4P','UCT 692',103.48999999999999,11.34,91.260000000000005,6.5800000000000001],
['D1 4P','UCT 693',125.23,11.34,110.43000000000001,8.2300000000000004],
['TP A1 1P','UCT 694',133.22,11.34,117.48,8.1500000000000004],
['TP A1 1P','UCT 695',130.30000000000001,11.34,114.90000000000001,8.4100000000000001],
['TP A1 2P','UCT 696',123.53,11.34,108.93000000000001,8.5299999999999994],
['TP A1 2P','UCT 697',135.87,11.34,119.81,9.6699999999999999],
['TP A3 1P','UCT 698',84.900000000000006,11.34,74.870000000000005,4.9299999999999997],
['TP A3 1P','UCT 699',16.52,11.34,14.57,7.5899999999999999],
['TP A3 2P','UCT 700',72.170000000000002,11.34,63.640000000000001,5.0899999999999999],
['TP A3 2P','UCT 701',87.790000000000006,11.34,77.420000000000002,7.5099999999999998],
['TP B2 1P','UCT 702',35.159999999999997,11.34,31.010000000000002,6.6399999999999997],
['TP B2 1P','UCT 703',39.57,11.34,34.890000000000001,4.9900000000000002],
['TP B2 2P','UCT 704',28.530000000000001,11.34,25.16,3.1699999999999999],
['TP B2 2P','UCT 705',41.170000000000002,11.34,36.310000000000002,3.9399999999999999]]
In [53]:
import pandas as pd
In [54]:
df = pd.DataFrame(data = data, columns = ['Plugg',
                                          'Test ID',
                                          'Peak load (kN)',
                                          'Initial area (cm2)',
                                          'Uniaxial strength (MPa)',
                                          'Strain at peak (mS)'])
In [55]:
pd.set_option('line_width', 120)
print(df)
       Plugg  Test ID  Peak load (kN)  Initial area (cm2)  Uniaxial strength (MPa)  Strain at peak (mS)
0      B1 1P  UCT 651           97.22               11.34                    85.72                 6.45
1      B1 1P  UCT 652           84.75               11.34                    74.73                 5.42
2      B1 1P  UCT 653           89.90               11.34                    79.28                 6.44
3      B1 1P  UCT 654           92.75               11.34                    81.79                 8.36
4      B1 2P  UCT 655           75.63               11.34                    66.69                 5.56
5      B1 2P  UCT 656          102.67               11.34                    90.54                 6.58
6      B1 2P  UCT 657           85.50               11.34                    75.40                 6.65
7      B3 1P  UCT 658           43.45               11.34                    38.32                 5.29
8      B3 1P  UCT 659           60.23               11.34                    53.11                 4.93
9      B3 1P  UCT 660          101.47               11.34                    89.48                 6.98
10     B1 3P  UCT 661           70.89               11.34                    62.51                 3.88
11     B1 3P  UCT 662           33.22               11.34                    29.29                 4.93
12     B1 3P  UCT 663           65.20               11.34                    57.50                 5.92
13     B1 4P  UCT 664           76.88               11.34                    67.80                 6.35
14     B1 4P  UCT 665           58.53               11.34                    51.61                 3.47
15     B1 4P  UCT 666           48.03               11.34                    42.35                 4.17
16     B3 2P  UCT 667          121.00               11.34                   106.70                 7.64
17     B3 2P  UCT 668          112.00               11.34                    98.77                 8.73
18     B3 2P  UCT 669           99.17               11.34                    87.45                 6.68
19     B3 3P  UCT 670          113.55               11.34                   100.13                 7.42
20     B3 3P  UCT 671           82.46               11.34                    72.72                 5.89
21     B3 3P  UCT 672           95.16               11.34                    83.92                 6.63
22     B3 4P  UCT 673          101.72               11.34                    89.70                 5.08
23     B3 4P  UCT 674          118.96               11.34                   104.90                 7.90
24     B3 4P  UCT 675           83.22               11.34                    73.39                 5.14
25     D3 1P  UCT 676          109.65               11.34                    96.69                 6.44
26     D3 1P  UCT 677          117.67               11.34                   103.77                 7.49
27     D3 1P  UCT 678          106.47               11.34                    93.89                 7.54
28     D3 2P  UCT 679           96.77               11.34                    85.34                 7.27
29     D3 2P  UCT 680           43.06               11.34                    37.97                 4.57
30     D3 2P  UCT 681           58.75               11.34                    51.81                 6.41
31     D3 3P  UCT 682           82.22               11.34                    72.50                 5.97
32     D3 3P  UCT 683           75.13               11.34                    66.25                 4.96
33     D3 4P  UCT 684           38.74               11.34                    34.16                 5.54
34     D3 4P  UCT 685           50.78               11.34                    44.78                 5.45
35     D1 1P  UCT 686           41.80               11.34                    36.86                 7.26
36     D1 1P  UCT 687           55.26               11.34                    48.73                 4.24
37     D1 2P  UCT 688          113.69               11.34                   100.26                 6.23
38     D1 2P  UCT 689           84.20               11.34                    74.25                 4.95
39     D1 3P  UCT 690           96.51               11.34                    85.11                 5.96
40     D1 3P  UCT 691          108.89               11.34                    96.02                 6.92
41     D1 4P  UCT 692          103.49               11.34                    91.26                 6.58
42     D1 4P  UCT 693          125.23               11.34                   110.43                 8.23
43  TP A1 1P  UCT 694          133.22               11.34                   117.48                 8.15
44  TP A1 1P  UCT 695          130.30               11.34                   114.90                 8.41
45  TP A1 2P  UCT 696          123.53               11.34                   108.93                 8.53
46  TP A1 2P  UCT 697          135.87               11.34                   119.81                 9.67
47  TP A3 1P  UCT 698           84.90               11.34                    74.87                 4.93
48  TP A3 1P  UCT 699           16.52               11.34                    14.57                 7.59
49  TP A3 2P  UCT 700           72.17               11.34                    63.64                 5.09
50  TP A3 2P  UCT 701           87.79               11.34                    77.42                 7.51
51  TP B2 1P  UCT 702           35.16               11.34                    31.01                 6.64
52  TP B2 1P  UCT 703           39.57               11.34                    34.89                 4.99
53  TP B2 2P  UCT 704           28.53               11.34                    25.16                 3.17
54  TP B2 2P  UCT 705           41.17               11.34                    36.31                 3.94

[55 rows x 6 columns]

Various statistical measures of data

In [56]:
df['Uniaxial strength (MPa)'].min()
Out[56]:
14.57
In [57]:
df['Uniaxial strength (MPa)'].max()
Out[57]:
119.81
In [58]:
df['Uniaxial strength (MPa)'].mean()
mean = df['Uniaxial strength (MPa)'].mean()
print("Mean of uniaxial strength: {0:0.2f}".format(mean))
std_dev = math.sqrt(df['Uniaxial strength (MPa)'].var())
print("Standard deviation of uniaxial strength: {0:0.2f}".format(std_dev))
print("Mean - 1.0*std_dev: {0:0.2f}".format(mean-std_dev))
Mean of uniaxial strength: 72.96
Standard deviation of uniaxial strength: 26.91
Mean - 1.0*std_dev: 46.05

In [59]:
df['Uniaxial strength (MPa)'].var()
Out[59]:
724.36301501683295

Locations from which the test samples were cut

In [60]:
print df['Plugg']
0        B1 1P
1        B1 1P
2        B1 1P
3        B1 1P
4        B1 2P
5        B1 2P
6        B1 2P
7        B3 1P
8        B3 1P
9        B3 1P
10       B1 3P
11       B1 3P
12       B1 3P
13       B1 4P
14       B1 4P
15       B1 4P
16       B3 2P
17       B3 2P
18       B3 2P
19       B3 3P
20       B3 3P
21       B3 3P
22       B3 4P
23       B3 4P
24       B3 4P
25       D3 1P
26       D3 1P
27       D3 1P
28       D3 2P
29       D3 2P
30       D3 2P
31       D3 3P
32       D3 3P
33       D3 4P
34       D3 4P
35       D1 1P
36       D1 1P
37       D1 2P
38       D1 2P
39       D1 3P
40       D1 3P
41       D1 4P
42       D1 4P
43    TP A1 1P
44    TP A1 1P
45    TP A1 2P
46    TP A1 2P
47    TP A3 1P
48    TP A3 1P
49    TP A3 2P
50    TP A3 2P
51    TP B2 1P
52    TP B2 1P
53    TP B2 2P
54    TP B2 2P
Name: Plugg, Length: 55, dtype: object

Variance of B1 sample data

In [61]:
criterion = df['Plugg'].map(lambda x: x.startswith('B1'))
df[criterion].var()
Out[61]:
Peak load (kN)             4.049906e+02
Initial area (cm2)         1.894781e-14
Uniaxial strength (MPa)    3.149593e+02
Strain at peak (mS)        1.804176e+00
dtype: float64

Variance of B3 sample data

In [62]:
criterion = df['Plugg'].map(lambda x: x.startswith('B3'))
df[criterion].var()
Out[62]:
Peak load (kN)             558.651572
Initial area (cm2)           0.000000
Uniaxial strength (MPa)    434.376827
Strain at peak (mS)          1.592517
dtype: float64

Variance of D3 sample data

In [63]:
criterion = df['Plugg'].map(lambda x: x.startswith('D3'))
df[criterion].var()
Out[63]:
Peak load (kN)             8.486572e+02
Initial area (cm2)         5.052748e-14
Uniaxial strength (MPa)    6.599993e+02
Strain at peak (mS)        1.104316e+00
dtype: float64

Variance of D1 sample data

In [64]:
criterion = df['Plugg'].map(lambda x: x.startswith('D1'))
df[criterion].var()
Out[64]:
Peak load (kN)             8.481465e+02
Initial area (cm2)         6.496391e-14
Uniaxial strength (MPa)    6.595517e+02
Strain at peak (mS)        1.613684e+00
dtype: float64

Variance of TP sample data

In [65]:
criterion = df['Plugg'].map(lambda x: x.startswith('TP'))
df[criterion].var()
Out[65]:
Peak load (kN)             2025.013227
Initial area (cm2)            0.000000
Uniaxial strength (MPa)    1574.585281
Strain at peak (mS)           4.282888
dtype: float64
In [66]:
from pandas.tools.plotting import bootstrap_plot

Histogram of uniaxial strength

In [70]:
count,division = np.histogram(df['Uniaxial strength (MPa)'])
print('count: {0} division: {1}'.format(count, division))
df['Uniaxial strength (MPa)'].hist()
plt.xlabel(r"$f^\prime_c$")
plt.ylabel("frequency")
plot()
count: [1 5 6 4 5 9 7 7 7 4] division: [  14.57    25.094   35.618   46.142   56.666   67.19    77.714   88.238
   98.762  109.286  119.81 ]

Out[70]:
[]

Bootstrap plot (see http://www.itl.nist.gov/div898/handbook/eda/section3/bootplot.htm)

In [72]:
bootstrap_plot(df['Uniaxial strength (MPa)'], size=10, samples=40, color='grey')
plot()
Out[72]:
[]

Plot of uniaxial strength color coded by sample location with plots of \(\mu\), \(\mu + \sigma\), and \(\mu - \sigma\)

In [49]:
color_map = dict([(item,i) for i, item in enumerate(set(df['Plugg']))])
color_list = [color_map[sample] for sample in df['Plugg']]
plt.plot([0,60],[mean,mean],'r--')
plt.plot([0,60],[mean-std_dev,mean-std_dev],'b--')
plt.plot([0,60],[mean+std_dev,mean+std_dev],'b--')
plt.scatter(range(len(df)),list(df['Uniaxial strength (MPa)']),c=color_list)
x1,x2,y1,y2 = plt.axis()
plt.xlim((0,60))
plt.ylabel(r"$f^\prime_c$")
plot()
Out[49]:
[]

Plot of uniaxial strength color coded byfirst letter of sample location

In [50]:
color_map = dict([(item[0],i) for i, item in enumerate(set(df['Plugg']))])
color_list = [color_map[sample[0]] for sample in df['Plugg']]
plt.scatter(range(len(df)),list(df['Uniaxial strength (MPa)']),c=color_list)
plt.ylabel(r"$f^\prime_c$")
plot()
Out[50]:
[]