In [1]:
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import scatter_matrix
import seaborn as sns
from IPython.display import HTML

Analýza dat pro jednotlivá období

Data - načtení

In [2]:
df_04 = pd.read_excel('korelace_teta Iva_vasek.xlsx', usecols='A:J', skiprows=[1], sheet_name='krev_2018-04-30',
                    nrows=30, index_col=0)
df_11 = pd.read_excel('korelace_teta Iva_vasek.xlsx', usecols='A:J', skiprows=[1], sheet_name='krev_2018-12-17',
                    nrows=30, index_col=0)
col_list = ['Ca', 'P', 'Mg', 'Zn', 'Cu', 'Se']

Duben

In [3]:
display(HTML(r'<h3> Duben </h3>'))
df_04

Duben

Out[3]:
ID kat nevim Ca P Mg Zn Cu Se
idx
1 139390 kráva /918 2.19 2.52 0.97 13.68 10.98 0.354
2 150753 kráva /918 2.35 3.07 1.15 12.16 16.40 0.391
3 154554 kráva /918 2.11 2.48 0.89 14.84 14.20 0.286
4 165509 kráva /918 2.40 2.00 0.96 12.67 12.28 0.353
5 179740 kráva /918 2.23 2.39 0.98 12.67 10.84 0.332
6 189630 kráva /918 2.41 2.04 1.13 12.03 10.02 0.272
7 202580 kráva /918 2.18 3.16 0.94 14.78 12.76 0.311
8 215186 kráva /918 2.31 2.13 0.96 14.38 10.64 0.308
9 215204 kráva /918 2.25 1.74 1.02 14.35 11.29 0.322
10 218163 kráva /918 2.56 1.90 0.99 13.44 7.34 0.307
11 287876 prvotelka /918 2.32 2.50 1.03 12.90 14.25 0.321
12 287877 prvotelka /918 2.21 2.19 1.04 14.09 8.10 0.333
13 287880 prvotelka /918 2.28 2.35 1.25 15.01 7.66 0.317
14 287883 prvotelka /918 2.44 2.13 1.01 13.98 13.93 0.329
15 287888 prvotelka /918 2.41 2.41 0.76 16.26 10.06 0.357
16 287889 prvotelka /918 2.31 2.17 0.94 11.79 15.24 0.359
17 287890 prvotelka /918 2.29 2.44 0.93 13.52 12.49 0.410
18 287894 prvotelka /918 2.39 1.90 1.07 14.38 12.06 0.340
19 287898 prvotelka /918 2.33 2.11 1.01 16.03 10.30 0.517
20 318565 prvotelka /918 2.45 2.23 0.97 11.42 11.62 0.312
21 318623 jalovice /918 2.59 2.19 1.07 16.03 8.65 0.317
22 318624 jalovice /918 2.61 2.73 0.88 16.57 9.13 0.404
23 318628 jalovice /918 2.54 2.68 0.93 13.96 9.66 0.204
24 318629 jalovice /918 2.46 2.48 0.87 14.44 10.84 0.392
25 318630 jalovice /918 2.60 2.17 0.97 20.16 8.78 0.264
26 318631 jalovice /918 2.68 2.74 0.89 16.60 10.40 0.406
27 318634 jalovice /918 2.71 2.19 1.13 18.71 10.50 0.316
28 318635 jalovice /918 2.60 2.21 0.97 16.54 13.04 0.335
29 318637 jalovice /918 2.46 2.76 0.91 14.49 12.68 0.341
30 318638 jalovice /918 2.63 2.45 1.18 17.74 12.08 0.358

Listopad

In [4]:
display(HTML(r'<h3> Listopad </h3>'))
df_11

Listopad

Out[4]:
ID kat nevim Ca P Mg Zn Cu Se
idx
1 139390 kráva /918 2.33 2.12 1.02 13.63 13.66 0.198
2 150753 kráva /918 2.16 2.34 0.99 15.17 15.44 0.280
3 154554 kráva /918 2.07 2.10 0.88 15.48 16.16 0.134
4 165509 kráva /918 2.29 1.55 0.91 20.00 16.13 0.109
5 179740 kráva /918 2.11 2.51 0.94 16.25 15.37 0.206
6 189630 kráva /918 2.35 2.02 1.13 12.71 20.79 0.232
7 202580 kráva /918 2.03 2.14 0.93 13.59 10.29 0.119
8 215186 kráva /918 2.54 1.77 1.06 13.53 15.30 0.158
9 215204 kráva /918 2.19 1.98 0.96 14.96 14.89 0.230
10 218163 kráva /918 2.36 1.81 1.01 14.92 13.45 0.226
11 287876 prvotelka /918 2.28 2.05 0.99 15.02 10.64 0.167
12 287877 prvotelka /918 2.27 2.32 0.93 16.20 13.11 0.159
13 287880 prvotelka /918 2.56 2.55 1.06 15.53 13.72 0.153
14 287883 prvotelka /918 2.16 2.80 0.92 15.48 16.61 0.146
15 287888 prvotelka /918 2.14 2.39 0.98 14.71 12.83 0.312
16 287889 prvotelka /918 2.49 1.92 1.30 16.29 15.99 0.182
17 287890 prvotelka /918 2.42 1.98 0.99 12.46 21.27 0.211
18 287894 prvotelka /918 2.36 2.12 1.14 14.31 17.91 0.149
19 287898 prvotelka /918 2.41 2.00 1.02 16.35 14.68 0.375
20 318565 prvotelka /918 2.08 2.29 1.02 14.76 14.62 0.166
21 318623 jalovice /918 2.26 2.74 1.00 14.20 15.17 0.241
22 318624 jalovice /918 2.37 2.63 1.23 17.59 12.15 0.123
23 318628 jalovice /918 2.22 2.21 0.89 14.09 15.44 0.131
24 318629 jalovice /918 2.24 2.79 1.07 18.14 18.46 0.321
25 318630 jalovice /918 2.48 2.46 0.91 17.83 15.23 0.303
26 318631 jalovice /918 2.41 2.13 0.96 16.05 16.81 0.223
27 318634 jalovice /918 2.60 2.19 0.95 15.89 13.04 0.221
28 318635 jalovice /918 2.17 2.32 0.99 18.61 16.26 0.275
29 318637 jalovice /918 2.26 2.90 0.94 15.33 14.14 0.205
30 318638 jalovice /918 2.14 2.51 0.87 16.96 20.11 0.250

Vyhodnocení celého souboru dat

Základní popisné charakteristiky souboru dat

Duben

In [5]:
df_04.loc[:, col_list].describe()
Out[5]:
Ca P Mg Zn Cu Se
count 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000
mean 2.410000 2.348667 0.993333 14.654000 11.274000 0.338933
std 0.162098 0.331254 0.103101 2.049744 2.219049 0.055529
min 2.110000 1.740000 0.760000 11.420000 7.340000 0.204000
25% 2.295000 2.140000 0.932500 13.460000 10.030000 0.313000
50% 2.405000 2.290000 0.970000 14.380000 10.910000 0.332500
75% 2.555000 2.495000 1.037500 16.030000 12.632500 0.357750
max 2.710000 3.160000 1.250000 20.160000 16.400000 0.517000

Listopad

In [6]:
df_11.loc[:, col_list].describe()
Out[6]:
Ca P Mg Zn Cu Se
count 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000
mean 2.291667 2.254667 0.999667 15.534667 15.322333 0.206833
std 0.153130 0.328053 0.098663 1.731586 2.601723 0.067110
min 2.030000 1.550000 0.870000 12.460000 10.290000 0.109000
25% 2.162500 2.027500 0.932500 14.410000 13.675000 0.154250
50% 2.275000 2.200000 0.990000 15.405000 15.265000 0.205500
75% 2.400000 2.497500 1.020000 16.280000 16.235000 0.238750
max 2.600000 2.900000 1.300000 20.000000 21.270000 0.375000

Korelace mezi prvky v krvi v jednom termínu

Duben

Pearsonova korelace
In [7]:
res = df_04[col_list].corr(method='pearson')
res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1)
Out[7]:
Ca P Mg Zn Cu Se
Ca 1.000000 -0.050990 0.044980 0.549019 -0.284257 -0.029958
P -0.050990 1.000000 -0.202303 0.020272 0.297090 0.110881
Mg 0.044980 -0.202303 1.000000 -0.001469 -0.059595 -0.113254
Zn 0.549019 0.020272 -0.001469 1.000000 -0.364082 0.050054
Cu -0.284257 0.297090 -0.059595 -0.364082 1.000000 0.157490
Se -0.029958 0.110881 -0.113254 0.050054 0.157490 1.000000
Spearmanova pořadová korelace
In [8]:
res = df_04[col_list].corr(method='spearman')
res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1)
Out[8]:
Ca P Mg Zn Cu Se
Ca 1.000000 0.009579 -0.019289 0.460091 -0.272343 0.052309
P 0.009579 1.000000 -0.383938 0.153915 0.243960 0.233382
Mg -0.019289 -0.383938 1.000000 -0.095318 -0.098306 -0.211213
Zn 0.460091 0.153915 -0.095318 1.000000 -0.312820 0.084910
Cu -0.272343 0.243960 -0.098306 -0.312820 1.000000 0.241656
Se 0.052309 0.233382 -0.211213 0.084910 0.241656 1.000000
Grafické zobrazení závislostí
In [9]:
display(HTML(r'<h3> Duben </h3>'))
g = sns.PairGrid(df_04.loc[:, col_list], diag_sharey=False, )
#g.map_upper(sns.scatterplot)
g.map_lower(sns.scatterplot)
#g.map_lower(sns.kdeplot)
g.map_diag(sns.distplot, kde=False, hist_kws={'ec': 'k'});

Duben

Listopad

In [10]:
display(HTML(r'<h3> Listopad </h3>'))
g = sns.PairGrid(df_11.loc[:, col_list], diag_sharey=False)
#g.map_upper(sns.scatterplot)
g.map_lower(sns.scatterplot)
#g.map_lower(sns.kdeplot)
g.map_diag(sns.distplot, kde=False, hist_kws={'ec': 'k'});

Listopad

Vyhodnocení po jednotlivých kategoriích

Popisné charakteristiky souboru dat

Duben

In [11]:
char_04 = df_04.loc[:, col_list+['kat']].groupby('kat').describe().T
#char_04

Listopad

In [12]:
char_11 = df_11.loc[:, col_list+['kat']].groupby('kat').describe().T
#char_11

Listopad + Duben

  • pro snazší porovnání oba měsíce vedle sebe
In [13]:
pd.concat((char_11.add_suffix('_11'), char_04.add_suffix('_04')), axis=1)
Out[13]:
kat jalovice_11 kráva_11 prvotelka_11 jalovice_04 kráva_04 prvotelka_04
Ca count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 2.315000 2.243000 2.317000 2.588000 2.299000 2.343000
std 0.146382 0.158398 0.158398 0.082300 0.134284 0.077323
min 2.140000 2.030000 2.080000 2.460000 2.110000 2.210000
25% 2.225000 2.122500 2.187500 2.552500 2.200000 2.295000
50% 2.260000 2.240000 2.320000 2.600000 2.280000 2.325000
75% 2.400000 2.345000 2.417500 2.625000 2.387500 2.405000
max 2.600000 2.540000 2.560000 2.710000 2.560000 2.450000
P count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 2.488000 2.034000 2.242000 2.460000 2.343000 2.243000
std 0.272511 0.278974 0.282678 0.254427 0.478773 0.182760
min 2.130000 1.550000 1.920000 2.170000 1.740000 1.900000
25% 2.237500 1.852500 2.012500 2.195000 2.010000 2.140000
50% 2.485000 2.060000 2.205000 2.465000 2.260000 2.210000
75% 2.712500 2.135000 2.372500 2.717500 2.510000 2.395000
max 2.900000 2.510000 2.800000 2.760000 3.160000 2.500000
Mg count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 0.981000 0.983000 1.035000 0.980000 0.999000 1.001000
std 0.104929 0.075137 0.112373 0.109747 0.081711 0.123419
min 0.870000 0.880000 0.920000 0.870000 0.890000 0.760000
25% 0.917500 0.932500 0.982500 0.895000 0.960000 0.947500
50% 0.955000 0.975000 1.005000 0.950000 0.975000 1.010000
75% 0.997500 1.017500 1.050000 1.045000 1.012500 1.037500
max 1.230000 1.130000 1.300000 1.180000 1.150000 1.250000
Zn count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 16.469000 15.024000 15.111000 16.524000 13.500000 13.938000
std 1.610462 2.057346 1.173053 1.965939 1.069849 1.610520
min 14.090000 12.710000 12.460000 13.960000 12.030000 11.420000
25% 15.470000 13.600000 14.722500 14.875000 12.670000 13.055000
50% 16.505000 14.940000 15.250000 16.555000 13.560000 14.035000
75% 17.770000 15.402500 16.032500 17.455000 14.372500 14.852500
max 18.610000 20.000000 16.350000 20.160000 14.840000 16.260000
Cu count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 15.681000 15.148000 15.138000 10.576000 11.675000 11.571000
std 2.387209 2.640336 2.987726 1.589257 2.453466 2.550205
min 12.150000 10.290000 10.640000 8.650000 7.340000 7.660000
25% 14.397500 13.967500 13.262500 9.262500 10.690000 10.120000
50% 15.335000 15.335000 14.650000 10.450000 11.135000 11.840000
75% 16.672500 15.957500 16.455000 11.770000 12.640000 13.570000
max 20.110000 20.790000 21.270000 13.040000 16.400000 15.240000
Se count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 0.229300 0.189200 0.202000 0.333700 0.323600 0.359500
std 0.065112 0.056603 0.078334 0.063671 0.035211 0.062290
min 0.123000 0.109000 0.146000 0.204000 0.272000 0.312000
25% 0.209000 0.140000 0.154500 0.316250 0.307250 0.323000
50% 0.232000 0.202000 0.166500 0.338000 0.316500 0.336500
75% 0.268750 0.229000 0.203750 0.383500 0.347750 0.358500
max 0.321000 0.280000 0.375000 0.406000 0.391000 0.517000

Korelace mezi prvky v krvi za jednotlivá období

Duben

Pearsonova korelace

In [14]:
kat_lst = ['kráva', 'prvotelka', 'jalovice']
for kat in kat_lst:
    display(HTML(r'<h3> {} </h3>'.format(kat)))
    res = df_04.loc[df_04.kat==kat, col_list].corr(method='pearson')
    display(res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1))

kráva

Ca P Mg Zn Cu Se
Ca 1.000000 -0.458450 0.471787 -0.565286 -0.498642 0.022700
P -0.458450 1.000000 0.039564 0.066096 0.678418 0.372534
Mg 0.471787 0.039564 1.000000 -0.749271 0.133655 0.262453
Zn -0.565286 0.066096 -0.749271 1.000000 -0.001630 -0.356807
Cu -0.498642 0.678418 0.133655 -0.001630 1.000000 0.480538
Se 0.022700 0.372534 0.262453 -0.356807 0.480538 1.000000

prvotelka

Ca P Mg Zn Cu Se
Ca 1.000000 -0.229510 -0.363611 -0.077660 0.365676 -0.155600
P -0.229510 1.000000 -0.212951 -0.037651 -0.036005 -0.133373
Mg -0.363611 -0.212951 1.000000 -0.015864 -0.322806 -0.208339
Zn -0.077660 -0.037651 -0.015864 1.000000 -0.588182 0.447161
Cu 0.365676 -0.036005 -0.322806 -0.588182 1.000000 -0.056366
Se -0.155600 -0.133373 -0.208339 0.447161 -0.056366 1.000000

jalovice

Ca P Mg Zn Cu Se
Ca 1.000000 -0.319440 0.511748 0.699627 -0.211593 0.085536
P -0.319440 1.000000 -0.588132 -0.601928 0.116950 0.294793
Mg 0.511748 -0.588132 1.000000 0.503912 0.088740 -0.200192
Zn 0.699627 -0.601928 0.503912 1.000000 -0.228939 -0.043822
Cu -0.211593 0.116950 0.088740 -0.228939 1.000000 0.256524
Se 0.085536 0.294793 -0.200192 -0.043822 0.256524 1.000000

Spearmanova pořadová korelace

In [15]:
kat_lst = ['kráva', 'prvotelka', 'jalovice']
for kat in kat_lst:
    display(HTML(r'<h3> {} </h3>'.format(kat)))
    res = df_04.loc[df_04.kat==kat, col_list].corr(method='spearman')
    display(res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1))

kráva

Ca P Mg Zn Cu Se
Ca 1.000000 -0.600000 0.626143 -0.711249 -0.539394 -0.103030
P -0.600000 1.000000 -0.285716 0.194530 0.563636 0.309091
Mg 0.626143 -0.285716 1.000000 -0.771341 -0.249241 0.200609
Zn -0.711249 0.194530 -0.771341 1.000000 0.255320 -0.255320
Cu -0.539394 0.563636 -0.249241 0.255320 1.000000 0.454545
Se -0.103030 0.309091 0.200609 -0.255320 0.454545 1.000000

prvotelka

Ca P Mg Zn Cu Se
Ca 1.000000 -0.248485 -0.340427 -0.090909 0.236364 -0.187879
P -0.248485 1.000000 -0.291795 -0.200000 -0.006061 -0.248485
Mg -0.340427 -0.291795 1.000000 0.176293 -0.322190 -0.455929
Zn -0.090909 -0.200000 0.176293 1.000000 -0.660606 0.333333
Cu 0.236364 -0.006061 -0.322190 -0.660606 1.000000 0.163636
Se -0.187879 -0.248485 -0.455929 0.333333 0.163636 1.000000

jalovice

Ca P Mg Zn Cu Se
Ca 1.000000 -0.220185 0.422020 0.798795 -0.079270 0.182930
P -0.220185 1.000000 -0.652439 -0.486324 0.316111 0.595747
Mg 0.422020 -0.652439 1.000000 0.486324 0.018237 -0.522799
Zn 0.798795 -0.486324 0.486324 1.000000 -0.151515 0.006061
Cu -0.079270 0.316111 0.018237 -0.151515 1.000000 0.248485
Se 0.182930 0.595747 -0.522799 0.006061 0.248485 1.000000

Listopad

Pearsonova korelace

In [16]:
kat_lst = ['kráva', 'prvotelka', 'jalovice']
for kat in kat_lst:
    display(HTML(r'<h3> {} </h3>'.format(kat)))
    res = df_11.loc[df_11.kat==kat, col_list].corr(method='pearson')
    display(res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1))

kráva

Ca P Mg Zn Cu Se
Ca 1.000000 -0.606536 0.718954 -0.182794 0.315211 0.113814
P -0.606536 1.000000 -0.102941 -0.303621 -0.087675 0.432471
Mg 0.718954 -0.102941 1.000000 -0.642605 0.459350 0.507980
Zn -0.182794 -0.303621 -0.642605 1.000000 0.033009 -0.344305
Cu 0.315211 -0.087675 0.459350 0.033009 1.000000 0.287928
Se 0.113814 0.432471 0.507980 -0.344305 0.287928 1.000000

prvotelka

Ca P Mg Zn Cu Se
Ca 1.000000 -0.390440 0.551506 0.096832 0.251908 0.004836
P -0.390440 1.000000 -0.516284 0.158821 -0.182166 -0.299765
Mg 0.551506 -0.516284 1.000000 0.180507 0.196282 -0.101863
Zn 0.096832 0.158821 0.180507 1.000000 -0.595446 0.112514
Cu 0.251908 -0.182166 0.196282 -0.595446 1.000000 -0.090939
Se 0.004836 -0.299765 -0.101863 0.112514 -0.090939 1.000000

jalovice

Ca P Mg Zn Cu Se
Ca 1.000000 -0.356529 0.090063 -0.012655 -0.586883 -0.043658
P -0.356529 1.000000 0.350576 0.055618 0.006289 0.177252
Mg 0.090063 0.350576 1.000000 0.356912 -0.422605 -0.241881
Zn -0.012655 0.055618 0.356912 1.000000 0.232077 0.513713
Cu -0.586883 0.006289 -0.422605 0.232077 1.000000 0.561180
Se -0.043658 0.177252 -0.241881 0.513713 0.561180 1.000000

Spearmanova pořadová korelace

In [17]:
kat_lst = ['kráva', 'prvotelka', 'jalovice']
for kat in kat_lst:
    display(HTML(r'<h3> {} </h3>'.format(kat)))
    res = df_11.loc[df_11.kat==kat, col_list].corr(method='spearman')
    display(res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1))

kráva

Ca P Mg Zn Cu Se
Ca 1.000000 -0.660606 0.781818 -0.454545 -0.006061 0.236364
P -0.660606 1.000000 -0.139394 0.103030 -0.078788 0.284848
Mg 0.781818 -0.139394 1.000000 -0.757576 -0.066667 0.575758
Zn -0.454545 0.103030 -0.757576 1.000000 0.260606 -0.224242
Cu -0.006061 -0.078788 -0.066667 0.260606 1.000000 0.139394
Se 0.236364 0.284848 0.575758 -0.224242 0.139394 1.000000

prvotelka

Ca P Mg Zn Cu Se
Ca 1.000000 -0.442424 0.597572 0.284848 0.321212 0.103030
P -0.442424 1.000000 -0.512205 -0.054545 -0.309091 -0.587879
Mg 0.597572 -0.512205 1.000000 0.128051 0.262200 0.073172
Zn 0.284848 -0.054545 0.128051 1.000000 -0.248485 0.103030
Cu 0.321212 -0.309091 0.262200 -0.248485 1.000000 -0.175758
Se 0.103030 -0.587879 0.073172 0.103030 -0.175758 1.000000

jalovice

Ca P Mg Zn Cu Se
Ca 1.000000 -0.273557 0.188451 -0.109423 -0.607906 -0.194530
P -0.273557 1.000000 0.284848 0.066667 -0.115152 0.127273
Mg 0.188451 0.284848 1.000000 0.345455 -0.284848 0.018182
Zn -0.109423 0.066667 0.345455 1.000000 0.321212 0.636364
Cu -0.607906 -0.115152 -0.284848 0.321212 1.000000 0.636364
Se -0.194530 0.127273 0.018182 0.636364 0.636364 1.000000

Grafické zobrazení závislostí a identifikace případných shluků

Duben

In [18]:
g = sns.PairGrid(df_04.loc[:, col_list+['kat']], diag_sharey=False, hue='kat')
g.map_upper(sns.scatterplot)
#g.map_lower(sns.kdeplot)
g.map_diag(sns.distplot, kde=False, hist_kws={'ec': 'k'})
g = g.add_legend();

Listopad

In [19]:
#sns.pairplot(df.loc[:, col_list+['kat']], hue="kat")
g = sns.PairGrid(df_11.loc[:, col_list+['kat']], diag_sharey=False, hue='kat')
g = g.add_legend()
g.map_upper(sns.scatterplot)
#g.map_lower(sns.kdeplot)
g.map_diag(sns.distplot, kde=False, hist_kws={'ec': 'k'})
g = g.add_legend();

Analýza dat z krve mezi jednotlivými obdobími

Příprava dat

  • vstupní data pro jednotlivé měsíce spojena do jedné tabulky
  • názvy sloupečků pro jednotlivé měsíce odlišeny přidáním přípony "_11" a "_04" k původním názvům
In [20]:
df = pd.concat((df_11.add_suffix('_11'), df_04.add_suffix('_04')), axis=1)
df.rename(columns={'kat_11':'kat'}, inplace=True)
df
Out[20]:
ID_11 kat nevim_11 Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 ID_04 kat_04 nevim_04 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
idx
1 139390 kráva /918 2.33 2.12 1.02 13.63 13.66 0.198 139390 kráva /918 2.19 2.52 0.97 13.68 10.98 0.354
2 150753 kráva /918 2.16 2.34 0.99 15.17 15.44 0.280 150753 kráva /918 2.35 3.07 1.15 12.16 16.40 0.391
3 154554 kráva /918 2.07 2.10 0.88 15.48 16.16 0.134 154554 kráva /918 2.11 2.48 0.89 14.84 14.20 0.286
4 165509 kráva /918 2.29 1.55 0.91 20.00 16.13 0.109 165509 kráva /918 2.40 2.00 0.96 12.67 12.28 0.353
5 179740 kráva /918 2.11 2.51 0.94 16.25 15.37 0.206 179740 kráva /918 2.23 2.39 0.98 12.67 10.84 0.332
6 189630 kráva /918 2.35 2.02 1.13 12.71 20.79 0.232 189630 kráva /918 2.41 2.04 1.13 12.03 10.02 0.272
7 202580 kráva /918 2.03 2.14 0.93 13.59 10.29 0.119 202580 kráva /918 2.18 3.16 0.94 14.78 12.76 0.311
8 215186 kráva /918 2.54 1.77 1.06 13.53 15.30 0.158 215186 kráva /918 2.31 2.13 0.96 14.38 10.64 0.308
9 215204 kráva /918 2.19 1.98 0.96 14.96 14.89 0.230 215204 kráva /918 2.25 1.74 1.02 14.35 11.29 0.322
10 218163 kráva /918 2.36 1.81 1.01 14.92 13.45 0.226 218163 kráva /918 2.56 1.90 0.99 13.44 7.34 0.307
11 287876 prvotelka /918 2.28 2.05 0.99 15.02 10.64 0.167 287876 prvotelka /918 2.32 2.50 1.03 12.90 14.25 0.321
12 287877 prvotelka /918 2.27 2.32 0.93 16.20 13.11 0.159 287877 prvotelka /918 2.21 2.19 1.04 14.09 8.10 0.333
13 287880 prvotelka /918 2.56 2.55 1.06 15.53 13.72 0.153 287880 prvotelka /918 2.28 2.35 1.25 15.01 7.66 0.317
14 287883 prvotelka /918 2.16 2.80 0.92 15.48 16.61 0.146 287883 prvotelka /918 2.44 2.13 1.01 13.98 13.93 0.329
15 287888 prvotelka /918 2.14 2.39 0.98 14.71 12.83 0.312 287888 prvotelka /918 2.41 2.41 0.76 16.26 10.06 0.357
16 287889 prvotelka /918 2.49 1.92 1.30 16.29 15.99 0.182 287889 prvotelka /918 2.31 2.17 0.94 11.79 15.24 0.359
17 287890 prvotelka /918 2.42 1.98 0.99 12.46 21.27 0.211 287890 prvotelka /918 2.29 2.44 0.93 13.52 12.49 0.410
18 287894 prvotelka /918 2.36 2.12 1.14 14.31 17.91 0.149 287894 prvotelka /918 2.39 1.90 1.07 14.38 12.06 0.340
19 287898 prvotelka /918 2.41 2.00 1.02 16.35 14.68 0.375 287898 prvotelka /918 2.33 2.11 1.01 16.03 10.30 0.517
20 318565 prvotelka /918 2.08 2.29 1.02 14.76 14.62 0.166 318565 prvotelka /918 2.45 2.23 0.97 11.42 11.62 0.312
21 318623 jalovice /918 2.26 2.74 1.00 14.20 15.17 0.241 318623 jalovice /918 2.59 2.19 1.07 16.03 8.65 0.317
22 318624 jalovice /918 2.37 2.63 1.23 17.59 12.15 0.123 318624 jalovice /918 2.61 2.73 0.88 16.57 9.13 0.404
23 318628 jalovice /918 2.22 2.21 0.89 14.09 15.44 0.131 318628 jalovice /918 2.54 2.68 0.93 13.96 9.66 0.204
24 318629 jalovice /918 2.24 2.79 1.07 18.14 18.46 0.321 318629 jalovice /918 2.46 2.48 0.87 14.44 10.84 0.392
25 318630 jalovice /918 2.48 2.46 0.91 17.83 15.23 0.303 318630 jalovice /918 2.60 2.17 0.97 20.16 8.78 0.264
26 318631 jalovice /918 2.41 2.13 0.96 16.05 16.81 0.223 318631 jalovice /918 2.68 2.74 0.89 16.60 10.40 0.406
27 318634 jalovice /918 2.60 2.19 0.95 15.89 13.04 0.221 318634 jalovice /918 2.71 2.19 1.13 18.71 10.50 0.316
28 318635 jalovice /918 2.17 2.32 0.99 18.61 16.26 0.275 318635 jalovice /918 2.60 2.21 0.97 16.54 13.04 0.335
29 318637 jalovice /918 2.26 2.90 0.94 15.33 14.14 0.205 318637 jalovice /918 2.46 2.76 0.91 14.49 12.68 0.341
30 318638 jalovice /918 2.14 2.51 0.87 16.96 20.11 0.250 318638 jalovice /918 2.63 2.45 1.18 17.74 12.08 0.358

Základní popisné charakteristiky na nové tabulce

  • stejné jako dříve, ale všechny informace vedle sebe
In [21]:
col_lst_04 = [col + '_04' for col in col_list]
col_lst_11 = [col + '_11' for col in col_list]
df.loc[:, col_lst_11 + col_lst_04].describe()
Out[21]:
Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
count 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000
mean 2.291667 2.254667 0.999667 15.534667 15.322333 0.206833 2.410000 2.348667 0.993333 14.654000 11.274000 0.338933
std 0.153130 0.328053 0.098663 1.731586 2.601723 0.067110 0.162098 0.331254 0.103101 2.049744 2.219049 0.055529
min 2.030000 1.550000 0.870000 12.460000 10.290000 0.109000 2.110000 1.740000 0.760000 11.420000 7.340000 0.204000
25% 2.162500 2.027500 0.932500 14.410000 13.675000 0.154250 2.295000 2.140000 0.932500 13.460000 10.030000 0.313000
50% 2.275000 2.200000 0.990000 15.405000 15.265000 0.205500 2.405000 2.290000 0.970000 14.380000 10.910000 0.332500
75% 2.400000 2.497500 1.020000 16.280000 16.235000 0.238750 2.555000 2.495000 1.037500 16.030000 12.632500 0.357750
max 2.600000 2.900000 1.300000 20.000000 21.270000 0.375000 2.710000 3.160000 1.250000 20.160000 16.400000 0.517000

Korelace

Pearson

In [22]:
import numpy as np
def highlight_diag(data, color='#999'):
    '''
    highlight the diag values in a DataFrame
    '''
    attr = 'background-color: {}'.format(color)
    # create a new dataframe of the same structure with default style value
    df_style = data.replace(data, '')
    # fill diagonal with highlight color
    np.fill_diagonal(df_style.values, attr)
    return df_style
import locale
locale.setlocale(locale.LC_ALL, 'cs_CZ.UTF-8')
pd.set_option("float_format", locale.currency)
pd.options.display.float_format = '{:n}'.format
In [23]:
res = df[col_lst_11 + col_lst_04].corr('pearson')
display(HTML(r'<h3> Všechno </h3>'))
display(HTML(res.style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))
#display(res.style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None))
display(HTML(r'<h3> Listopad vs. duben </h3>'))
display(HTML(res.loc[col_lst_11, col_lst_04].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1)._repr_html_().replace('.', ',')))
display(HTML(r'<h3> Duben </h3>'))
display(HTML(res.loc[col_lst_04, col_lst_04].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))
display(HTML(r'<h3> Listopad </h3>'))
display(HTML(res.loc[col_lst_11, col_lst_11].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))

Všechno

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 1,00 -0,25 0,43 -0,01 0,05 0,06 0,24 -0,31 0,24 0,26 -0,36 0,13
P_11 -0,25 1,00 -0,09 0,15 -0,03 0,19 0,28 0,33 0,03 0,31 -0,10 0,01
Mg_11 0,43 -0,09 1,00 -0,08 0,05 -0,03 -0,02 -0,16 -0,02 -0,27 -0,00 0,26
Zn_11 -0,01 0,15 -0,08 1,00 -0,03 0,16 0,34 -0,10 -0,10 0,33 0,01 0,24
Cu_11 0,05 -0,03 0,05 -0,03 1,00 0,22 0,14 -0,25 0,14 -0,09 0,15 0,10
Se_11 0,06 0,19 -0,03 0,16 0,22 1,00 0,27 -0,10 -0,01 0,36 -0,11 0,44
Ca_04 0,24 0,28 -0,02 0,34 0,14 0,27 1,00 -0,05 0,04 0,55 -0,28 -0,03
P_04 -0,31 0,33 -0,16 -0,10 -0,25 -0,10 -0,05 1,00 -0,20 0,02 0,30 0,11
Mg_04 0,24 0,03 -0,02 -0,10 0,14 -0,01 0,04 -0,20 1,00 -0,00 -0,06 -0,11
Zn_04 0,26 0,31 -0,27 0,33 -0,09 0,36 0,55 0,02 -0,00 1,00 -0,36 0,05
Cu_04 -0,36 -0,10 -0,00 0,01 0,15 -0,11 -0,28 0,30 -0,06 -0,36 1,00 0,16
Se_04 0,13 0,01 0,26 0,24 0,10 0,44 -0,03 0,11 -0,11 0,05 0,16 1,00

Listopad vs. duben

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 0,24 -0,31 0,24 0,26 -0,36 0,13
P_11 0,28 0,33 0,03 0,31 -0,10 0,01
Mg_11 -0,02 -0,16 -0,02 -0,27 -0,00 0,26
Zn_11 0,34 -0,10 -0,10 0,33 0,01 0,24
Cu_11 0,14 -0,25 0,14 -0,09 0,15 0,10
Se_11 0,27 -0,10 -0,01 0,36 -0,11 0,44

Duben

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_04 1,00 -0,05 0,04 0,55 -0,28 -0,03
P_04 -0,05 1,00 -0,20 0,02 0,30 0,11
Mg_04 0,04 -0,20 1,00 -0,00 -0,06 -0,11
Zn_04 0,55 0,02 -0,00 1,00 -0,36 0,05
Cu_04 -0,28 0,30 -0,06 -0,36 1,00 0,16
Se_04 -0,03 0,11 -0,11 0,05 0,16 1,00

Listopad

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11
Ca_11 1,00 -0,25 0,43 -0,01 0,05 0,06
P_11 -0,25 1,00 -0,09 0,15 -0,03 0,19
Mg_11 0,43 -0,09 1,00 -0,08 0,05 -0,03
Zn_11 -0,01 0,15 -0,08 1,00 -0,03 0,16
Cu_11 0,05 -0,03 0,05 -0,03 1,00 0,22
Se_11 0,06 0,19 -0,03 0,16 0,22 1,00

Spearman

In [24]:
res = df[col_lst_11 + col_lst_04].corr('spearman')
display(HTML(r'<h3> Všechno </h3>'))
display(HTML(res.style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))
#display(res.style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None))
display(HTML(r'<h3> Listopad vs. duben </h3>'))
display(HTML(res.loc[col_lst_11, col_lst_04].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1)._repr_html_().replace('.', ',')))
display(HTML(r'<h3> Duben </h3>'))
display(HTML(res.loc[col_lst_04, col_lst_04].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))
display(HTML(r'<h3> Listopad </h3>'))
display(HTML(res.loc[col_lst_11, col_lst_11].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))

Všechno

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 1,00 -0,32 0,46 0,06 -0,02 0,03 0,17 -0,32 0,12 0,15 -0,38 0,11
P_11 -0,32 1,00 -0,16 0,28 -0,07 0,15 0,35 0,43 0,02 0,39 -0,13 0,09
Mg_11 0,46 -0,16 1,00 -0,17 -0,03 0,12 -0,04 -0,20 0,04 -0,23 -0,15 0,25
Zn_11 0,06 0,28 -0,17 1,00 0,09 0,17 0,33 -0,05 -0,06 0,34 0,03 0,35
Cu_11 -0,02 -0,07 -0,03 0,09 1,00 0,17 0,14 -0,18 -0,00 -0,13 0,28 0,19
Se_11 0,03 0,15 0,12 0,17 0,17 1,00 0,33 -0,10 0,15 0,25 -0,16 0,28
Ca_04 0,17 0,35 -0,04 0,33 0,14 0,33 1,00 0,01 -0,02 0,46 -0,27 0,05
P_04 -0,32 0,43 -0,20 -0,05 -0,18 -0,10 0,01 1,00 -0,38 0,15 0,24 0,23
Mg_04 0,12 0,02 0,04 -0,06 -0,00 0,15 -0,02 -0,38 1,00 -0,10 -0,10 -0,21
Zn_04 0,15 0,39 -0,23 0,34 -0,13 0,25 0,46 0,15 -0,10 1,00 -0,31 0,08
Cu_04 -0,38 -0,13 -0,15 0,03 0,28 -0,16 -0,27 0,24 -0,10 -0,31 1,00 0,24
Se_04 0,11 0,09 0,25 0,35 0,19 0,28 0,05 0,23 -0,21 0,08 0,24 1,00

Listopad vs. duben

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 0,17 -0,32 0,12 0,15 -0,38 0,11
P_11 0,35 0,43 0,02 0,39 -0,13 0,09
Mg_11 -0,04 -0,20 0,04 -0,23 -0,15 0,25
Zn_11 0,33 -0,05 -0,06 0,34 0,03 0,35
Cu_11 0,14 -0,18 -0,00 -0,13 0,28 0,19
Se_11 0,33 -0,10 0,15 0,25 -0,16 0,28

Duben

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_04 1,00 0,01 -0,02 0,46 -0,27 0,05
P_04 0,01 1,00 -0,38 0,15 0,24 0,23
Mg_04 -0,02 -0,38 1,00 -0,10 -0,10 -0,21
Zn_04 0,46 0,15 -0,10 1,00 -0,31 0,08
Cu_04 -0,27 0,24 -0,10 -0,31 1,00 0,24
Se_04 0,05 0,23 -0,21 0,08 0,24 1,00

Listopad

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11
Ca_11 1,00 -0,32 0,46 0,06 -0,02 0,03
P_11 -0,32 1,00 -0,16 0,28 -0,07 0,15
Mg_11 0,46 -0,16 1,00 -0,17 -0,03 0,12
Zn_11 0,06 0,28 -0,17 1,00 0,09 0,17
Cu_11 -0,02 -0,07 -0,03 0,09 1,00 0,17
Se_11 0,03 0,15 0,12 0,17 0,17 1,00

Grafické zobrazení závislostí

  • zobrazeno včetně odlišení kategorií
In [25]:
plt.rcParams['font.family'] = 'Times New Roman'

df_sel = df[col_lst_11 + col_lst_04 + ['kat']]
g = sns.PairGrid(df_sel, diag_sharey=False, hue='kat', x_vars=col_lst_04, y_vars=col_lst_11)
g.fig.set_size_inches(17/2.54,17/2.54)

#for ax in g.ax.flatten():
#    ax.set_xtics(rotation=90)
    
for ax in g.axes.flat:
    ax.set_xticklabels(ax.get_xticklabels(), rotation=45, horizontalalignment='center')

g.map(sns.scatterplot, s=50, linewidth=0)
g = g.add_legend();
In [26]:
plt.rcParams['font.size'] = 10

df_sel = df[col_lst_11 + col_lst_04 + ['kat']]
g = sns.PairGrid(df_sel, diag_sharey=False, hue='kat')
g.fig.set_size_inches(15/2.54,15/2.54)

#g.map_upper(sns.scatterplot, size=.5, s=1)
g.map_lower(sns.scatterplot, s=5, linewidth=0)
#g.map_lower(sns.kdeplot)
g.map_diag(sns.distplot, kde=False, hist_kws={'ec': 'k'})
g = g.add_legend(bbox_to_anchor=(0.9, 1.0), borderaxespad=0., frameon=True, 
                 facecolor='white', title='Kategorie:', framealpha=1)

for ax in g.axes.flat:
    ax.set_xticklabels(ax.get_xticklabels(), rotation=45, horizontalalignment='center')

plt.savefig('body_10.png', dpi=300, bbox_inches='tight')

Analýza po jednotlivých kategoriích

Korelace

Pearson

In [27]:
kat_lst = ['kráva', 'prvotelka', 'jalovice']
for kat in kat_lst:
    display(HTML(r'<h3> {} </h3>'.format(kat)))
    res = df.loc[df.kat==kat, col_lst_11 + col_lst_04].corr(method='pearson')
    #display(res.loc[col_lst_04, col_lst_11].style.background_gradient(cmap='bwr', vmin=-1, vmax=1))
    #display(res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1))
    display(HTML(res.style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))
    #display(res.style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None))
    display(HTML(res.loc[col_lst_11, col_lst_04].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1)._repr_html_().replace('.', ',')))
    display(HTML(res.loc[col_lst_04, col_lst_04].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))
    display(HTML(res.loc[col_lst_11, col_lst_11].style.format("{:.2f}").background_gradient(cmap='bwr', vmin=-1, vmax=1).apply(highlight_diag, axis=None)._repr_html_().replace('.', ',')))

kráva

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 1,00 -0,61 0,72 -0,18 0,32 0,11 0,56 -0,56 0,15 -0,17 -0,56 -0,11
P_11 -0,61 1,00 -0,10 -0,30 -0,09 0,43 -0,48 0,59 0,24 -0,15 0,37 0,20
Mg_11 0,72 -0,10 1,00 -0,64 0,46 0,51 0,47 -0,25 0,61 -0,39 -0,45 -0,23
Zn_11 -0,18 -0,30 -0,64 1,00 0,03 -0,34 0,15 -0,20 -0,24 -0,24 0,20 0,41
Cu_11 0,32 -0,09 0,46 0,03 1,00 0,29 0,26 -0,44 0,50 -0,58 -0,03 -0,28
Se_11 0,11 0,43 0,51 -0,34 0,29 1,00 0,37 -0,07 0,81 -0,53 -0,06 0,26
Ca_04 0,56 -0,48 0,47 0,15 0,26 0,37 1,00 -0,46 0,47 -0,57 -0,50 0,02
P_04 -0,56 0,59 -0,25 -0,20 -0,44 -0,07 -0,46 1,00 0,04 0,07 0,68 0,37
Mg_04 0,15 0,24 0,61 -0,24 0,50 0,81 0,47 0,04 1,00 -0,75 0,13 0,26
Zn_04 -0,17 -0,15 -0,39 -0,24 -0,58 -0,53 -0,57 0,07 -0,75 1,00 -0,00 -0,36
Cu_04 -0,56 0,37 -0,45 0,20 -0,03 -0,06 -0,50 0,68 0,13 -0,00 1,00 0,48
Se_04 -0,11 0,20 -0,23 0,41 -0,28 0,26 0,02 0,37 0,26 -0,36 0,48 1,00
Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 0,56 -0,56 0,15 -0,17 -0,56 -0,11
P_11 -0,48 0,59 0,24 -0,15 0,37 0,20
Mg_11 0,47 -0,25 0,61 -0,39 -0,45 -0,23
Zn_11 0,15 -0,20 -0,24 -0,24 0,20 0,41
Cu_11 0,26 -0,44 0,50 -0,58 -0,03 -0,28
Se_11 0,37 -0,07 0,81 -0,53 -0,06 0,26
Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_04 1,00 -0,46 0,47 -0,57 -0,50 0,02
P_04 -0,46 1,00 0,04 0,07 0,68 0,37
Mg_04 0,47 0,04 1,00 -0,75 0,13 0,26
Zn_04 -0,57 0,07 -0,75 1,00 -0,00 -0,36
Cu_04 -0,50 0,68 0,13 -0,00 1,00 0,48
Se_04 0,02 0,37 0,26 -0,36 0,48 1,00
Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11
Ca_11 1,00 -0,61 0,72 -0,18 0,32 0,11
P_11 -0,61 1,00 -0,10 -0,30 -0,09 0,43
Mg_11 0,72 -0,10 1,00 -0,64 0,46 0,51
Zn_11 -0,18 -0,30 -0,64 1,00 0,03 -0,34
Cu_11 0,32 -0,09 0,46 0,03 1,00 0,29
Se_11 0,11 0,43 0,51 -0,34 0,29 1,00

prvotelka

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 1,00 -0,39 0,55 0,10 0,25 0,00 -0,64 -0,04 0,52 0,12 -0,10 0,31
P_11 -0,39 1,00 -0,52 0,16 -0,18 -0,30 0,33 -0,03 0,22 0,25 -0,32 -0,48
Mg_11 0,55 -0,52 1,00 0,18 0,20 -0,10 -0,05 -0,33 0,06 -0,35 0,37 0,02
Zn_11 0,10 0,16 0,18 1,00 -0,60 0,11 -0,18 -0,33 0,25 0,09 -0,16 0,06
Cu_11 0,25 -0,18 0,20 -0,60 1,00 -0,09 0,09 -0,30 -0,08 -0,12 0,26 0,27
Se_11 0,00 -0,30 -0,10 0,11 -0,09 1,00 0,06 0,09 -0,49 0,62 -0,20 0,83
Ca_04 -0,64 0,33 -0,05 -0,18 0,09 0,06 1,00 -0,23 -0,36 -0,08 0,37 -0,16
P_04 -0,04 -0,03 -0,33 -0,33 -0,30 0,09 -0,23 1,00 -0,21 -0,04 -0,04 -0,13
Mg_04 0,52 0,22 0,06 0,25 -0,08 -0,49 -0,36 -0,21 1,00 -0,02 -0,32 -0,21
Zn_04 0,12 0,25 -0,35 0,09 -0,12 0,62 -0,08 -0,04 -0,02 1,00 -0,59 0,45
Cu_04 -0,10 -0,32 0,37 -0,16 0,26 -0,20 0,37 -0,04 -0,32 -0,59 1,00 -0,06
Se_04 0,31 -0,48 0,02 0,06 0,27 0,83 -0,16 -0,13 -0,21 0,45 -0,06 1,00
Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 -0,64 -0,04 0,52 0,12 -0,10 0,31
P_11 0,33 -0,03 0,22 0,25 -0,32 -0,48
Mg_11 -0,05 -0,33 0,06 -0,35 0,37 0,02
Zn_11 -0,18 -0,33 0,25 0,09 -0,16 0,06
Cu_11 0,09 -0,30 -0,08 -0,12 0,26 0,27
Se_11 0,06 0,09 -0,49 0,62 -0,20 0,83
Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_04 1,00 -0,23 -0,36 -0,08 0,37 -0,16
P_04 -0,23 1,00 -0,21 -0,04 -0,04 -0,13
Mg_04 -0,36 -0,21 1,00 -0,02 -0,32 -0,21
Zn_04 -0,08 -0,04 -0,02 1,00 -0,59 0,45
Cu_04 0,37 -0,04 -0,32 -0,59 1,00 -0,06
Se_04 -0,16 -0,13 -0,21 0,45 -0,06 1,00
Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11
Ca_11 1,00 -0,39 0,55 0,10 0,25 0,00
P_11 -0,39 1,00 -0,52 0,16 -0,18 -0,30
Mg_11 0,55 -0,52 1,00 0,18 0,20 -0,10
Zn_11 0,10 0,16 0,18 1,00 -0,60 0,11
Cu_11 0,25 -0,18 0,20 -0,60 1,00 -0,09
Se_11 0,00 -0,30 -0,10 0,11 -0,09 1,00

jalovice

Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11 Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 1,00 -0,36 0,09 -0,01 -0,59 -0,04 0,54 -0,21 0,04 0,60 -0,47 -0,02
P_11 -0,36 1,00 0,35 0,06 0,01 0,18 -0,72 0,11 -0,17 -0,34 0,07 0,28
Mg_11 0,09 0,35 1,00 0,36 -0,42 -0,24 -0,09 0,22 -0,48 -0,18 -0,26 0,58
Zn_11 -0,01 0,06 0,36 1,00 0,23 0,51 0,02 -0,22 -0,18 0,36 0,29 0,45
Cu_11 -0,59 0,01 -0,42 0,23 1,00 0,56 -0,14 -0,06 0,22 -0,09 0,37 0,15
Se_11 -0,04 0,18 -0,24 0,51 0,56 1,00 -0,11 -0,61 0,16 0,33 0,22 0,14
Ca_04 0,54 -0,72 -0,09 0,02 -0,14 -0,11 1,00 -0,32 0,51 0,70 -0,21 0,09
P_04 -0,21 0,11 0,22 -0,22 -0,06 -0,61 -0,32 1,00 -0,59 -0,60 0,12 0,29
Mg_04 0,04 -0,17 -0,48 -0,18 0,22 0,16 0,51 -0,59 1,00 0,50 0,09 -0,20
Zn_04 0,60 -0,34 -0,18 0,36 -0,09 0,33 0,70 -0,60 0,50 1,00 -0,23 -0,04
Cu_04 -0,47 0,07 -0,26 0,29 0,37 0,22 -0,21 0,12 0,09 -0,23 1,00 0,26
Se_04 -0,02 0,28 0,58 0,45 0,15 0,14 0,09 0,29 -0,20 -0,04 0,26 1,00
Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 0,54 -0,21 0,04 0,60 -0,47 -0,02
P_11 -0,72 0,11 -0,17 -0,34 0,07 0,28
Mg_11 -0,09 0,22 -0,48 -0,18 -0,26 0,58
Zn_11 0,02 -0,22 -0,18 0,36 0,29 0,45
Cu_11 -0,14 -0,06 0,22 -0,09 0,37 0,15
Se_11 -0,11 -0,61 0,16 0,33 0,22 0,14
Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_04 1,00 -0,32 0,51 0,70 -0,21 0,09
P_04 -0,32 1,00 -0,59 -0,60 0,12 0,29
Mg_04 0,51 -0,59 1,00 0,50 0,09 -0,20
Zn_04 0,70 -0,60 0,50 1,00 -0,23 -0,04
Cu_04 -0,21 0,12 0,09 -0,23 1,00 0,26
Se_04 0,09 0,29 -0,20 -0,04 0,26 1,00
Ca_11 P_11 Mg_11 Zn_11 Cu_11 Se_11
Ca_11 1,00 -0,36 0,09 -0,01 -0,59 -0,04
P_11 -0,36 1,00 0,35 0,06 0,01 0,18
Mg_11 0,09 0,35 1,00 0,36 -0,42 -0,24
Zn_11 -0,01 0,06 0,36 1,00 0,23 0,51
Cu_11 -0,59 0,01 -0,42 0,23 1,00 0,56
Se_11 -0,04 0,18 -0,24 0,51 0,56 1,00

Spearman

In [28]:
kat_lst = ['kráva', 'prvotelka', 'jalovice']
for kat in kat_lst:
    display(HTML(r'<h3> {} </h3>'.format(kat)))
    res = df.loc[df.kat==kat, col_lst_11 + col_lst_04].corr(method='spearman')
    display(res.loc[col_lst_11, col_lst_04].style.background_gradient(cmap='bwr', vmin=-1, vmax=1))
    #display(res.style.background_gradient(cmap='bwr', vmin=-1, vmax=1))

kráva

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 0.696970 -0.551515 0.310032 -0.291795 -0.757576 -0.200000
P_11 -0.503030 0.721212 0.158055 -0.097265 0.369697 0.321212
Mg_11 0.503030 -0.163636 0.559273 -0.395139 -0.672727 -0.151515
Zn_11 -0.127273 -0.090909 -0.127660 -0.085107 0.466667 0.454545
Cu_11 0.175758 -0.115152 0.133739 -0.419455 0.151515 -0.200000
Se_11 0.442424 -0.175758 0.936175 -0.583589 -0.224242 0.030303

prvotelka

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 -0.684848 -0.042424 0.273557 0.090909 0.066667 0.357576
P_11 0.236364 -0.018182 0.328269 0.381818 -0.527273 -0.600000
Mg_11 -0.103660 -0.280493 0.186545 -0.146344 0.134149 0.097563
Zn_11 -0.296970 -0.369697 0.249241 0.078788 -0.103030 0.103030
Cu_11 0.103030 -0.490909 -0.127660 -0.163636 0.357576 0.418182
Se_11 -0.066667 0.309091 -0.656538 0.163636 0.006061 0.648485

jalovice

Ca_04 P_04 Mg_04 Zn_04 Cu_04 Se_04
Ca_11 0.394497 -0.167683 -0.097561 0.522799 -0.492403 -0.054711
P_11 -0.701233 0.164134 -0.255320 -0.418182 0.078788 0.187879
Mg_11 -0.097563 0.097265 -0.553194 -0.224242 -0.163636 0.490909
Zn_11 0.091465 -0.212767 -0.224925 0.296970 0.333333 0.357576
Cu_11 -0.067074 0.018237 0.030395 -0.103030 0.369697 0.236364
Se_11 -0.140247 -0.541036 0.133739 0.187879 0.175758 -0.006061

Testování statistických hypotéz

In [29]:
from scipy.stats import f_oneway, shapiro, boxcox_normplot,\
            probplot, normaltest, levene, bartlett, ttest_rel, kstest
In [30]:
import statsmodels.api as sm
from statsmodels.formula.api import ols
from statsmodels.stats.multicomp import pairwise_tukeyhsd

ANOVA - kategorie

Boxplot - grafické zhodnocení

In [31]:
plt.rcParams['font.size'] = 10
figsize = (15/2.54/2,15/2.54/3)
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    axes = df.boxplot(column=['{}_11'.format(col), '{}_04'.format(col)], by='kat', figsize=figsize,
              return_type='axes', flierprops=dict(ms=3), showmeans=True, meanline=True, 
              meanprops=dict(color='r'))
    for axid, ax in enumerate(axes):
        ax.set_xticklabels(ax.get_xticklabels(), rotation=45)
        ax.set_xlabel('Kategorie')
    plt.suptitle('')
    plt.tight_layout()
    plt.savefig('boxplot_{}.png'.format(col), dpi=300)#, bbox_inches='tight')
    plt.show()

Ca

P

Mg

Zn

Cu

Se

Test shody rozptylů

In [32]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    for kat in kat_lst:
        d_04 = df.loc[df.kat==kat, col + '_04']
        d_11 = df.loc[df.kat==kat, col + '_11']
        print(kat + ':')
        print('    ', levene(d_04, d_11))
        print('    ', bartlett(d_04, d_11))

Ca

kráva:
     LeveneResult(statistic=0.49044465468306686, pvalue=0.4926824972438384)
     BartlettResult(statistic=0.23151436700911326, pvalue=0.6304032146297582)
prvotelka:
     LeveneResult(statistic=5.949008498583566, pvalue=0.02530870641870455)
     BartlettResult(statistic=4.053542298681121, pvalue=0.044078759625417505)
jalovice:
     LeveneResult(statistic=1.7594137542277273, pvalue=0.20128222071174878)
     BartlettResult(statistic=2.6836319241085405, pvalue=0.10138426426622874)

P

kráva:
     LeveneResult(statistic=2.820977116824632, pvalue=0.11031303588523993)
     BartlettResult(statistic=2.3749705246488215, pvalue=0.12329392510900106)
prvotelka:
     LeveneResult(statistic=2.0319042559839975, pvalue=0.17113858645722857)
     BartlettResult(statistic=1.5728734528196526, pvalue=0.20979020895206277)
jalovice:
     LeveneResult(statistic=0.021711270260082953, pvalue=0.8844956843833081)
     BartlettResult(statistic=0.040166748089128054, pvalue=0.841154905655926)

Mg

kráva:
     LeveneResult(statistic=0.02756508422664634, pvalue=0.869986060833863)
     BartlettResult(statistic=0.05991274683613387, pvalue=0.8066339008424304)
prvotelka:
     LeveneResult(statistic=0.022367966862271448, pvalue=0.8827753707599274)
     BartlettResult(statistic=0.074840039607379, pvalue=0.7844158010749296)
jalovice:
     LeveneResult(statistic=0.1927103159497518, pvalue=0.6658945035468236)
     BartlettResult(statistic=0.017183197444058794, pvalue=0.8957083077606672)

Zn

kráva:
     LeveneResult(statistic=0.7947944165190038, pvalue=0.38441698257269064)
     BartlettResult(statistic=3.4121491267783393, pvalue=0.06471810893255081)
prvotelka:
     LeveneResult(statistic=0.8281657254169228, pvalue=0.374828996511521)
     BartlettResult(statistic=0.8425454395018673, pvalue=0.35866978721752174)
jalovice:
     LeveneResult(statistic=0.026328284716801393, pvalue=0.8729087673928212)
     BartlettResult(statistic=0.3369503111616902, pvalue=0.5615948720202055)

Cu

kráva:
     LeveneResult(statistic=0.009177751262098159, pvalue=0.9247374770447684)
     BartlettResult(statistic=0.045900449816058814, pvalue=0.8303568614602039)
prvotelka:
     LeveneResult(statistic=0.02825990498243017, pvalue=0.868373669594658)
     BartlettResult(statistic=0.2128779613996003, pvalue=0.6445209785208774)
jalovice:
     LeveneResult(statistic=0.7093447922170775, pvalue=0.41071274323922036)
     BartlettResult(statistic=1.37408968768218, pvalue=0.24111045972253126)

Se

kráva:
     LeveneResult(statistic=2.2463613572967067, pvalue=0.15126257604302207)
     BartlettResult(statistic=1.8532903356841344, pvalue=0.1734011932925693)
prvotelka:
     LeveneResult(statistic=0.13296837508164241, pvalue=0.7196228141839374)
     BartlettResult(statistic=0.4439651106495941, pvalue=0.5052148479286563)
jalovice:
     LeveneResult(statistic=0.014735830801810526, pvalue=0.9047260504000918)
     BartlettResult(statistic=0.004269079212404772, pvalue=0.9479047352168566)

ANOVA - Duben

In [33]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    lm = ols('{} ~ kat'.format(col), data=df_04[['kat', col]]).fit()
    table = sm.stats.anova_lm(lm)
    display(table)

Ca

df sum_sq mean_sq F PR(>F)
kat 2 0,48494 0,24247 23,6291 1,17045e-06
Residual 27 0,27706 0,0102615 nan nan

P

df sum_sq mean_sq F PR(>F)
kat 2 0,235927 0,117963 1,08105 0,353474
Residual 27 2,94622 0,109119 nan nan

Mg

df sum_sq mean_sq F PR(>F)
kat 2 0,00268667 0,00134333 0,118692 0,888542
Residual 27 0,30558 0,0113178 nan nan

Zn

df sum_sq mean_sq F PR(>F)
kat 2 53,4127 26,7064 10,5375 0,000414487
Residual 27 68,4294 2,53442 nan nan

Cu

df sum_sq mean_sq F PR(>F)
kat 2 7,36214 3,68107 0,733828 0,489399
Residual 27 135,439 5,01626 nan nan

Se

df sum_sq mean_sq F PR(>F)
kat 2 0,00685487 0,00342743 1,12082 0,340711
Residual 27 0,082565 0,00305796 nan nan

Mnohonásobné porovnání

In [34]:
print('Ca:')
m_comp = pairwise_tukeyhsd(endog=df_04['Ca'], groups=df_04['kat'], alpha=0.05)
print(m_comp)

print('Zn:')
m_comp = pairwise_tukeyhsd(endog=df_04['Zn'], groups=df_04['kat'], alpha=0.05)
print(m_comp)
Ca:
   Multiple Comparison of Means - Tukey HSD, FWER=0.05   
=========================================================
 group1    group2  meandiff p-adj   lower   upper  reject
---------------------------------------------------------
jalovice     kráva   -0.289  0.001 -0.4013 -0.1767   True
jalovice prvotelka   -0.245  0.001 -0.3573 -0.1327   True
   kráva prvotelka    0.044 0.5958 -0.0683  0.1563  False
---------------------------------------------------------
Zn:
   Multiple Comparison of Means - Tukey HSD, FWER=0.05   
=========================================================
 group1    group2  meandiff p-adj   lower   upper  reject
---------------------------------------------------------
jalovice     kráva   -3.024  0.001 -4.7889 -1.2591   True
jalovice prvotelka   -2.586 0.0032 -4.3509 -0.8211   True
   kráva prvotelka    0.438  0.799 -1.3269  2.2029  False
---------------------------------------------------------
In [35]:
print('Ca:')
m_comp = pairwise_tukeyhsd(endog=df_04['Ca'], groups=df_04['kat'], alpha=0.01)
print(m_comp)

print('Zn:')
m_comp = pairwise_tukeyhsd(endog=df_04['Zn'], groups=df_04['kat'], alpha=0.01)
print(m_comp)
Ca:
  Multiple Comparison of Means - Tukey HSD, FWER=0.01  
=======================================================
 group1    group2  meandiff p-adj  lower  upper  reject
-------------------------------------------------------
jalovice     kráva   -0.289  0.001 -0.433 -0.145   True
jalovice prvotelka   -0.245  0.001 -0.389 -0.101   True
   kráva prvotelka    0.044 0.5958   -0.1  0.188  False
-------------------------------------------------------
Zn:
   Multiple Comparison of Means - Tukey HSD, FWER=0.01   
=========================================================
 group1    group2  meandiff p-adj   lower   upper  reject
---------------------------------------------------------
jalovice     kráva   -3.024  0.001 -5.2865 -0.7615   True
jalovice prvotelka   -2.586 0.0032 -4.8485 -0.3235   True
   kráva prvotelka    0.438  0.799 -1.8245  2.7005  False
---------------------------------------------------------

ANOVA - Listopad

In [36]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    lm = ols('{} ~ kat'.format(col), data=df_11[['kat', col]]).fit()
    table = sm.stats.anova_lm(lm)
    display(table)

Ca

df sum_sq mean_sq F PR(>F)
kat 2 0,0355467 0,0177733 0,744612 0,48442
Residual 27 0,64447 0,0238693 nan nan

P

df sum_sq mean_sq F PR(>F)
kat 2 1,03299 0,516493 6,67892 0,0043993
Residual 27 2,08796 0,0773319 nan nan

Mg

df sum_sq mean_sq F PR(>F)
kat 2 0,0187467 0,00937333 0,960273 0,395479
Residual 27 0,26355 0,00976111 nan nan

Zn

df sum_sq mean_sq F PR(>F)
kat 2 13,1325 6,56626 2,40161 0,10966
Residual 27 73,8208 2,7341 nan nan

Cu

df sum_sq mean_sq F PR(>F)
kat 2 1,93013 0,965063 0,134057 0,875118
Residual 27 194,37 7,19888 nan nan

Se

df sum_sq mean_sq F PR(>F)
kat 2 0,00839047 0,00419523 0,926799 0,408048
Residual 27 0,122218 0,00452658 nan nan

Mnohonásobné porovnání

In [37]:
print('P:')
m_comp = pairwise_tukeyhsd(endog=df_11['P'], groups=df_11['kat'], alpha=0.05)
print(m_comp)
P:
   Multiple Comparison of Means - Tukey HSD, FWER=0.05   
=========================================================
 group1    group2  meandiff p-adj   lower   upper  reject
---------------------------------------------------------
jalovice     kráva   -0.454 0.0031 -0.7623 -0.1457   True
jalovice prvotelka   -0.246 0.1369 -0.5543  0.0623  False
   kráva prvotelka    0.208 0.2341 -0.1003  0.5163  False
---------------------------------------------------------
In [38]:
print('P:')
m_comp = pairwise_tukeyhsd(endog=df_11['P'], groups=df_11['kat'], alpha=0.01)
print(m_comp)
P:
   Multiple Comparison of Means - Tukey HSD, FWER=0.01   
=========================================================
 group1    group2  meandiff p-adj   lower   upper  reject
---------------------------------------------------------
jalovice     kráva   -0.454 0.0031 -0.8492 -0.0588   True
jalovice prvotelka   -0.246 0.1369 -0.6412  0.1492  False
   kráva prvotelka    0.208 0.2341 -0.1872  0.6032  False
---------------------------------------------------------

Párový ttest na střední hodnotu - Listopad vs. Duben

Boxplot - grafické porovnání

In [39]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    fig, ax = plt.subplots(figsize=(5, 2))
    df.boxplot(column=['{}_11'.format(col), '{}_04'.format(col)], ax=ax)
    plt.show()

Ca

P

Mg

Zn

Cu

Se

Test shody rozptylů

In [40]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    print(levene(df[col + '_04'], df[col + '_11']))
    print(bartlett(df[col + '_04'], df[col + '_11']))

Ca

LeveneResult(statistic=0.13455328310010664, pvalue=0.715091864367073)
BartlettResult(statistic=0.09229695954733631, pvalue=0.7612771073716773)

P

LeveneResult(statistic=0.00016336647607238146, pvalue=0.9898459888213504)
BartlettResult(statistic=0.002687755878540329, pvalue=0.9586533373853114)

Mg

LeveneResult(statistic=0.11764904197336569, pvalue=0.7328385169635123)
BartlettResult(statistic=0.05518298363739116, pvalue=0.8142781326486637)

Zn

LeveneResult(statistic=0.4187394302685223, pvalue=0.5201196581880472)
BartlettResult(statistic=0.8073055424113088, pvalue=0.36891806886710754)

Cu

LeveneResult(statistic=0.1089186520911942, pvalue=0.7425676927488051)
BartlettResult(statistic=0.718564587467387, pvalue=0.396615154459391)

Se

LeveneResult(statistic=2.3571888924954365, pvalue=0.13014424754247775)
BartlettResult(statistic=1.0169240099500454, pvalue=0.31324975542613775)

Párový ttest na střední hodnotu

In [41]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    print(ttest_rel(df['{}_04'.format(col)], df['{}_11'.format(col)]))

Ca

Ttest_relResult(statistic=3.3333346000858985, pvalue=0.0023549639798369883)

P

Ttest_relResult(statistic=1.354000529642912, pvalue=0.18619442135137854)

Mg

Ttest_relResult(statistic=-0.24126736784185457, pvalue=0.8110456640749573)

Zn

Ttest_relResult(statistic=-2.181399623194931, pvalue=0.037406271482734704)

Cu

Ttest_relResult(statistic=-7.027493492226774, pvalue=9.9486335295868e-08)

Se

Ttest_relResult(statistic=10.983606844227468, pvalue=7.534639423009486e-12)

Kontrola Normality

Celá data

  • Kolmogorov-Smirnov test porovnává data s normálním rozdělením se střední hodnotou a směrodatnou odchylkou získanou z těchto dat
  • pravděpodobnostní graf používá nejlepší fit (Fit a least-squares regression (best-fit) line to the sample data)
    • modré body jsou data
    • červená čára je porovnávané normální rozdělení
In [42]:
for col in col_list:
    display(HTML(r'<h4> {} </h4>'.format(col)))
    print('Listopad:', kstest(df['{}_11'.format(col)], 'norm', args=(df['{}_11'.format(col)].mean(), df['{}_11'.format(col)].std())))
    print('Duben:', kstest(df['{}_04'.format(col)], 'norm', args=(df['{}_04'.format(col)].mean(), df['{}_04'.format(col)].std())))
    fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 3))
    
    probplot(df['{}_04'.format(col)], plot=ax[0], dist='norm')
    probplot(df['{}_11'.format(col)], plot=ax[1], dist='norm')
    plt.show()

Ca

Listopad: KstestResult(statistic=0.08655680655044967, pvalue=0.97815132692603)
Duben: KstestResult(statistic=0.09992800436664462, pvalue=0.9254747899196086)

P

Listopad: KstestResult(statistic=0.10332352483046386, pvalue=0.9059382362006247)
Duben: KstestResult(statistic=0.13991615781303035, pvalue=0.5647927081208376)

Mg

Listopad: KstestResult(statistic=0.18502738216721126, pvalue=0.2263711173520002)
Duben: KstestResult(statistic=0.1228549470528012, pvalue=0.747703577675398)

Zn

Listopad: KstestResult(statistic=0.11887064835541772, pvalue=0.7942637027855947)
Duben: KstestResult(statistic=0.13188533792892465, pvalue=0.6474048749885323)

Cu

Listopad: KstestResult(statistic=0.12593986888662978, pvalue=0.7126002790450607)
Duben: KstestResult(statistic=0.08603465630163243, pvalue=0.9794396676681931)

Se

Listopad: KstestResult(statistic=0.12359488509762495, pvalue=0.7392068300404856)
Duben: KstestResult(statistic=0.1589098401763357, pvalue=0.3962944496474596)

Podle kategorií

In [43]:
for kat in kat_lst:
    display(HTML(r'<h4> {} </h4>'.format(kat)))
    for col in col_list:
        display(HTML(r'<h4> {} </h4>'.format(col)))
        d_11 = df.loc[df.kat==kat, '{}_11'.format(col)]
        print('Listopad:', kstest(d_11, 'norm', args=(d_11.mean(), d_11.std())))
        d_04 = df.loc[df.kat==kat, '{}_04'.format(col)]
        print('Duben:', kstest(d_04, 'norm', args=(d_04.mean(), d_04.std())))
        fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 3))
        probplot(d_04, plot=ax[0], dist='norm')
        probplot(d_11, plot=ax[1], dist='norm')
        plt.show()

kráva

Ca

Listopad: KstestResult(statistic=0.1310364619661114, pvalue=0.9954153996162525)
Duben: KstestResult(statistic=0.1424062174478138, pvalue=0.9873076927549318)

P

Listopad: KstestResult(statistic=0.15198632920711086, pvalue=0.9750060214151013)
Duben: KstestResult(statistic=0.17179946735761692, pvalue=0.9294073295881844)

Mg

Listopad: KstestResult(statistic=0.1202387414424575, pvalue=0.9987026799688807)
Duben: KstestResult(statistic=0.24385259608280402, pvalue=0.5230813995198036)

Zn

Listopad: KstestResult(statistic=0.2122951954812453, pvalue=0.7126575396451719)
Duben: KstestResult(statistic=0.18654905668355026, pvalue=0.8773417709136038)

Cu

Listopad: KstestResult(statistic=0.25075438737972755, pvalue=0.4858384629566451)
Duben: KstestResult(statistic=0.16234639601487827, pvalue=0.9547330514654652)

Se

Listopad: KstestResult(statistic=0.16177358718128976, pvalue=0.95605648408402)
Duben: KstestResult(statistic=0.1397690746422079, pvalue=0.9897430233546571)

prvotelka

Ca

Listopad: KstestResult(statistic=0.13919936514324127, pvalue=0.9902209386600365)
Duben: KstestResult(statistic=0.16675765283461147, pvalue=0.9437313126876545)

P

Listopad: KstestResult(statistic=0.16697918449783278, pvalue=0.9431409965066426)
Duben: KstestResult(statistic=0.13338897672014874, pvalue=0.9942101293934815)

Mg

Listopad: KstestResult(statistic=0.2530945190105972, pvalue=0.4735945277699452)
Duben: KstestResult(statistic=0.18805641664458805, pvalue=0.8712391296911766)

Zn

Listopad: KstestResult(statistic=0.166234561433932, pvalue=0.9451108629995514)
Duben: KstestResult(statistic=0.11040265322469733, pvalue=0.9997113712853967)

Cu

Listopad: KstestResult(statistic=0.16091672196559798, pvalue=0.9579912272612394)
Duben: KstestResult(statistic=0.1225232444348503, pvalue=0.9982550427631123)

Se

Listopad: KstestResult(statistic=0.3007608017652499, pvalue=0.26828331832066277)
Duben: KstestResult(statistic=0.3032022588490401, pvalue=0.2599214539796904)

jalovice

Ca

Listopad: KstestResult(statistic=0.24644062091214103, pvalue=0.5089206723863494)
Duben: KstestResult(statistic=0.2096938454893414, pvalue=0.7294944579061857)

P

Listopad: KstestResult(statistic=0.14616954981175057, pvalue=0.9831536409187048)
Duben: KstestResult(statistic=0.23709741753681196, pvalue=0.5611129124545458)

Mg

Listopad: KstestResult(statistic=0.22815411678808317, pvalue=0.6137220001403716)
Duben: KstestResult(statistic=0.23630078786579384, pvalue=0.5656971342893147)

Zn

Listopad: KstestResult(statistic=0.1568086179161846, pvalue=0.9665238787288428)
Duben: KstestResult(statistic=0.18458138050943185, pvalue=0.8851047759163964)

Cu

Listopad: KstestResult(statistic=0.140206799384765, pvalue=0.9893644542530191)
Duben: KstestResult(statistic=0.13403308251357804, pvalue=0.9938418635444342)

Se

Listopad: KstestResult(statistic=0.1544985497148938, pvalue=0.9707899041954995)
Duben: KstestResult(statistic=0.19050961822869544, pvalue=0.8610297455847824)
In [44]:
import pandas as pd
import matplotlib.pyplot as plt
In [45]:
df = pd.DataFrame(dict(a=[1,3,3.5,4,5,8]))
df.describe()
Out[45]:
a
count 6
mean 4,08333
std 2,33274
min 1
25% 3,125
50% 3,75
75% 4,75
max 8
In [46]:
fig, ax = plt.subplots()
df.boxplot(ax=ax)
ax.plot([0.9]*6, df, 'ko')
ax.plot([1.1], [df.mean()], 'ro')
ax.plot([1.1], [df.min()], 'go')
ax.plot([1.1], [df.max()], 'go')
ax.plot([1.1], df.quantile(.25), 'bo')
ax.plot([1.1], df.quantile(.75), 'bo')
d = (df.quantile(.75) - df.quantile(.25))*1.5
ax.plot([1.1], df.quantile(.25)-d, 'mo')
ax.plot([1.1], df.quantile(.75)+d, 'mo')

ax.plot([1.1], df.quantile(.5), 'ko')
Out[46]:
[<matplotlib.lines.Line2D at 0x7f97959c27d0>]
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]: