#!/usr/bin/env python # coding: utf-8 # In[18]: import pandas as pd, numpy as np, matplotlib.pyplot as plt get_ipython().run_line_magic('matplotlib', 'inline') # In[202]: #tantargycsoport szotar cc={ 'magyar':'nyelvek',\ u'német':'nyelvek',\ u'román':'nyelvek',\ u'angol':'nyelvek',\ u'francia':'nyelvek',\ 'matematika':u'matek-info',\ 'informatika':u'matek-info',\ 'fizika':u'természettudományok',\ u'kémia':u'természettudományok',\ u'földrajz':u'természettudományok',\ u'biológia':u'természettudományok',\ u'csillagászat':u'természettudományok',\ u'történelem':u'társadalomtudományok',\ u'történelem ':u'társadalomtudományok',\ u'róm. Kat vallás':u'társadalomtudományok',\ u'szociológia':u'társadalomtudományok',\ u'közgazdaság':u'társadalomtudományok',\ u'filozófia':u'társadalomtudományok',\ u'rajz':u'művészetek',\ u'zene':u'művészetek',\ u'vállalkozás':u'társadalomtudományok',\ u'logika':u'társadalomtudományok',\ u'pszichológia':u'társadalomtudományok',\ u'lélektan':u'társadalomtudományok',\ } # Versenyek # In[203]: data={} for i in pd.read_excel('eredmenyek.xlsx').fillna(0).T.iteritems(): #tantargycsoport check if i[1][3] not in cc: print i[1][3] #evszam if i[1][0] not in data: data[i[1][0]]={} #evfolyam if i[1][2][:str.find(str(i[1][2]),'.')] not in data[i[1][0]]:data[i[1][0]][i[1][2][:str.find(str(i[1][2]),'.')]]={} #osztaly if i[1][2][str.find(str(i[1][2]),'.')+1:] not in data[i[1][0]][i[1][2][:str.find(str(i[1][2]),'.')]]: data[i[1][0]][i[1][2][:str.find(str(i[1][2]),'.')]][i[1][2][str.find(str(i[1][2]),'.')+1:]]={} #tantargycsoport if cc[i[1][3]] not in data[i[1][0]][i[1][2][:str.find(str(i[1][2]),'.')]][i[1][2][str.find(str(i[1][2]),'.')+1:]]: data[i[1][0]][i[1][2][:str.find(str(i[1][2]),'.')]][i[1][2][str.find(str(i[1][2]),'.')+1:]][cc[i[1][3]]]=[] data2={} data2['nev']=i[1][1] data2['tantargy']=i[1][3] data2['szint']=i[1][4] data2['hely']=i[1][5] data2['megjegyzes']=i[1][6] data[i[1][0]][i[1][2][:str.find(str(i[1][2]),'.')]][i[1][2][str.find(str(i[1][2]),'.')+1:]][cc[i[1][3]]].append(data2) # In[204]: #adatok mentese import json file('data.json','w').write(json.dumps(data)) # Osztalyzatok # Adattisztogatas - nincs szukseg OCR-ra # In[252]: data2={} import re printer=False #adatok beolvasas, online excel fajlok helye: http://blog.csaladen.es/marci/ #ezek mar uto-formazottak, eredetiek hely http://mag.ro/file.php?Zj0zMDc= for y in range(2002,2011): if y not in {2005}: year=repr(y) df=pd.read_excel(year+'.xlsx') data2[year]={} for i in df.index[:]: #ha nem ures sor if df.loc[i].dropna().count()>0: if df.loc[i].dropna()[0].__class__ != int: if u'OSZTÁLY:' in df.loc[i].dropna()[0]: a=df.loc[i].dropna()[0][8:].replace(" ", "") try: ev=a[:str.find(str(a[:4]),'.')] except: ev=a[:str.find(str(a[:3]),'.')] try: osztaly=a[str.find(str(a[:4]),'.')+1:str.find(str(a[:4]),'.')+2] except: osztaly=a[str.find(str(a[:3]),'.')+1:str.find(str(a[:3]),'.')+2] if printer: print y,ev,osztaly,0 if u'oszTáLy:' in df.loc[i].dropna()[0]: a=df.loc[i].dropna()[0][8:].replace(" ", "") try: ev=a[:str.find(str(a[:4]),'.')] except: ev=a[:str.find(str(a[:3]),'.')] try: osztaly=a[str.find(str(a[:4]),'.')+1:str.find(str(a[:4]),'.')+2].capitalize() except: osztaly=a[str.find(str(a[:3]),'.')+1:str.find(str(a[:3]),'.')+2].capitalize() if printer: print y,ev,osztaly,1 if u'OSZTÁLY ' in df.loc[i].dropna()[0]: a=df.loc[i].dropna()[0][0:].replace(" ", "") try: ev=a[:str.find(str(a[:4]),'.')] except: ev=a[:str.find(str(a[:3]),'.')] try: osztaly=a[str.find(str(a[:4]),'.')+1:str.find(str(a[:4]),'.')+2] except: osztaly=a[str.find(str(a[:3]),'.')+1:str.find(str(a[:3]),'.')+2] if printer: print y,ev,osztaly,2 if u'OSZTÁLY' not in df.loc[i].dropna()[0]: if u'OSYTÁLY' not in df.loc[i].dropna()[0]: if u'oszTáLy' not in df.loc[i].dropna()[0]: if ev not in data2[year]:data2[year][ev]={} if osztaly not in data2[year][ev]:data2[year][ev][osztaly]=[[],[],[]] #oszlop szerinti olvasas nev/media/helyseg if df.loc[i].dropna().count()==3: data2[year][ev][osztaly][0].append(df.loc[i].dropna()[0].strip()) data2[year][ev][osztaly][1].append(df.loc[i].dropna()[1]) data2[year][ev][osztaly][2].append(df.loc[i].dropna()[2].strip()) #korrekcio ha a fenti befuccsol elif df.loc[i].dropna().count()==1: #ha legalabb egy szam if re.search("\d", df.loc[i].dropna()[0]): a=re.search("\d", df.loc[i].dropna()[0]).start() data2[year][ev][osztaly][0].append(df.loc[i].dropna()[0][:a].strip()) data2[year][ev][osztaly][1].append(df.loc[i].dropna()[0][a:].replace(" ", "")[:4]) data2[year][ev][osztaly][2].append(df.loc[i].dropna()[0][a:].replace(" ", "")[4:].strip()) elif df.loc[i].dropna().count()==2: try: b=df.loc[i].dropna()[0]+df.loc[i].dropna()[1] if re.search("\d", b): a=re.search("\d", b).start() data2[year][ev][osztaly][0].append(b[:a].strip()) data2[year][ev][osztaly][1].append(b[a:].replace(" ", "")[:4]) data2[year][ev][osztaly][2].append(b[a:].replace(" ", "")[4:].strip()) except: print 'error', df.loc[i].dropna()[0] raise SyntaxError # OCR - karaterfelismeres # In[253]: printer=False #adatok evkonyvekbol, fenykepek->pdf->OCR->excel for y in range(2011,2015): year=repr(y) df=pd.read_excel(year+'.xlsx') data2[year]={} for i in df.index[:]: #ha nem ures sor if df.loc[i].dropna().count()>0: if df.loc[i].dropna()[0].__class__ != int: if u'OSZTÁLY:' in df.loc[i].dropna()[0]: a=df.loc[i].dropna()[0][8:].replace(" ", "") try: ev=a[:str.find(str(a[:4]),'.')] except: ev=a[:str.find(str(a[:3]),'.')] try: osztaly=a[str.find(str(a[:4]),'.')+1:str.find(str(a[:4]),'.')+2] except: osztaly=a[str.find(str(a[:3]),'.')+1:str.find(str(a[:3]),'.')+2] if printer: print y,ev,osztaly,0 if u'oszTáLy:' in df.loc[i].dropna()[0]: a=df.loc[i].dropna()[0][8:].replace(" ", "") try: ev=a[:str.find(str(a[:4]),'.')] except: ev=a[:str.find(str(a[:3]),'.')] try: osztaly=a[str.find(str(a[:4]),'.')+1:str.find(str(a[:4]),'.')+2].capitalize() except: osztaly=a[str.find(str(a[:3]),'.')+1:str.find(str(a[:3]),'.')+2].capitalize() if printer: print y,ev,osztaly,1 if u'OSZTÁLY ' in df.loc[i].dropna()[0]: a=df.loc[i].dropna()[0][0:].replace(" ", "") try: ev=a[:str.find(str(a[:4]),'.')] except: ev=a[:str.find(str(a[:3]),'.')] try: osztaly=a[str.find(str(a[:4]),'.')+1:str.find(str(a[:4]),'.')+2] except: osztaly=a[str.find(str(a[:3]),'.')+1:str.find(str(a[:3]),'.')+2] if printer: print y,ev,osztaly,2 if u'OSZTÁLY' not in df.loc[i].dropna()[0]: if u'OSYTÁLY' not in df.loc[i].dropna()[0]: if u'oszTáLy' not in df.loc[i].dropna()[0]: if ev not in data2[year]:data2[year][ev]={} if osztaly not in data2[year][ev]:data2[year][ev][osztaly]=[[],[],[]] #oszlop szerinti olvasas nev/media/helyseg if df.loc[i].dropna().count()==3: data2[year][ev][osztaly][0].append(df.loc[i].dropna()[0].strip()) data2[year][ev][osztaly][1].append(df.loc[i].dropna()[1]) data2[year][ev][osztaly][2].append(df.loc[i].dropna()[2].strip()) #korrekcio ha a fenti befuccsol elif df.loc[i].dropna().count()==1: #ha legalabb egy szam if re.search("\d", df.loc[i].dropna()[0]): a=re.search("\d", df.loc[i].dropna()[0]).start() data2[year][ev][osztaly][0].append(df.loc[i].dropna()[0][:a].strip()) data2[year][ev][osztaly][1].append(df.loc[i].dropna()[0][a:].replace(" ", "")[:4]) data2[year][ev][osztaly][2].append(df.loc[i].dropna()[0][a:].replace(" ", "")[4:].strip()) elif df.loc[i].dropna().count()==2: try: b=df.loc[i].dropna()[0]+df.loc[i].dropna()[1] if re.search("\d", b): a=re.search("\d", b).start() data2[year][ev][osztaly][0].append(b[:a].strip()) data2[year][ev][osztaly][1].append(b[a:].replace(" ", "")[:4]) data2[year][ev][osztaly][2].append(b[a:].replace(" ", "")[4:].strip()) except: print 'error', df.loc[i].dropna()[0] raise SyntaxError # In[254]: #mediak listava alakitasa, normalizalas for year in data2: for ev in data2[year]: for osztaly in data2[year][ev]: try: data2[year][ev][osztaly][1]=\ list(np.array([i.replace(" ", "").replace(",", "") for i in data2[year][ev][osztaly][1]]).astype(float)) except:pass for i in range(len(data2[year][ev][osztaly][1])): try: if data2[year][ev][osztaly][1][i].__class__==unicode: if data2[year][ev][osztaly][1][i]==u'ism\xe9tl\xf5': data2[year][ev][osztaly][1][i]=4 if data2[year][ev][osztaly][1][i]==u'ism\xe9tl\u0151': data2[year][ev][osztaly][1][i]=4 if data2[year][ev][osztaly][1][i]==u'oszt\xe1lyism\xe9tl\u0151': data2[year][ev][osztaly][1][i]=4 if data2[year][ev][osztaly][1][i]==u'eltan\xe1csolt': data2[year][ev][osztaly][1][i]=0 if data2[year][ev][osztaly][1][i]==u'\xe1t\xedratkozott': data2[year][ev][osztaly][1][i]=0 if data2[year][ev][osztaly][1][i]==u'elment': data2[year][ev][osztaly][1][i]=0 if data2[year][ev][osztaly][1][i]==u'elment ': data2[year][ev][osztaly][1][i]=0 if re.search("\d", data2[year][ev][osztaly][1][i]): data2[year][ev][osztaly][1][i]=int(data2[year][ev][osztaly][1][i].replace(",", "").replace(" ", "")) except:pass try: if data2[year][ev][osztaly][1][i]>101: data2[year][ev][osztaly][1][i]/=100.0 elif data2[year][ev][osztaly][1][i]>11: data2[year][ev][osztaly][1][i]/=10.0 except:pass # In[255]: for y in range(2002,2015): if y not in {2005}: print y,data2[repr(y)].keys() # In[256]: for year in data2: for ev in data2[year]: for osztaly in data2[year][ev]: if len(data2[year][ev][osztaly][0])<10: #problemasak print year,ev,osztaly,len(data2[year][ev][osztaly][0]) # In[257]: year='2009' ev='IX' osztaly='A' print len(data2[year][ev][osztaly][0]),len(data2[year][ev][osztaly][1]),len(data2[year][ev][osztaly][2]) data2[year][ev][osztaly] # Statisztika gyujtes # In[258]: ar=np.array(data2[year][ev][osztaly][1]) temp = ar.argsort()[::-1] ranks = np.empty(len(ar), int) ranks[temp] = np.arange(len(ar)) # In[259]: ranks # In[260]: ar # In[261]: data3={} data_ev={} data_ossz={} for year in data2: data3[year]={} data_ev[year]={} for ev in data2[year]: data3[year][ev]={} arr=[[],[],[],[],[]] for osztaly in data2[year][ev]: for k in range(3): arr[k]+=data2[year][ev][osztaly][k] arr[3]+=[osztaly for i in range(len(data2[year][ev][osztaly][0]))] if osztaly not in data_ev[year]:data_ev[year][osztaly]=[] data_ev[year][osztaly]+=data2[year][ev][osztaly][1] if osztaly not in data_ossz:data_ossz[osztaly]=[] data_ossz[osztaly]+=data2[year][ev][osztaly][1] #iskola sorrend felallitasa ar=np.array(arr[1]) temp = ar.argsort()[::-1] ranks = np.empty(len(ar), int) ranks[temp] = np.arange(len(ar)) for i in range(len(ranks)): if ranks[i]<10: data3[year][ev][repr(ranks[i])]=[arr[0][i],arr[1][i],arr[2][i],arr[3][i]] # In[262]: #adatok mentese import json file('data3.json','w').write(json.dumps(data3)) # Osztalyzatok plot # In[270]: #0, 4-esek csereje nan-ra for year in data2: for ev in data2[year]: for osztaly in data2[year][ev]: for i in data2[year][ev][osztaly][1]: if i in {0,4}: data2[year][ev][osztaly][1][i]=np.nan #ujrafuttatas ar=np.array(data2[year][ev][osztaly][1]) temp = ar.argsort()[::-1] ranks = np.empty(len(ar), int) ranks[temp] = np.arange(len(ar)) data3={} data_ev={} data_ossz={} for year in data2: data3[year]={} data_ev[year]={} for ev in data2[year]: data3[year][ev]={} arr=[[],[],[],[],[]] for osztaly in data2[year][ev]: for k in range(3): arr[k]+=data2[year][ev][osztaly][k] arr[3]+=[osztaly for i in range(len(data2[year][ev][osztaly][0]))] if osztaly not in data_ev[year]:data_ev[year][osztaly]=[] data_ev[year][osztaly]+=data2[year][ev][osztaly][1] if osztaly not in data_ossz:data_ossz[osztaly]=[] data_ossz[osztaly]+=data2[year][ev][osztaly][1] #iskola sorrend felallitasa ar=np.array(arr[1]) temp = ar.argsort()[::-1] ranks = np.empty(len(ar), int) ranks[temp] = np.arange(len(ar)) for i in range(len(ranks)): if ranks[i]<10: data3[year][ev][repr(ranks[i])]=[arr[0][i],arr[1][i],arr[2][i],arr[3][i]] # In[278]: np.mean(data_ossz['D']) # In[275]: np.nanmean(data_ev['2002']['A']) # In[378]: import random import matplotlib as mpl import matplotlib.font_manager as font_manager path = 'Righteous-Regular.ttf' prop = font_manager.FontProperties(fname=path) # In[280]: cc={"A":0,"A ":0,"B":1,"C":2,"D":3,"E":4,"e":4,"F":5,"G":5} osztalyok="ABCDEFG" dd={"9":9,"10":10,"11":11,"12":12,"IX":9,"X":10,"XI":11,"XII":12} ee=[u"filológia",u"társadalom-\ntudományok",u"természet-\ntudományok",u"matematika-\ninformatika"] colors=["#6b6ecf","#b5cf6b","#d6616b","#e7ba52","#e7ba52","#e7ba52"] colors2=["#9c9ede","#cedb9c","#e7969c","#e7cb94","#e7cb94","#e7cb94"] mpl.rc('font', family='Trebuchet MS') fig, ax = plt.subplots(2,3,subplot_kw=dict(axisbg='#111111'),figsize=(14,11)) for i in range(6): ax[i/3][i%3].grid(color='#222222', linestyle='--') ax[i/3][i%3].set_xlim(2001,2015) ax[i/3][i%3].set_ylim(7,10.1) ax[i/3][i%3].set_axisbelow(True) ax[i/3][i%3].set_xticklabels([2000,2002,2004,2006,2008,2010,2012,2014],fontproperties=prop,color="#666655") ax[i/3][i%3].set_yticklabels(["7.00","7.50","8.00","8.50","9.00","9.50","10.00"],fontproperties=prop,color="#666655") ax[1][1].set_xlabel(u"Tanév vége",fontproperties=prop,size=18,color="#666655") ax[0][0].set_ylabel(u"Év végi általános",fontproperties=prop,size=18,color="#666655") ax[1][0].set_ylabel(u"Év végi általános",fontproperties=prop,size=18,color="#666655") ma=[[] for i in range(6)] for yr in range(2002,2015): if yr not in {2005}: year=repr(yr) for ev in data2[year]: for osztaly in data2[year][ev]: y=data2[year][ev][osztaly][1] ind=cc[osztaly] ind2=cc[osztaly] #osztalyprofilok javitasa: pl. a D osztaly neha bioszkemia, neha matekinfo if yr==2002: if dd[ev]==9: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if dd[ev]==10: if osztaly=="D": ind2=2 if dd[ev]==11: if osztaly=="B": ind2=0 if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if osztaly=="E": ind2=2 if dd[ev]==12: if osztaly=="B": ind2=0 if osztaly=="C": ind2=3 if osztaly=="E": ind2=2 if yr==2003: if dd[ev]==10: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if dd[ev]==11: if osztaly=="D": ind2=2 if dd[ev]==12: if osztaly=="B": ind2=0 if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if osztaly=="E": ind2=2 if yr==2004: if dd[ev]==11: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if dd[ev]==12: if osztaly=="D": ind2=2 if yr==2005: if dd[ev]==12: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if yr==2012: if dd[ev]==9: if osztaly=="D": ind2=2 if yr==2013: if dd[ev]==9: if osztaly=="D": ind2=2 if dd[ev]==10: if osztaly=="D": ind2=2 if yr==2014: if dd[ev]==9: if osztaly=="D": ind2=2 if dd[ev]==10: if osztaly=="D": ind2=2 if dd[ev]==11: if osztaly=="D": ind2=2 x=[yr-0.5+random.random() for i in range(len(y))] ax[ind/3][ind%3].scatter(x,y,50,c=colors[ind2],alpha=0.5) ax[ind/3][ind%3].scatter(yr,np.nanmean(data_ev[year][osztaly]),150,c=colors2[ind],alpha=1) for ind in range(5): ax[ind/3][ind%3].text(0.98,0,osztalyok[ind],color="#666655",size=30, fontproperties=prop, \ horizontalalignment='right',verticalalignment='bottom',transform=ax[ind/3][ind%3].transAxes) ax[1][2].text(0.98,0,"F/G",color="#666655",size=30, fontproperties=prop,\ horizontalalignment='right',verticalalignment='bottom',transform=ax[1][2].transAxes) for i in range(4): ax[1][2].scatter(2005.5,9.5-i*0.5,150,c=colors[i],alpha=0.5) ax[1][2].text(2006,9.5-i*0.5,ee[i],color=colors[i],size=13, fontproperties=prop,\ horizontalalignment='left',verticalalignment='center',alpha=0.5) plt.suptitle(u' A csíkszeredai Márton Áron Gimnázium tanulóinak osztályonkénti jegyáltalánosai',fontproperties=prop,\ y=0.95,color="#666655",size=22) plt.savefig('jegy.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[281]: cc={"A":0,"A ":0,"B":1,"C":2,"D":3,"E":4,"e":4,"F":5,"G":5} osztalyok="ABCDEFG" dd={"9":9,"10":10,"11":11,"12":12,"IX":9,"X":10,"XI":11,"XII":12} ee=[u"filológia",u"társadalom-\ntudományok",u"természet-\ntudományok",u"matematika-\ninformatika"] colors=["#6b6ecf","#b5cf6b","#d6616b","#e7ba52","#e7ba52","#e7ba52"] colors2=["#9c9ede","#cedb9c","#e7969c","#e7cb94","#e7cb94","#e7cb94"] mpl.rc('font', family='Trebuchet MS') fig, ax = plt.subplots(2,3,subplot_kw=dict(axisbg='#111111'),figsize=(14,11)) for i in range(6): ax[i/3][i%3].grid(color='#222222', linestyle='--') ax[i/3][i%3].set_xlim(2001,2015) ax[i/3][i%3].set_ylim(9.45,10.05) ax[i/3][i%3].set_axisbelow(True) ax[i/3][i%3].set_xticklabels([2000,2002,2004,2006,2008,2010,2012,2014],fontproperties=prop,color="#666655") ax[i/3][i%3].set_yticklabels(["9.40","9.50","9.60","9.70","9.80","9.90","10.00"],fontproperties=prop,color="#666655") ax[1][1].set_xlabel(u"Tanév vége",fontproperties=prop,size=18,color="#666655") ax[0][0].set_ylabel(u"Év végi általános",fontproperties=prop,size=18,color="#666655") ax[1][0].set_ylabel(u"Év végi általános",fontproperties=prop,size=18,color="#666655") ma=[[] for i in range(6)] for yr in range(2002,2015): if yr not in {2005}: year=repr(yr) for ev in data2[year]: for osztaly in data2[year][ev]: y=data2[year][ev][osztaly][1] ind=cc[osztaly] ind2=cc[osztaly] #osztalyprofilok javitasa: pl. a D osztaly neha bioszkemia, neha matekinfo if yr==2002: if dd[ev]==9: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if dd[ev]==10: if osztaly=="D": ind2=2 if dd[ev]==11: if osztaly=="B": ind2=0 if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if osztaly=="E": ind2=2 if dd[ev]==12: if osztaly=="B": ind2=0 if osztaly=="C": ind2=3 if osztaly=="E": ind2=2 if yr==2003: if dd[ev]==10: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if dd[ev]==11: if osztaly=="D": ind2=2 if dd[ev]==12: if osztaly=="B": ind2=0 if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if osztaly=="E": ind2=2 if yr==2004: if dd[ev]==11: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if dd[ev]==12: if osztaly=="D": ind2=2 if yr==2005: if dd[ev]==12: if osztaly=="C": ind2=1 if osztaly=="D": ind2=2 if yr==2012: if dd[ev]==9: if osztaly=="D": ind2=2 if yr==2013: if dd[ev]==9: if osztaly=="D": ind2=2 if dd[ev]==10: if osztaly=="D": ind2=2 if yr==2014: if dd[ev]==9: if osztaly=="D": ind2=2 if dd[ev]==10: if osztaly=="D": ind2=2 if dd[ev]==11: if osztaly=="D": ind2=2 x=[yr-0.5+random.random() for i in range(len(y))] ax[ind/3][ind%3].scatter(x,y,50,c=colors[ind2],alpha=0.7) ax[ind/3][ind%3].scatter(yr,np.mean(data_ev[year][osztaly]),150,c=colors2[ind],alpha=1) for ind in range(5): ax[ind/3][ind%3].text(0.98,0,osztalyok[ind],color="#666655",size=30, fontproperties=prop, \ horizontalalignment='right',verticalalignment='bottom',transform=ax[ind/3][ind%3].transAxes) ax[1][2].text(0.98,0,"F/G",color="#666655",size=30, fontproperties=prop,\ horizontalalignment='right',verticalalignment='bottom',transform=ax[1][2].transAxes) for i in range(4): ax[1][2].scatter(2006,10-i*0.1,150,c=colors[i],alpha=0.7) ax[1][2].text(2006.5,10-i*0.1,ee[i],color=colors[i],size=13, fontproperties=prop,\ horizontalalignment='left',verticalalignment='center',alpha=0.7) plt.suptitle(u' A csíkszeredai Márton Áron Gimnázium első tanulóinak osztályonkénti jegyáltalánosai',\ y=0.95,color="#666655",fontproperties=prop,size=20) plt.savefig('topjegy.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[303]: ff={u"nyelvek":0,u"társadalomtudományok":1,u"matek-info":2,u"természettudományok":3,u"művészetek":4}; hh={"0":1,"1":4,"2":3,"3":2,"u'D'":1,"4":1}; kk={"9":"IX","10":"X","X":"X","11":"XI","12":"XII"} rr={u"országos":3,u"régió":2,u"helyi":1,u"helyi ":1}; data4=[0,0,0,0,0,0] data5=[0,0,0,0,0] data4b=[0,0,0,0,0,0] data5b=[0,0,0,0,0] data6=[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] data7=[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]] data6b=[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] data7b=[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0]] data8={} data8b={} letszam={} data9={} data10={} #letszam for yr in range(2002,2015): if yr not in {2005}: year=repr(int(yr)) if year not in letszam: letszam[year]={} for ev in data2[year]: for osztaly in data2[year][ev]: if year not in {2005}: if cc[osztaly] not in letszam[year]:letszam[year][cc[osztaly]]=0 letszam[year][cc[osztaly]]+=len(data2[year][ev][osztaly.strip().capitalize()][0]) #komparativ statisztika for year in data: if year not in data8: data8[year]=[0,0,0,0,0,0] if year not in data8b: data8b[year]=[0,0,0,0,0,0] for ev in data[year]: for osztaly in data[year][ev]: for tan in data[year][ev][osztaly]: data4[cc[osztaly]]+=len(data[year][ev][osztaly][tan]) data8[year][cc[osztaly]]+=len(data[year][ev][osztaly][tan]) data5[ff[tan]]+=len(data[year][ev][osztaly][tan]) data6[cc[osztaly]][ff[tan]]+=len(data[year][ev][osztaly][tan]) data7[ff[tan]][cc[osztaly]]+=len(data[year][ev][osztaly][tan]) for k in data[year][ev][osztaly][tan]: data4b[cc[osztaly]]+=hh[repr(k["hely"])]*\ rr[k["szint"]] data8b[year][cc[osztaly]]+=hh[repr(k["hely"])]*\ rr[k["szint"]] data5b[ff[tan]]+=hh[repr(k["hely"])]*\ rr[k["szint"]] data6b[cc[osztaly]][ff[tan]]+=hh[repr(k["hely"])]*\ rr[k["szint"]] data7b[ff[tan]][cc[osztaly]]+=hh[repr(k["hely"])]*\ rr[k["szint"]] if k["nev"] not in data9: data9[k["nev"]]=0 data9[k["nev"]]+=1 if k["nev"] not in data10: data10[k["nev"]]=hh[repr(k["hely"])]*\ rr[k["szint"]] else: data10[k["nev"]]+=hh[repr(k["hely"])]*\ rr[k["szint"]] # In[289]: letszam # In[302]: data8 # In[403]: percapita={} percapitab={} for yr in range(2002,2015): if yr not in {2005}: year=repr(yr) for osztaly in letszam[year]: if osztaly not in percapita:percapita[osztaly]=[] if osztaly not in percapitab:percapitab[osztaly]=[] percapita[osztaly].append(data8[int(year)][osztaly]*1.0/letszam[year][osztaly]) percapitab[osztaly].append(data8b[int(year)][osztaly]*1.0/letszam[year][osztaly]) if yr==2004: if osztaly!=5: percapita[osztaly].append((data8[2004][osztaly]*1.0/letszam['2004'][osztaly]+\ data8[2006][osztaly]*1.0/letszam['2006'][osztaly])/2) percapitab[osztaly].append((data8b[2004][osztaly]*1.0/letszam['2004'][osztaly]+\ data8b[2006][osztaly]*1.0/letszam['2006'][osztaly])/2) else: percapita[osztaly].append(data8[2004][osztaly]*1.0/letszam['2004'][osztaly]) percapitab[osztaly].append(data8b[2004][osztaly]*1.0/letszam['2004'][osztaly]) # In[414]: lbl=["A","B","C","D","E","F/G"] pccolors=colors[:3]+["#bd9e39","#e7ba52","#8c6d31"] fig, ax = plt.subplots(1,2,subplot_kw=dict(axisbg='#111111'),figsize=(12,4)) for i in range(2): ax[i].grid(color='#222222', linestyle='--') ax[i].set_xlim(0,12) ax[i].set_axisbelow(True) ax[i].set_xticklabels([2002,2004,2006,2008,2010,2012,2014],fontproperties=prop,color="#666655") ax[0].set_ylim(0,1) ax[1].set_ylim(0,3) ax[0].set_yticklabels(["0","0.2","0.4","0.6","0.8","1"],fontproperties=prop,color="#666655") ax[1].set_yticklabels(["0","0.5","1","1.5","2","2.5","3"],fontproperties=prop,color="#666655") ax[0].set_xlabel(u"Tanév vége",fontproperties=prop,size=18,color="#666655") ax[1].set_xlabel(u"Tanév vége",fontproperties=prop,size=18,color="#666655") ax[0].set_ylabel(u"Verseny / tanuló",fontproperties=prop,size=18,color="#666655") ax[1].set_ylabel(u"Pont / tanuló",fontproperties=prop,size=18,color="#666655") plt.suptitle(u"Átlagban hány versenyen vettek részt a tanulók egy tanévben?",fontproperties=prop,size=18,color="#666655",y=1.05) for osztaly in percapita: ax[0].plot(percapita[osztaly],color=pccolors[osztaly],alpha=0.7,label=lbl[osztaly],linewidth=4) ax[1].plot(percapitab[osztaly],color=pccolors[osztaly],alpha=0.7,linewidth=4) l=ax[0].legend(loc=2,framealpha=0,prop=prop) for text in l.get_texts(): text.set_color("#666655") plt.savefig('percapita.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[423]: fig, ax = plt.subplots(1,2,subplot_kw=dict(axisbg='#111111'),figsize=(12,4)) lbl=["A","B","C","D","E","F/G"] patches, texts, autotexts=ax[0].pie(data4, labels=[lbl[i]+u'. osztály\n'+str(data4[i])+" verseny" for i in range(len(data4))], autopct='%1.0f%%',\ startangle=90, colors=colors[:3]+["#bd9e39","#e7ba52","#8c6d31"]) ax[0].axis('equal') ax[0].set_title(u'A csíkszeredai Márton Áron Gimnázium tanulóinak\n tanulmányi versenyeken való osztályonkénti részvétele\na 2002-es és 2015-ös tanévek közötti időszakban',\ y=1.2,fontproperties=prop,size=12,color="#666655") for i in range(len(texts)): texts[i].set_fontproperties(prop) texts[i].set_fontsize(10) texts[i].set_color("#666655") autotexts[i].set_fontproperties(prop) autotexts[i].set_fontsize(20) autotexts[i].set_color("#222222") lbl2=[u"nyelvek",u"társadalomtudományok",u"matematika-informatika",u"természettudományok",u"művészetek"] colors3=["#6b6ecf","#b5cf6b","#e7ba52","#d6616b","#ce6dbd"] patches, texts, autotexts=ax[1].pie(data5, labels=[lbl2[i]+u'\n'+str(data5[i])+" verseny" for i in range(len(data5))], autopct='%1.0f%%',\ startangle=90, colors=colors3) ax[1].axis('equal') ax[1].set_title(u'A csíkszeredai Márton Áron Gimnázium tanulóinak\n tanulmányi versenyeken való tantárgycsoportonkénti részvétele\na 2002-es és 2015-ös tanévek közötti időszakban',\ y=1.2,fontproperties=prop,size=12,color="#666655") for i in range(len(texts)): texts[i].set_fontproperties(prop) texts[i].set_fontsize(10) texts[i].set_color("#666655") autotexts[i].set_fontproperties(prop) autotexts[i].set_fontsize(20) autotexts[i].set_color("#222222") plt.savefig('pie1ossz.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[424]: fig, ax = plt.subplots(1,2,subplot_kw=dict(axisbg='#111111'),figsize=(12,4)) lbl=["A","B","C","D","E","F/G"] patches, texts, autotexts=ax[0].pie(data4b, labels=[lbl[i]+u'. osztály\n'+str(data4b[i])+" pont" for i in range(len(data4b))], autopct='%1.0f%%',\ startangle=90, colors=colors[:3]+["#bd9e39","#e7ba52","#8c6d31"]) ax[0].axis('equal') ax[0].set_title(u'A csíkszeredai Márton Áron Gimnázium tanulóinak\n tanulmányi versenyeken való osztályonkénti súlyozott \neredményei a 2002-es és 2015-ös tanévek közötti időszakban',\ y=1.2,fontproperties=prop,size=12,color="#666655") for i in range(len(texts)): texts[i].set_fontproperties(prop) texts[i].set_fontsize(10) texts[i].set_color("#666655") autotexts[i].set_fontproperties(prop) autotexts[i].set_fontsize(20) autotexts[i].set_color("#222222") lbl2=[u"nyelvek",u"társadalomtudományok",u"matematika-informatika",u"természettudományok",u"művészetek"] colors3=["#6b6ecf","#b5cf6b","#e7ba52","#d6616b","#ce6dbd"] patches, texts, autotexts=ax[1].pie(data5b, labels=[lbl2[i]+u'\n'+str(data5b[i])+" pont" for i in range(len(data5b))], autopct='%1.0f%%',\ startangle=90, colors=colors3) ax[1].axis('equal') ax[1].set_title(u'A csíkszeredai Márton Áron Gimnázium tanulóinak\n tanulmányi versenyeken való tantárgycsoportonkénti súlyozott \neredményei a 2002-es és 2015-ös tanévek közötti időszakban',\ y=1.2,fontproperties=prop,size=12,color="#666655") for i in range(len(texts)): texts[i].set_fontproperties(prop) texts[i].set_fontsize(10) texts[i].set_color("#666655") autotexts[i].set_fontproperties(prop) autotexts[i].set_fontsize(20) autotexts[i].set_color("#222222") plt.savefig('pie2ossz.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[425]: fig,axi=plt.subplots(1,6,figsize=(17,4)) lbl=["A","B","C","D","E","F/G"] lbl2=[u"nyelvek",u"társadalomtudományok",u"matematika-informatika",u"természettudományok",u"művészetek"] lbl4=[u"tantárgycsoportok:",u"nyelvek",u"társadalomtudományok",u"természettudományok",u"matematika-informatika",u"művészetek"] colors3=["#6b6ecf","#b5cf6b","#e7ba52","#d6616b","#ce6dbd"] colors4=['#666655','#6b6ecf', '#b5cf6b', '#d6616b', '#e7ba52', '#ce6dbd'] for i in range(len(lbl)): d=data6[i] ax=axi[i] patches, texts, autotexts=ax.pie(d, autopct='%1.0f%%',\ startangle=90, colors=colors3) ax.axis('equal') ax.set_title(lbl[i]+u'. osztály\n'+str(np.array(d).sum())+" verseny",\ y=0.81,fontproperties=prop,size=12,color="#666655") if (i<6): ax.text(0.5+i*0,0.1,lbl4[i],color=colors4[i],size=13, fontproperties=prop,\ horizontalalignment='center',verticalalignment='center',alpha=1,transform=ax.transAxes) for i in range(len(texts)): autotexts[i].set_fontproperties(prop) autotexts[i].set_fontsize(12) autotexts[i].set_color("#222222") plt.suptitle(u'A csíkszeredai Márton Áron Gimnázium tanulóinak tanulmányi versenyeken való\n osztályonkénti és tantárgycsoportonkénti részvétele a 2002-es és 2015-ös tanévek közötti időszakban',\ y=1.05,fontproperties=prop,size=16,color="#666655") plt.savefig('pie3.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[426]: fig,axi=plt.subplots(1,6,figsize=(17,4)) lbl=["A","B","C","D","E","F/G"] lbl2=[u"nyelvek",u"társadalomtudományok",u"matematika-informatika",u"természettudományok",u"művészetek"] lbl4=[u"tantárgycsoportok:",u"nyelvek",u"társadalomtudományok",u"természettudományok",u"matematika-informatika",u"művészetek"] colors3=["#6b6ecf","#b5cf6b","#e7ba52","#d6616b","#ce6dbd"] colors4=['#666655','#6b6ecf', '#b5cf6b', '#d6616b', '#e7ba52', '#ce6dbd'] for i in range(len(lbl)): d=data6b[i] ax=axi[i] patches, texts, autotexts=ax.pie(d, autopct='%1.0f%%',\ startangle=90, colors=colors3) ax.axis('equal') ax.set_title(lbl[i]+u'. osztály\n'+str(np.array(d).sum())+" pont",\ y=0.81,fontproperties=prop,size=12,color="#666655") if (i<6): ax.text(0.5+i*0,0.1,lbl4[i],color=colors4[i],size=13, fontproperties=prop,\ horizontalalignment='center',verticalalignment='center',alpha=1,transform=ax.transAxes) for i in range(len(texts)): autotexts[i].set_fontproperties(prop) autotexts[i].set_fontsize(12) autotexts[i].set_color("#222222") plt.suptitle(u'A csíkszeredai Márton Áron Gimnázium tanulóinak tanulmányi versenyeken való osztályonkénti és \ntantárgycsoportonkénti súlyozott eredményei a 2002-es és 2015-ös tanévek közötti időszakban',\ y=1.05,fontproperties=prop,size=16,color="#666655") plt.savefig('pie3b.png',bbox_inches = 'tight', pad_inches = 0.1, dpi=150,facecolor="#111111", edgecolor='#888888') plt.show() # In[498]: data6 # In[499]: data7