import pandas as pd, numpy as np, matplotlib.pyplot as plt
%matplotlib inline
#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
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)
#adatok mentese
import json
file('data.json','w').write(json.dumps(data))
Osztalyzatok
Adattisztogatas - nincs szukseg OCR-ra
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
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
#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
for y in range(2002,2015):
if y not in {2005}:
print y,data2[repr(y)].keys()
2002 [u'IX', u'XI', u'XII', u'X'] 2003 [u'IX', u'XI', u'XII', u'X'] 2004 [u'IX', u'XI', u'XII', u'X'] 2006 [u'IX', u'XI', u'XII', u'X'] 2007 [u'IX', u'XI', u'XII', u'X'] 2008 [u'IX', u'XI', u'XII', u'X'] 2009 [u'IX', u'XI', u'XII', u'X'] 2010 [u'IX', u'XI', u'XII', u'X'] 2011 [u'IX', u'XI', u'XII', u'X'] 2012 [u'IX', u'XI', u'XII', u'X'] 2013 [u'IX', u'XI', u'XII', u'X'] 2014 [u'IX', u'XI', u'XII', u'X']
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])
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]
29 29 29
[[u'Andr\xe1s \ufffd\ufffd\u0151ke', u'Andr\xe1s Alp\xe1r', u'Antal Zsolt R\xf3bert', u'B\xedr\xf3 Brigitta', u'Both Anita', u'Dragu Erika', u'Ferencz Ad\xe9l', u'Ferencz Hunor', u'F\xfcl\xf6p Zsolt', u'F\xfcl\xf6p Erika', u'Gidr\xf3 Szid\xf3nia', u'Gy\xf6rgy Zsuzsanna', u'Ho\ufffdpoth Ren\xe1ta M\xe1ria', u'I\ufffdets Vill\u0151', u'Imre T\xfcnde', u'Imre Hunor', u'Incze Katalin', u'Kelemen Kinga', u'L\u0151rinczy Ta\ufffd\xe1s', u'M\xe1rton B\xedborka Bernadette', u'Moln\xe1r Ad\xe9l', u'Moln\xe1r Andrea', u'Portik Szende', u'S\xe1ndor Szilveszter', u'Szilveszter Szid\xf3nia', u'Tank\xf3 T\xedmea', u'Vaszi Henrietta', u'Vaszi M\xe1ria', u'Veress T\xedmea'], [9.18, 8.15, 8.71, 9.05, 8.86, 8.92, 8.86, 9.6, 9.05, 8.31, 8.47, 8.86, 9.36, 8.55, 8.94, 8.47, 9.07, 8.97, 8.44, 8.36, 9.1, 9.23, 9.23, 8.52, 8.81, 8.57, 8.63, 8.78, 8.92], [u'Cs\xedkszentsi\ufffdon', u'Cs\xedkszereda', u'Cs\xedkcsomort\xe1n', u'Cs\xedkszenttam\xe1s', u'Szentegyh\xe1za', u'Cs\xedkszereda', u'Cs\xedksz\xe9pv\xedz', u'K\xe1poln\xe1s', u'Cs\xedkszereda', u'Cs\xedkd\xe1nfalva', u'Cs\xedkszenttam\xe1s', u'Cs\xedkmadaras', u'Tusn\xe1df\xfcrd\u0151', u'Cs\xedkszereda', u'Cs\xedkmadaras', u'Cs\xedkszentsimon', u'Cs\xedkszereda', u'Cs\xedkszereda', u'Cs\xedkszereda', u'Cs\xedkjen\u0151falva', u'Cs\xedkszereda', u'Cs\xedkszereda', u'Gyilkost\xf3', u'Cs\xedkjen\u0151falva', u'Cs\xedkszereda', u'Gyimesk\xf6z\xe9plok', u'Cs\xedkszentimre', u'Cs\xedkszereda', u'Cs\xedkszentsimon']]
Statisztika gyujtes
ar=np.array(data2[year][ev][osztaly][1])
temp = ar.argsort()[::-1]
ranks = np.empty(len(ar), int)
ranks[temp] = np.arange(len(ar))
ranks
array([ 4, 28, 18, 7, 14, 12, 15, 0, 8, 27, 23, 13, 1, 21, 10, 24, 6, 9, 25, 26, 5, 3, 2, 22, 16, 20, 19, 17, 11])
ar
array([ 9.18, 8.15, 8.71, 9.05, 8.86, 8.92, 8.86, 9.6 , 9.05, 8.31, 8.47, 8.86, 9.36, 8.55, 8.94, 8.47, 9.07, 8.97, 8.44, 8.36, 9.1 , 9.23, 9.23, 8.52, 8.81, 8.57, 8.63, 8.78, 8.92])
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]]
#adatok mentese
import json
file('data3.json','w').write(json.dumps(data3))
Osztalyzatok plot
#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]]
np.mean(data_ossz['D'])
nan
np.nanmean(data_ev['2002']['A'])
8.6621428571428574
import random
import matplotlib as mpl
import matplotlib.font_manager as font_manager
path = 'Righteous-Regular.ttf'
prop = font_manager.FontProperties(fname=path)
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()
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()
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"]]
letszam
{'2002': {0: 99, 1: 106, 2: 99, 3: 93, 4: 100, 5: 129}, '2003': {0: 101, 1: 108, 2: 105, 3: 95, 4: 104, 5: 104}, '2004': {0: 109, 1: 117, 2: 108, 3: 99, 4: 112, 5: 52}, '2006': {0: 116, 1: 118, 2: 109, 3: 110, 4: 116}, '2007': {0: 110, 1: 118, 2: 108, 3: 101, 4: 109}, '2008': {0: 107, 1: 114, 2: 108, 3: 95, 4: 105}, '2009': {0: 113, 1: 116, 2: 111, 3: 102, 4: 108}, '2010': {0: 116, 1: 116, 2: 112, 3: 107, 4: 110}, '2011': {0: 118, 1: 120, 2: 113, 3: 114, 4: 113}, '2012': {0: 120, 1: 118, 2: 121, 3: 101, 4: 119, 5: 29}, '2013': {0: 118, 1: 118, 2: 121, 3: 108, 4: 119, 5: 55}, '2014': {0: 116, 1: 125, 2: 121, 3: 118, 4: 121, 5: 83}}
data8
{2002L: [16, 52, 36, 57, 77, 14], 2003L: [53, 91, 57, 33, 108, 37], 2004L: [30, 82, 42, 9, 184, 0], 2005L: [4, 71, 35, 17, 117, 0], 2006L: [12, 67, 27, 24, 198, 0], 2007L: [13, 77, 31, 37, 107, 0], 2008L: [16, 113, 31, 14, 93, 0], 2009L: [41, 63, 20, 4, 97, 0], 2010L: [10, 62, 89, 13, 172, 0], 2011L: [15, 76, 91, 13, 162, 0], 2012L: [33, 69, 48, 11, 185, 0], 2013L: [48, 36, 143, 15, 294, 0], 2014L: [17, 82, 123, 8, 413, 5], 2015L: [28, 44, 58, 4, 180, 14]}
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])
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()
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()
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()
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()
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()
data6
[[58, 6, 1, 6, 1], [89, 96, 1, 16, 2], [38, 16, 17, 100, 3], [6, 2, 17, 32, 0], [68, 24, 297, 116, 3], [6, 0, 7, 1, 0]]
data7
[[58, 89, 38, 6, 68, 6], [6, 96, 16, 2, 24, 0], [1, 1, 17, 17, 297, 7], [6, 16, 100, 32, 116, 1], [1, 2, 3, 0, 3, 0]]