In [2]:
from IPython.display import FileLink
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
import os
#os.chdir(r'C:\Users\Martina\SCHOOL\VUT 2006-\JINE_(kurzy apod.)\2014_DPS\DPS_ZaverecnaPrace')
os.chdir(r'/media/data/virtualbox/virtual_dir/martina/')
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['font.size'] = 16
plt.rcParams['legend.fontsize'] = 16
In [3]:
otazky = ['o%02d' % (i+1) for i in range(20)]
otazky_10 = ['o%02d' % (i+1) for i in range(10)]
otazky_20 = ['o%02d' % (i+1) for i in range(10,20)]
otazky_ano_ne = ['o22', 'o23', 'o25']
skoly = ['O-Stav', 'G-VS','G-Jar']
pohlavi = {0:u'dívka', 1:u'chlapec'}
ano_ne = { 0:u'ne', 1:u'ano', 2:u'nevím'}
obor = {0:u'nevím', 1:u'přírodovědný', 2:u'společensko-\nvědní', 
        3:u'technický', 4:u'umění', 5:u'vojenství\na policie'}
dopln = {0: 'a',1: 'b',2: 'c',3: 'd',4: 'e', 5: 'nic'}
df = pd.read_excel('ZP_somodikova_dotaznik.xlsx', 'data', header=8, index_col=0)
In [4]:
def analyza_podle_skol(df, filename):
    f, axes = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(8,8.5))
    markers = { u'O-Stav': u'o', u'G-VS': u'v', u'G-Jar': u'^'}
    labels = {1: u'O-Stav', 2: u'G-VS', 3: u'G-Jar'}
    dist = .2
    disty = 12
    pocet = 4
    range_ = df['skola'].value_counts().index
    range_ = np.sort(range_)
    for oi, otazky in enumerate([otazky_10, otazky_20]):
        plt.subplot(2,1,oi+1)
        for si, skola in enumerate(range_):  
            dfs = df[df.skola==skola]
            if dfs.shape[0]==0:
                continue
            mu = []
            std = []
            m = markers[skola]
            vmin, vmax = 100, 0
            for i, q in enumerate(otazky):
                gv = dfs[q].value_counts(normalize=True, dropna=True)
                s = gv.get_values()*100
                vmin_new = np.min(s)
                vmax_new = np.max(s)
                if vmin > vmin_new:
                    vmin = vmin_new - vmin_new%10
                if vmax < vmax_new:
                    vmax = vmax_new - vmax_new%10 + 10
            for i, q in enumerate(otazky):
                mu.append(dfs[q].mean())
                std.append(dfs[q].std())
                gv = dfs[q].value_counts(normalize=True, dropna=True)
                s = gv.get_values()*100
                #print s
                #print gv.get_values()/np.sum(gv.get_values()).astype(float)*100
                if i == 0:
                    label = skola
                else:
                    label = '_nolabel_'
                sc = plt.scatter(np.ones_like(gv.index)*i,gv.index+(disty*si-0.5*disty*(pocet-2)),s=s*1.5,c=s, color='w',
                            cmap=plt.cm.get_cmap('spectral_r'), edgecolors='k', marker=m,
                            vmin=vmin, vmax=vmax, label=label) # 'RdYlBu'
            #l = plt.plot(mu, lw=0.5, marker=m, ms=3)
            #c=l[-1].get_color()
            plt.errorbar(np.arange(10)+dist*(si+1),mu, yerr=std, fmt=m, mfc='none', color='k', lw=1, label=label, mew=1, ms=7)
            #plt.plot(np.array(mu)+np.array(std), lw=0.5, ls='--', marker=m, ms=3, color=c)
            #plt.plot(np.array(mu)-np.array(std), lw=0.5, ls='--', marker=m, ms=3, color=c)
        xx = np.arange(10)+(pocet-1)*dist*0.5
        plt.xticks(xx,otazky, rotation=90)
        plt.yticks([-100,-50,0,50,100], 
                   [u'naprosto\nsouhlasím\n(100 %)',u'spíše\nsouhlasím\n(50 %)',
                    u'nevím\n(0 %)',u'spíše\nnesouhlasím\n(-50 %)',u'naprosto\nnesouhlasím\n(-100 %)'], 
                    rotation=0, horizontalalignment=u'right', verticalalignment='center',
                    multialignment='center')
        plt.xlim(-0.5,10)
        ymin, ymax = -120,120
        plt.ylim(ymin, ymax)
        for x in xx-.5:
            plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
        plt.plot([x+1,x+1], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    #plt.colorbar(label=u'Relativní četnost [%]', orientation='vertical', shrink=.7, pad=0.08)
    cax = f.add_axes([0.2, -0.015, 0.7, 0.025])
    f.colorbar(sc, cax=cax, label=u'Relativní četnost [%]', orientation='horizontal')
    plt.subplot(2,1,1)
    plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), 
               ncol=4)
    plt.tight_layout()
    plt.savefig(filename)
