1

I have a pandas.DataFrame that looks like this:

              Group  Replicate  Time    Normed
0        5ng/mLTGFb          1     1  0.924876
1        5ng/mLTGFb          1     2  0.891171
2        5ng/mLTGFb          1     3  0.928782
3        5ng/mLTGFb          1     4  0.842967
4        5ng/mLTGFb          2     1  0.908404
5        5ng/mLTGFb          2     2  0.886511
6        5ng/mLTGFb          2     3  0.911488
7        5ng/mLTGFb          2     4  0.875320
8        5ng/mLTGFb          3     1  0.921771
9        5ng/mLTGFb          3     2  0.887204
10       5ng/mLTGFb          3     3  0.828524
11       5ng/mLTGFb          3     4  0.873509
12        Glyco0.8%          1     1  0.883661
13        Glyco0.8%          1     2  0.823874
14        Glyco0.8%          1     3  0.875522
15        Glyco0.8%          1     4  0.859953
16        Glyco0.8%          2     1  0.880971
17        Glyco0.8%          2     2  0.832171
18        Glyco0.8%          2     3  0.885903
19        Glyco0.8%          2     4  0.859308
20        Glyco0.8%          3     1  0.894803
21        Glyco0.8%          3     2  0.856890
22        Glyco0.8%          3     3  0.862479
23        Glyco0.8%          3     4  0.846343
24        Glyco2.4%          1     1  0.883367
25        Glyco2.4%          1     2  0.859378
26        Glyco2.4%          1     3  0.893720
27        Glyco2.4%          1     4  0.852863
28        Glyco2.4%          2     1  0.871003
29        Glyco2.4%          2     2  0.840247
30        Glyco2.4%          2     3  0.880209
31        Glyco2.4%          2     4  0.849866
32        Glyco2.4%          3     1  0.906474
33        Glyco2.4%          3     2  0.893899
34        Glyco2.4%          3     3  0.861791
35        Glyco2.4%          3     4  0.841760
36        Glyco4.8%          1     1  0.909556
37        Glyco4.8%          1     2  0.867863
38        Glyco4.8%          1     3  0.875383
39        Glyco4.8%          1     4  0.849258
40        Glyco4.8%          2     1  0.912481
41        Glyco4.8%          2     2  0.862332
42        Glyco4.8%          2     3  0.898971
43        Glyco4.8%          2     4  0.851969
44        Glyco4.8%          3     1  0.920611
45        Glyco4.8%          3     2  0.858697
46        Glyco4.8%          3     3  0.877669
47        Glyco4.8%          3     4  0.842820
48  NegativeControl          1     1  0.896742
49  NegativeControl          1     2  0.828705
50  NegativeControl          1     3  0.898466
51  NegativeControl          1     4  0.840793
52  NegativeControl          2     1  0.889273
53  NegativeControl          2     2  0.830354
54  NegativeControl          2     3  0.838096
55  NegativeControl          2     4  0.843467
56  NegativeControl          3     1  0.859525
57  NegativeControl          3     2  0.823689
58  NegativeControl          3     3  0.833555
59  NegativeControl          3     4  0.840500

This data can be plotted quite nicely with seaborn and matplotlib (assuming the above data was assigned to a variable called normed)

import matplotlib.pyplot as plt
import seaborn as sns

sns.barplot(x='Time',y='Normed',data=normed,hue='Group')
plt.legend(loc=(1,0.3))

Here is the output:

enter image description here

However, what I really want to do is perform a t-test to test for statistical significance between groups (ideally one for all n choose 2 combinations of variable but for now lets just say between the negative control at the first and second time point). Does anybody know if seaborn supports this or know of another way of performing t-tests on this data? Additionally I've seen that seaborn supports bootstrapping statistics, it would be great if I could get confidence intervals for the t-tests as well though this is peripheral really.

Thanks for the help

StupidWolf
  • 45,075
  • 17
  • 40
  • 72
CiaranWelsh
  • 7,014
  • 10
  • 53
  • 106

1 Answers1

0

Have a look at statannot library. Its very nice. Just do

pip install statannot

Here's a ton of examples you can adapt to your needs

Aleksejs Fomins
  • 688
  • 1
  • 8
  • 20