In [5]:
def analyza_podle_rocniku(df, filename):
    f, axes = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(8,8.5))
    markers = {1: u'^', 2: u'o', 3: u's', 4: u'v'}
    labels = {1: u'1. ročník', 2: u'2. ročník', 3: u'3. ročník', 4: u'4. ročník'}
    dist = 1/6.
    disty = 8
    pocet = 5
    range_ = df['rocnik'].value_counts().index
    range_ = np.sort(range_)
    for oi, otazky in enumerate([otazky_10, otazky_20]):
        plt.subplot(2,1,oi+1)
        for si, skola in enumerate(range_):  
            dfs = df[df.rocnik==skola]
            if dfs.shape[0]==0:
                continue
            mu = []
            std = []
            m = markers[skola]
            vmin, vmax = 100, 0
            for i, q in enumerate(otazky):
                gv = dfs[q].value_counts(normalize=True, dropna=True)
                s = gv.get_values()*100
                vmin_new = np.min(s)
                vmax_new = np.max(s)
                if vmin > vmin_new:
                    vmin = vmin_new - vmin_new%10
                if vmax < vmax_new:
                    vmax = vmax_new - vmax_new%10 + 10
            for i, q in enumerate(otazky):
                mu.append(dfs[q].mean())
                std.append(dfs[q].std())
                gv = dfs[q].value_counts(normalize=True, dropna=True)
                s = gv.get_values()*100
                #print s
                #print gv.get_values()/np.sum(gv.get_values()).astype(float)*100
                if i == 0:
                    label = labels[skola]
                else:
                    label = '_nolabel_'
                sc = plt.scatter(np.ones_like(gv.index)*i,gv.index+(disty*si-0.5*disty*(pocet-2)),s=s*1.5,c=s, color='w',
                            cmap=plt.cm.get_cmap('spectral_r'), edgecolors='k', marker=m,
                            vmin=vmin, vmax=vmax, label=label) # 'RdYlBu'
            #l = plt.plot(mu, lw=0.5, marker=m, ms=3)
            #c=l[-1].get_color()
            plt.errorbar(np.arange(10)+dist*(si+1),mu, yerr=std, fmt=m, mfc='none', color='k', lw=1, label=label, mew=1, ms=7)
            #plt.plot(np.array(mu)+np.array(std), lw=0.5, ls='--', marker=m, ms=3, color=c)
            #plt.plot(np.array(mu)-np.array(std), lw=0.5, ls='--', marker=m, ms=3, color=c)
        xx = np.arange(10)+(pocet-1)*dist*0.5
        plt.xticks(xx,otazky, rotation=90)
        plt.yticks([-100,-50,0,50,100], 
                   [u'naprosto\nsouhlasím\n(100 %)',u'spíše\nsouhlasím\n(50 %)',
                    u'nevím\n(0 %)',u'spíše\nnesouhlasím\n(-50 %)',u'naprosto\nnesouhlasím\n(-100 %)'], 
                    rotation=0, horizontalalignment=u'right', verticalalignment='center',
                    multialignment='center')
        plt.xlim(-0.5,10)
        ymin, ymax = -120,120
        plt.ylim(ymin, ymax)
        for x in xx-.5:
            plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
        plt.plot([x+1,x+1], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    #plt.colorbar(label=u'Relativní četnost [%]', orientation='vertical', shrink=.7, pad=0.08)
    cax = f.add_axes([0.2, -0.015, 0.7, 0.025])
    f.colorbar(sc, cax=cax, label=u'Relativní četnost [%]', orientation='horizontal')
    plt.subplot(2,1,1)
    plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), 
               ncol=4)
    plt.tight_layout()
    plt.savefig(filename)
In [6]:
def analyza_podle_pohlavi(df, filename):
    f, axes = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(8,8.5))
    markers = {0: u'o', 1: u's'}
    labels = {0: u'dívky', 1: u'chlapci'}
    dist = .25
    disty = 12
    pocet = 3
    range_ = df['pohlavi'].value_counts().index
    range_ = np.sort(range_)
    for oi, otazky in enumerate([otazky_10, otazky_20]):
        plt.subplot(2,1,oi+1)
        for si, skola in enumerate(range_): 
            dfs = df[df.pohlavi==skola]
            if dfs.shape[0]==0:
                continue
            mu = []
            std = []
            m = markers[skola]
            vmin, vmax = 100, 0
            for i, q in enumerate(otazky):
                gv = dfs[q].value_counts(normalize=True, dropna=True)
                s = gv.get_values()*100
                vmin_new = np.min(s)
                vmax_new = np.max(s)
                if vmin > vmin_new:
                    vmin = vmin_new - vmin_new%10
                if vmax < vmax_new:
                    vmax = vmax_new - vmax_new%10 + 10
            for i, q in enumerate(otazky):
                mu.append(dfs[q].mean())
                std.append(dfs[q].std())
                gv = dfs[q].value_counts(normalize=True, dropna=True)
                s = gv.get_values()*100
                #print s
                #print gv.get_values()/np.sum(gv.get_values()).astype(float)*100
                if i == 0:
                    label = labels[skola]
                else:
                    label = '_nolabel_'
                sc = plt.scatter(np.ones_like(gv.index)*i,gv.index+(disty*si-0.5*disty*(pocet-2)),s=s*1.5,c=s, color='w',
                            cmap=plt.cm.get_cmap('spectral_r'), edgecolors='k', marker=m,
                            vmin=vmin, vmax=vmax, label=label) # 'RdYlBu'
            #l = plt.plot(mu, lw=0.5, marker=m, ms=3)
            #c=l[-1].get_color()
            plt.errorbar(np.arange(10)+dist*(si+1),mu, yerr=std, fmt=m, mfc='none', color='k', lw=1, label=label, mew=1, ms=7)
            #plt.plot(np.array(mu)+np.array(std), lw=0.5, ls='--', marker=m, ms=3, color=c)
            #plt.plot(np.array(mu)-np.array(std), lw=0.5, ls='--', marker=m, ms=3, color=c)
        xx = np.arange(10)+(pocet-1)*dist*0.5
        plt.xticks(xx,otazky, rotation=90)
        plt.yticks([-100,-50,0,50,100], 
                   [u'naprosto\nsouhlasím\n(100 %)',u'spíše\nsouhlasím\n(50 %)',
                    u'nevím\n(0 %)',u'spíše\nnesouhlasím\n(-50 %)',u'naprosto\nnesouhlasím\n(-100 %)'], 
                    rotation=0, horizontalalignment=u'right', verticalalignment='center',
                    multialignment='center')
        plt.xlim(-0.5,10)
        ymin, ymax = -120,120
        plt.ylim(ymin, ymax)
        for x in xx-.5:
            plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
        plt.plot([x+1,x+1], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    #plt.colorbar(label=u'Relativní četnost [%]', orientation='vertical', shrink=.7, pad=0.08)
    cax = f.add_axes([0.2, -0.015, 0.7, 0.025])
    f.colorbar(sc, cax=cax, label=u'Relativní četnost [%]', orientation='horizontal')
    plt.subplot(2,1,1)
    plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.15), 
               ncol=3)
    plt.tight_layout()
    plt.savefig(filename)

Skoly¶

In [7]:
d = df
print 'průměrný věk žáků', d['vek'].mean(), d['vek'].std()
print 'počet žáků', d['skola'].count()
print
print 'holky vs kluci', d['pohlavi'].value_counts()
print
print 'O-Stav', d[d.skola=='O-Stav']['pohlavi'].value_counts()
print
print 'G-VS', d[d.skola=='G-VS']['pohlavi'].value_counts()
print
print 'G-Jar', d[d.skola=='G-Jar']['pohlavi'].value_counts()
průměrný věk žáků 17.4047619048 1.22956637719
počet žáků 168

holky vs kluci 1    99
0    69
dtype: int64

O-Stav 1    50
0    15
dtype: int64

G-VS 0    23
1    22
dtype: int64

G-Jar 0    31
1    27
dtype: int64

o01 - o20¶

In [8]:
plt.rcParams['font.size'] = 14
plt.rcParams['legend.fontsize'] = 14
analyza_podle_skol(df, 'figs/Skoly_all.svg')
/home/kelidas/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.py:1653: UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect.
  warnings.warn("This figure includes Axes that are not "
In [9]:
analyza_podle_skol(df[df.pohlavi==1], 'figs/Skoly_chlapci.svg')
In [10]:
analyza_podle_skol(df[df.pohlavi==0], 'figs/Skoly_divky.svg')

o21 - o26¶

In [11]:
plt.rcParams['font.size'] = 16
plt.rcParams['legend.fontsize'] = 16

dfs = df
data = ','.join(dfs['o21'].as_matrix().astype(unicode).tolist())
data = np.array(data.split(','))
ddd = pd.DataFrame(data)[0]
d = ddd.value_counts(dropna=False)
df_predmety = pd.DataFrame({'Skoly': d})

for i in range(2):
    data = ','.join(dfs[dfs.pohlavi==i]['o21'].as_matrix().astype(unicode).tolist())
    data = np.array(data.split(','))
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    df_predmety[pohlavi[i]] = d

for i in skoly:
    data = ','.join(dfs[dfs.skola==i]['o21'].as_matrix().astype(unicode).tolist())
    data = np.array(data.split(','))
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    df_predmety[u'%s'%i] = d
    for j in range(2):
        data = ','.join(dfs[(dfs.skola==i) & (dfs.pohlavi==j)]['o21'].as_matrix().astype(unicode).tolist())
        data = np.array(data.split(','))
        ddd = pd.DataFrame(data)[0]
        d = ddd.value_counts(dropna=False)
        df_predmety[pohlavi[j] + u'-%s'%i] = d
   
print df_predmety
df_predmety.fillna(0, inplace=True)
df_predmety.to_excel('figs/Skoly_o21_predmety.xlsx', 'predmety')
           Skoly  dívka  chlapec  O-Stav  dívka-O-Stav  chlapec-O-Stav  G-VS  \
AJ            22     11       11       7             1               6     8   
M             17     10        7       3             1               2     3   
BI            17     11        6     NaN           NaN             NaN    11   
ZSV           16      6       10       4             1               3     5   
IVT           13      2       11       5             1               4     3   
TV            12      1       11       7           NaN               7     1   
STK           12    NaN       12      12           NaN              12   NaN   
STM           11    NaN       11      11           NaN              11   NaN   
nan           10      7        3       2             2             NaN     1   
D             10      5        5       1             1             NaN     6   
ARCH           9      2        7       9             2               7   NaN   
CH             8      5        3     NaN           NaN             NaN     6   
žádný          6      3        3       2           NaN               2     1   
Z              6      2        4       1           NaN               1     1   
ČJ             5      4        1       3             2               1   NaN   
PST            5      1        4       5             1               4   NaN   
VV             4      2        2     NaN           NaN             NaN   NaN   
F              4      2        2     NaN           NaN             NaN     2   
jazyky         3      2        1     NaN           NaN             NaN   NaN   
RJ             2      2      NaN     NaN           NaN             NaN   NaN   
nevím          2    NaN        2       1           NaN               1   NaN   
GEOD           1      1      NaN       1             1             NaN   NaN   
INGstavby      1    NaN        1       1           NaN               1   NaN   
zvonek         1    NaN        1     NaN           NaN             NaN     1   
DG             1      1      NaN       1             1             NaN   NaN   
EKONOM         1      1      NaN       1             1             NaN   NaN   
ŠPJ            1      1      NaN     NaN           NaN             NaN   NaN   
NJ             1      1      NaN     NaN           NaN             NaN   NaN   
odborné        1      1      NaN       1             1             NaN   NaN   

           dívka-G-VS  chlapec-G-VS  G-Jar  dívka-G-Jar  chlapec-G-Jar  
AJ                  5             3      7            5              2  
M                   2             1     11            7              4  
BI                  8             3      6            3              3  
ZSV                 3             2      7            2              5  
IVT               NaN             3      5            1              4  
TV                NaN             1      4            1              3  
STK               NaN           NaN    NaN          NaN            NaN  
STM               NaN           NaN    NaN          NaN            NaN  
nan                 1           NaN      7            4              3  
D                   3             3      3            1              2  
ARCH              NaN           NaN    NaN          NaN            NaN  
CH                  3             3      2            2            NaN  
žádný               1           NaN      3            2              1  
Z                 NaN             1      4            2              2  
ČJ                NaN           NaN      2            2            NaN  
PST               NaN           NaN    NaN          NaN            NaN  
VV                NaN           NaN      4            2              2  
F                   1             1      2            1              1  
jazyky            NaN           NaN      3            2              1  
RJ                NaN           NaN      2            2            NaN  
nevím             NaN           NaN      1          NaN              1  
GEOD              NaN           NaN    NaN          NaN            NaN  
INGstavby         NaN           NaN    NaN          NaN            NaN  
zvonek            NaN             1    NaN          NaN            NaN  
DG                NaN           NaN    NaN          NaN            NaN  
EKONOM            NaN           NaN    NaN          NaN            NaN  
ŠPJ               NaN           NaN      1            1            NaN  
NJ                NaN           NaN      1            1            NaN  
odborné           NaN           NaN    NaN          NaN            NaN  
In [12]:
def autolabel(rects, r):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.*1.25, height+0.03, r,
                ha='center', va='bottom', rotation=90)
        
def y_fmt(y, position):
    return '%d' % (y*100)
y_fmtr = FuncFormatter(y_fmt)

def x_fmt(x, position):
    return '%s' % ano_ne.get(x, '')
x_fmtr = FuncFormatter(x_fmt)

n = 3
width = 0.3

s1 = df[(df.skola=='O-Stav')]['o22']
s2 = df[(df.skola=='G-VS')]['o22']
s3 = df[(df.skola=='G-Jar')]['o22']
colors = ['r', 'g', 'b']

plt.figure(figsize=(10,3.5))
title = u'Otázka o22'
for di, dd in enumerate([s1,s2,s3]):
    label = '_nolabel_'
    plt.subplot(121)
    d = dd.value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    r1 = plt.bar(idx+(di-1.5)*width, val/sval, color='#dddddd', width=width, ec=colors[di], lw=2,
                 label=u'%s' % (skoly[di]))
    #autolabel(r1, u'%d. ročník' % (di+2))
    
    plt.gca().yaxis.set_major_formatter(y_fmtr)
    plt.ylabel(u'Relativní četnost [%]')

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5,2.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
    
    plt.subplot(122)
    
    d = dd[df.pohlavi==1].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'chlapci'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', hatch='///', ec='k', zorder=10,
            lw=1, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)
    
    d = dd[df.pohlavi==0].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'dívky'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='#ffdddd', ec=colors[di], lw=.2, 
            label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)

    plt.gca().yaxis.set_major_formatter(y_fmtr)

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5, 2.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
plt.tight_layout()
plt.suptitle(title, y=1.02)
plt.savefig('figs/Skoly_o22.svg')
In [13]:
def autolabel(rects, r):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.*1.25, height+0.03, r,
                ha='center', va='bottom', rotation=90)
        
def y_fmt(y, position):
    return '%d' % (y*100)
y_fmtr = FuncFormatter(y_fmt)

def x_fmt(x, position):
    return '%s' % ano_ne.get(x, '')
x_fmtr = FuncFormatter(x_fmt)

n = 3
width = 0.3

s1 = df[(df.skola=='O-Stav')]['o23']
s2 = df[(df.skola=='G-VS')]['o23']
s3 = df[(df.skola=='G-Jar')]['o23']
colors = ['r', 'g', 'b']

plt.figure(figsize=(10,3.5))
title = u'Otázka o23'
for di, dd in enumerate([s1,s2,s3]):
    label = '_nolabel_'
    plt.subplot(121)
    d = dd.value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    r1 = plt.bar(idx+(di-1.5)*width, val/sval, color='#dddddd', width=width, ec=colors[di], lw=2,
                 label=u'%s' % (skoly[di]))
    #autolabel(r1, u'%d. ročník' % (di+2))
    
    plt.gca().yaxis.set_major_formatter(y_fmtr)
    plt.ylabel(u'Relativní četnost [%]')

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5,2.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
    
    plt.subplot(122)
    
    d = dd[df.pohlavi==1].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'chlapci'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', hatch='///', ec='k', zorder=10,
            lw=1, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)
    
    d = dd[df.pohlavi==0].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'dívky'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='#ffdddd', ec=colors[di], lw=.2, 
            label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)

    plt.gca().yaxis.set_major_formatter(y_fmtr)

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5, 2.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
plt.tight_layout()
plt.suptitle(title, y=1.02)
plt.savefig('figs/Skoly_o23.svg')
In [14]:
dfs = df
data = ','.join(dfs['o24'].as_matrix().astype(unicode).tolist())
data = np.array(data.split(','))
ddd = pd.DataFrame(data)[0]
d = ddd.value_counts(dropna=False)
df_predmety = pd.DataFrame({'Skoly': d})

for i in range(2):
    data = ','.join(dfs[dfs.pohlavi==i]['o24'].as_matrix().astype(unicode).tolist())
    data = np.array(data.split(','))
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    df_predmety[pohlavi[i]] = d

for i in skoly:
    data = ','.join(dfs[dfs.skola==i]['o24'].as_matrix().astype(unicode).tolist())
    data = np.array(data.split(','))
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    df_predmety[u'roč %s'%i] = d
    for j in range(2):
        data = ','.join(dfs[(dfs.skola==i) & (dfs.pohlavi==j)]['o24'].as_matrix().astype(unicode).tolist())
        data = np.array(data.split(','))
        ddd = pd.DataFrame(data)[0]
        d = ddd.value_counts(dropna=False)
        df_predmety[pohlavi[j] + u'-%s'%i] = d

print df_predmety
df_predmety.fillna(0, inplace=True)
df_predmety.to_excel('figs/Skoly_o24_ucitel.xlsx', 'ucitel')
                                        Skoly  dívka  chlapec  roč O-Stav  \
umí vysvětlit                              48     29       19          10   
využívá zábavné formy výuky                23      9       14           4   
nan                                        22     10       12          11   
tolerantní                                 18      5       13           6   
trpělivý                                   17      8        9           8   
umí zaujmout                               12      5        7           3   
jako náš učitel M-F                        11      3        8           4   
vzdělaný                                   10      5        5           4   
kreativní                                   8      5        3           1   
hodný                                       8      2        6           4   
ochotný pomoci                              7      4        3           4   
vstřícný                                    7      1        6           2   
spravedlivý                                 7      3        4           3   
srozumitelný                                5      4        1         NaN   
autorita                                    4      1        3           1   
jako náš učitel TV                          4      2        2           4   
empatický                                   4      1        3         NaN   
pohodový                                    4      1        3           1   
zkušený                                     4      1        3           4   
chápe individuální potřeby žáků             3      2        1           1   
přísný                                      3      1        2           2   
pozitivní                                   3      1        2           1   
nevím                                       3    NaN        3           3   
kvalitní                                    3      1        2         NaN   
uvádí ukázky využití M v běžném životě      2      1        1         NaN   
rozumí M                                    2      1        1         NaN   
inovativní                                  2      2      NaN         NaN   
důsledný                                    2      1        1           1   
nedává DÚ                                   2    NaN        2           1   
vidí smysl a cíle svého povolání            2      1        1         NaN   
aktivní                                     2      1        1         NaN   
nechá počítat žáky                          1      1      NaN         NaN   
učí přiměřeným tempem                       1    NaN        1           1   
donutí k procvičování                       1    NaN        1         NaN   
zdravý                                      1    NaN        1           1   
zkouřený                                    1    NaN        1           1   
neomezený jen na M                          1    NaN        1         NaN   
žádný                                       1    NaN        1           1   
normální                                    1    NaN        1           1   
střízlivý                                   1    NaN        1         NaN   
vousatý                                     1    NaN        1         NaN   

                                        dívka-O-Stav  chlapec-O-Stav  \
umí vysvětlit                                      2               8   
využívá zábavné formy výuky                        1               3   
nan                                                5               6   
tolerantní                                       NaN               6   
trpělivý                                           2               6   
umí zaujmout                                       1               2   
jako náš učitel M-F                              NaN               4   
vzdělaný                                           1               3   
kreativní                                        NaN               1   
hodný                                            NaN               4   
ochotný pomoci                                     2               2   
vstřícný                                         NaN               2   
spravedlivý                                      NaN               3   
srozumitelný                                     NaN             NaN   
autorita                                         NaN               1   
jako náš učitel TV                                 2               2   
empatický                                        NaN             NaN   
pohodový                                         NaN               1   
zkušený                                            1               3   
chápe individuální potřeby žáků                    1             NaN   
přísný                                           NaN               2   
pozitivní                                        NaN               1   
nevím                                            NaN               3   
kvalitní                                         NaN             NaN   
uvádí ukázky využití M v běžném životě           NaN             NaN   
rozumí M                                         NaN             NaN   
inovativní                                       NaN             NaN   
důsledný                                         NaN               1   
nedává DÚ                                        NaN               1   
vidí smysl a cíle svého povolání                 NaN             NaN   
aktivní                                          NaN             NaN   
nechá počítat žáky                               NaN             NaN   
učí přiměřeným tempem                            NaN               1   
donutí k procvičování                            NaN             NaN   
zdravý                                           NaN               1   
zkouřený                                         NaN               1   
neomezený jen na M                               NaN             NaN   
žádný                                            NaN               1   
normální                                         NaN               1   
střízlivý                                        NaN             NaN   
vousatý                                          NaN             NaN   

                                        roč G-VS  dívka-G-VS  chlapec-G-VS  \
umí vysvětlit                                 22          15             7   
využívá zábavné formy výuky                    4           2             2   
nan                                            3           2             1   
tolerantní                                     7           2             5   
trpělivý                                       4           3             1   
umí zaujmout                                   4           1             3   
jako náš učitel M-F                          NaN         NaN           NaN   
vzdělaný                                       4           2             2   
kreativní                                      4           3             1   
hodný                                          1           1           NaN   
ochotný pomoci                                 1           1           NaN   
vstřícný                                       3         NaN             3   
spravedlivý                                    1           1           NaN   
srozumitelný                                   4           3             1   
autorita                                       2           1             1   
jako náš učitel TV                           NaN         NaN           NaN   
empatický                                      2           1             1   
pohodový                                       2           1             1   
zkušený                                      NaN         NaN           NaN   
chápe individuální potřeby žáků              NaN         NaN           NaN   
přísný                                         1           1           NaN   
pozitivní                                    NaN         NaN           NaN   
nevím                                        NaN         NaN           NaN   
kvalitní                                       1         NaN             1   
uvádí ukázky využití M v běžném životě       NaN         NaN           NaN   
rozumí M                                       2           1             1   
inovativní                                     1           1           NaN   
důsledný                                       1           1           NaN   
nedává DÚ                                      1         NaN             1   
vidí smysl a cíle svého povolání             NaN         NaN           NaN   
aktivní                                        1         NaN             1   
nechá počítat žáky                           NaN         NaN           NaN   
učí přiměřeným tempem                        NaN         NaN           NaN   
donutí k procvičování                          1         NaN             1   
zdravý                                       NaN         NaN           NaN   
zkouřený                                     NaN         NaN           NaN   
neomezený jen na M                             1         NaN             1   
žádný                                        NaN         NaN           NaN   
normální                                     NaN         NaN           NaN   
střízlivý                                      1         NaN             1   
vousatý                                        1         NaN             1   

                                        roč G-Jar  dívka-G-Jar  chlapec-G-Jar  
umí vysvětlit                                  16           12              4  
využívá zábavné formy výuky                    15            6              9  
nan                                             8            3              5  
tolerantní                                      5            3              2  
trpělivý                                        5            3              2  
umí zaujmout                                    5            3              2  
jako náš učitel M-F                             7            3              4  
vzdělaný                                        2            2            NaN  
kreativní                                       3            2              1  
hodný                                           3            1              2  
ochotný pomoci                                  2            1              1  
vstřícný                                        2            1              1  
spravedlivý                                     3            2              1  
srozumitelný                                    1            1            NaN  
autorita                                        1          NaN              1  
jako náš učitel TV                            NaN          NaN            NaN  
empatický                                       2          NaN              2  
pohodový                                        1          NaN              1  
zkušený                                       NaN          NaN            NaN  
chápe individuální potřeby žáků                 2            1              1  
přísný                                        NaN          NaN            NaN  
pozitivní                                       2            1              1  
nevím                                         NaN          NaN            NaN  
kvalitní                                        2            1              1  
uvádí ukázky využití M v běžném životě          2            1              1  
rozumí M                                      NaN          NaN            NaN  
inovativní                                      1            1            NaN  
důsledný                                      NaN          NaN            NaN  
nedává DÚ                                     NaN          NaN            NaN  
vidí smysl a cíle svého povolání                2            1              1  
aktivní                                         1            1            NaN  
nechá počítat žáky                              1            1            NaN  
učí přiměřeným tempem                         NaN          NaN            NaN  
donutí k procvičování                         NaN          NaN            NaN  
zdravý                                        NaN          NaN            NaN  
zkouřený                                      NaN          NaN            NaN  
neomezený jen na M                            NaN          NaN            NaN  
žádný                                         NaN          NaN            NaN  
normální                                      NaN          NaN            NaN  
střízlivý                                     NaN          NaN            NaN  
vousatý                                       NaN          NaN            NaN  
In [15]:
def autolabel(rects, r):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.*1.25, height+0.03, r,
                ha='center', va='bottom', rotation=90)
        
def y_fmt(y, position):
    return '%d' % (y*100)
y_fmtr = FuncFormatter(y_fmt)

def x_fmt(x, position):
    return '%s' % ano_ne.get(x, '')
x_fmtr = FuncFormatter(x_fmt)

n = 3
width = 0.3

s1 = df[(df.skola=='O-Stav')]['o25']
s2 = df[(df.skola=='G-VS')]['o25']
s3 = df[(df.skola=='G-Jar')]['o25']
colors = ['r', 'g', 'b']

plt.figure(figsize=(10,3.5))
title = u'Otázka o25'
for di, dd in enumerate([s1,s2,s3]):
    label = '_nolabel_'
    plt.subplot(121)
    d = dd.value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    r1 = plt.bar(idx+(di-1.5)*width, val/sval, color='#dddddd', width=width, ec=colors[di], lw=2, 
                 label=u'%s' % (skoly[di]))
    #autolabel(r1, u'%d. ročník' % (di+2))
    
    plt.gca().yaxis.set_major_formatter(y_fmtr)
    plt.ylabel(u'Relativní četnost [%]')

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5,2.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
    
    plt.subplot(122)
    
    d = dd[df.pohlavi==1].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'chlapci'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', hatch='///', ec='k', zorder=10, 
            lw=1, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)
    
    d = dd[df.pohlavi==0].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'dívky'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='#ffdddd', ec=colors[di], lw=.2, 
            label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)

    plt.gca().yaxis.set_major_formatter(y_fmtr)

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5, 2.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
plt.tight_layout()
plt.suptitle(title, y=1.02)
plt.savefig('figs/Skoly_o25.svg')
In [16]:
def autolabel(rects, r):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.*1.25, height+0.03, r,
                ha='center', va='bottom', rotation=90)
        
def y_fmt(y, position):
    return '%d' % (y*100)
y_fmtr = FuncFormatter(y_fmt)

def x_fmt(x, position):
    return '%s' % obor.get(x, '')
x_fmtr = FuncFormatter(x_fmt)

n = 3
width = 0.3

s1 = df[(df.skola=='O-Stav')]['d26']
s2 = df[(df.skola=='G-VS')]['d26']
s3 = df[(df.skola=='G-Jar')]['d26']
colors = ['r', 'g', 'b']

plt.figure(figsize=(10,4.5))
title = u'Otázka o26'
for di, dd in enumerate([s1,s2,s3]):
    label = '_nolabel_'
    plt.subplot(121)
    d = dd.value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    r1 = plt.bar(idx+(di-1.5)*width, val/sval, color='#dddddd', width=width, ec=colors[di], lw=2, 
                 label=u'%s' % (skoly[di]))
    #autolabel(r1, u'%d. ročník' % (di+2))
    
    plt.gca().yaxis.set_major_formatter(y_fmtr)
    plt.ylabel(u'Relativní četnost [%]')

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=45)

    plt.xlim(-.5,5.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
    
    plt.subplot(122)
    
    d = dd[df.pohlavi==1].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'chlapci'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', hatch='///', ec='k', zorder=10, 
            lw=1, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)
    
    d = dd[df.pohlavi==0].value_counts()
    val = d.values
    idx = d.index
    sval = val.sum().astype(float)
    if di == 0:
        label = u'dívky'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='pink', ec=colors[di], lw=.2, 
            label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', ec=colors[di], zorder=11, lw=2)

    plt.gca().yaxis.set_major_formatter(y_fmtr)

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=45)

    plt.xlim(-.5,5.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
plt.tight_layout()
plt.suptitle(title, y=1.02)
plt.savefig('figs/Skoly_o26.svg')

d18 - d20¶

In [44]:
def autolabel(rects, r):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.*1.25, height+0.03, r,
                ha='center', va='bottom', rotation=90)
        
def y_fmt(y, position):
    return '%d' % (y*100)
y_fmtr = FuncFormatter(y_fmt)

def x_fmt(x, position):
    return '%s' % dopln.get(x, '')
x_fmtr = FuncFormatter(x_fmt)

n = 3
width = 0.3

s1 = df[(df.skola=='O-Stav')]['d18']
s2 = df[(df.skola=='G-VS')]['d18']
s3 = df[(df.skola=='G-Jar')]['d18']
colors = ['r', 'g', 'b']

plt.figure(figsize=(10,3.5))
title = u'Otázka d18'
for di, dd in enumerate([s1,s2,s3]):
    label = '_nolabel_'
    plt.subplot(121)
    data = ','.join(dd.as_matrix().astype(str).tolist()).replace('nan', '5')
    data = np.array(data.split(',')).astype(float)
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    val = d.values
    idx = d.index
    sval = float(len(dd)) #dd.count().astype(float)
    r1 = plt.bar(idx+(di-1.5)*width, val/sval, color='#dddddd', width=width, 
                 ec=colors[di], lw=2, label=u'%s' % (skoly[di]))
    #autolabel(r1, u'%d. ročník' % (di+2))
    
    plt.gca().yaxis.set_major_formatter(y_fmtr)
    plt.ylabel(u'Relativní četnost [%]')

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5,5.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
    
    plt.subplot(122)
    
    data = ','.join(dd[df.pohlavi==1].as_matrix().astype(str).tolist()).replace('nan', '5')
    data = np.array(data.split(',')).astype(float)
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    val = d.values
    idx = d.index
    sval = float(len(dd[df.pohlavi==1])) #dd[df.pohlavi==1].count().astype(float)
    if di == 0:
        label = u'chlapci'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', 
            hatch='///', ec='k', zorder=10, lw=.5, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', 
            ec=colors[di], zorder=11, lw=2)
    
    data = ','.join(dd[df.pohlavi==0].as_matrix().astype(str).tolist()).replace('nan', '5')
    data = np.array(data.split(',')).astype(float)
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    val = d.values
    idx = d.index
    sval = float(len(dd[df.pohlavi==0])) #dd[df.pohlavi==0].count().astype(float)
    if di == 0:
        label = u'dívky'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='#ffdddd', 
            ec=colors[di], lw=.2, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', 
            ec=colors[di], zorder=11, lw=2)

    plt.gca().yaxis.set_major_formatter(y_fmtr)

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5, 5.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(handletextpad=.5, handlelength=1)
plt.suptitle(title, y=1.02)
plt.tight_layout()
plt.savefig('figs/Skoly_d18.svg')
In [46]:
def autolabel(rects, r):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.*1.25, height+0.03, r,
                ha='center', va='bottom', rotation=90)
        
def y_fmt(y, position):
    return '%d' % (y*100)
y_fmtr = FuncFormatter(y_fmt)

def x_fmt(x, position):
    return '%s' % dopln.get(x, '')
x_fmtr = FuncFormatter(x_fmt)

n = 3
width = 0.3

s1 = df[(df.skola=='O-Stav')]['d19']
s2 = df[(df.skola=='G-VS')]['d19']
s3 = df[(df.skola=='G-Jar')]['d19']
colors = ['r', 'g', 'b']

plt.figure(figsize=(10,3.5))
title = u'Otázka d19'
for di, dd in enumerate([s1,s2,s3]):
    label = '_nolabel_'
    plt.subplot(121)
    data = ','.join(dd.as_matrix().astype(str).tolist()).replace('nan', '5')
    data = np.array(data.split(',')).astype(float)
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    val = d.values
    idx = d.index
    sval = float(len(dd)) #dd.count().astype(float)
    r1 = plt.bar(idx+(di-1.5)*width, val/sval, color='#dddddd', width=width, 
                 ec=colors[di], lw=2, label=u'%s' % (skoly[di]))
    #autolabel(r1, u'%d. ročník' % (di+2))
    
    plt.gca().yaxis.set_major_formatter(y_fmtr)
    plt.ylabel(u'Relativní četnost [%]')

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5,5.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(loc='upper left', handletextpad=.5, handlelength=1)
    
    plt.subplot(122)
    
    data = ','.join(dd[df.pohlavi==1].as_matrix().astype(str).tolist()).replace('nan', '5')
    data = np.array(data.split(',')).astype(float)
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    val = d.values
    idx = d.index
    sval = float(len(dd[df.pohlavi==1])) #dd[df.pohlavi==1].count().astype(float)
    if di == 0:
        label = u'chlapci'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', 
            hatch='///', ec='k', zorder=10, lw=.5, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', 
            ec=colors[di], zorder=11, lw=2)
    
    data = ','.join(dd[df.pohlavi==0].as_matrix().astype(str).tolist()).replace('nan', '5')
    data = np.array(data.split(',')).astype(float)
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    val = d.values
    idx = d.index
    sval = float(len(dd[df.pohlavi==0])) #dd[df.pohlavi==0].count().astype(float)
    if di == 0:
        label = u'dívky'
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='#ffdddd', 
            ec=colors[di], lw=.2, label=label)
    plt.bar(idx+(di-1.5)*width, val/sval, width=width, color='none', 
            ec=colors[di], zorder=11, lw=2)

    plt.gca().yaxis.set_major_formatter(y_fmtr)

    plt.gca().xaxis.set_major_formatter(x_fmtr)
    plt.xticks(rotation=0)

    plt.xlim(-.5, 5.5)
    ymin, ymax = 0,1.01
    plt.ylim(ymin, ymax)
    for x in np.arange(7)-0.5:
        plt.plot([x,x], [ymin,ymax], ls='--', lw=0.5, color='grey',zorder=-10)
    plt.legend(loc='upper left', handletextpad=.5, handlelength=1)
plt.suptitle(title, y=1.02)
plt.tight_layout()
plt.savefig('figs/Skoly_d19.svg')
In [48]:
dfs = df
data = ','.join(dfs['d20'].as_matrix().astype(unicode).tolist())
data = np.array(data.split(','))
ddd = pd.DataFrame(data)[0]
d = ddd.value_counts(dropna=False)
df_predmety = pd.DataFrame({'Skoly': d})

for i in range(2):
    data = ','.join(dfs[dfs.pohlavi==i]['d20'].as_matrix().astype(unicode).tolist())
    data = np.array(data.split(','))
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    df_predmety[pohlavi[i]] = d

for i in skoly:
    data = ','.join(dfs[dfs.skola==i]['d20'].as_matrix().astype(unicode).tolist())
    data = np.array(data.split(','))
    ddd = pd.DataFrame(data)[0]
    d = ddd.value_counts(dropna=False)
    df_predmety[u'%s'%i] = d
    for j in range(2):
        data = ','.join(dfs[(dfs.skola==i) & (dfs.pohlavi==j)]['d20'].as_matrix().astype(unicode).tolist())
        data = np.array(data.split(','))
        ddd = pd.DataFrame(data)[0]
        d = ddd.value_counts(dropna=False)
        df_predmety[pohlavi[j] + u'-%s'%i] = d

print df_predmety
df_predmety.fillna(0, inplace=True)
df_predmety.to_excel('figs/Skoly_d20_vyuziti.xlsx', 'vyuziti')
t= df_predmety/df_predmety.sum()
t.sum()
                    Skoly  dívka  chlapec  O-Stav  dívka-O-Stav  \
obchod                 48     21       27      14             4   
nan                    43     21       22      16             6   
finance                35     16       19      14             5   
různé výpočty          23      9       14       9             1   
geometrie              15     10        5       5             3   
téměř všude            11      2        9       7             1   
čas                     9      3        6       5             1   
logika                  6      4        2     NaN           NaN   
jiné předměty           6    NaN        6       2           NaN   
k ničemu                5    NaN        5       4           NaN   
manuální činnost        4      1        3       1           NaN   
brigády                 4      1        3       2           NaN   
cestování               4      3        1       1             1   
procenta                4      1        3       2           NaN   
trojčlenka              4      1        3       3           NaN   
IT                      3    NaN        3       1           NaN   
sport                   2      1        1       1           NaN   
jiný uhel pohledu       1      1      NaN     NaN           NaN   
pravděpodobnost         1    NaN        1     NaN           NaN   
zábava                  1      1      NaN     NaN           NaN   
ověřování tvrzení       1    NaN        1       1           NaN   
život                   1    NaN        1       1           NaN   
nutné zlo ve škole      1      1      NaN     NaN           NaN   
karetní hry             1    NaN        1     NaN           NaN   
doučování               1    NaN        1     NaN           NaN   

                    chlapec-O-Stav  G-VS  dívka-G-VS  chlapec-G-VS  G-Jar  \
obchod                          10    11           6             5     23   
nan                             10    16          10             6     11   
finance                          9    12           5             7      9   
různé výpočty                    8     8           3             5      6   
geometrie                        2     6           3             3      4   
téměř všude                      6     1         NaN             1      3   
čas                              4     4           2             2    NaN   
logika                         NaN     2           2           NaN      4   
jiné předměty                    2     1         NaN             1      3   
k ničemu                         4     1         NaN             1    NaN   
manuální činnost                 1   NaN         NaN           NaN      3   
brigády                          2     1           1           NaN      1   
cestování                      NaN     2           1             1      1   
procenta                         2     1         NaN             1      1   
trojčlenka                       3   NaN         NaN           NaN      1   
IT                               1     1         NaN             1      1   
sport                            1   NaN         NaN           NaN      1   
jiný uhel pohledu              NaN   NaN         NaN           NaN      1   
pravděpodobnost                NaN   NaN         NaN           NaN      1   
zábava                         NaN   NaN         NaN           NaN      1   
ověřování tvrzení                1   NaN         NaN           NaN    NaN   
život                            1   NaN         NaN           NaN    NaN   
nutné zlo ve škole             NaN   NaN         NaN           NaN      1   
karetní hry                    NaN   NaN         NaN           NaN      1   
doučování                      NaN   NaN         NaN           NaN      1   

                    dívka-G-Jar  chlapec-G-Jar  
obchod                       11             12  
nan                           5              6  
finance                       6              3  
různé výpočty                 5              1  
geometrie                     4            NaN  
téměř všude                   1              2  
čas                         NaN            NaN  
logika                        2              2  
jiné předměty               NaN              3  
k ničemu                    NaN            NaN  
manuální činnost              1              2  
brigády                     NaN              1  
cestování                     1            NaN  
procenta                      1            NaN  
trojčlenka                    1            NaN  
IT                          NaN              1  
sport                         1            NaN  
jiný uhel pohledu             1            NaN  
pravděpodobnost             NaN              1  
zábava                        1            NaN  
ověřování tvrzení           NaN            NaN  
život                       NaN            NaN  
nutné zlo ve škole            1            NaN  
karetní hry                 NaN              1  
doučování                   NaN              1  
Out[48]:
Skoly             1
dívka             1
chlapec           1
O-Stav            1
dívka-O-Stav      1
chlapec-O-Stav    1
G-VS              1
dívka-G-VS        1
chlapec-G-VS      1
G-Jar             1
dívka-G-Jar       1
chlapec-G-Jar     1
dtype: float64
In [48]:
plt.figure(figsize=(5,.3))
s = 50
plt.scatter(1, 1, marker='s', s=s)
plt.scatter(2, 1, marker='o', s=s)
plt.scatter(3, 1, marker='v', s=s)
plt.scatter(4, 1, marker='^', s=s)
plt.scatter(5, 1, marker='8', s=s)
plt.scatter(6, 1, marker='p', s=s)
plt.scatter(7, 1, marker='d', s=s)
Out[48]:
<matplotlib.collections.PathCollection at 0xd824e48>
In [ ]: