<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Ha nincs meg minden bővítőcsomag, akkor feltesszük ezeket console-ból vagy ! a cella elejére.
Step1:  Pandasban az táblázatatok DataFrame-ek.
Step2:  Vízszintes sorok nevei
Step3:  Oszlopok nevei
Step4:  Első néhány sor
Step5:  Utolsó néhány sor
Step6:  Szűrés több oszlop szerint
Step7:  Szűrés egyetloen oszlopra lehet Series vagy DataFrame.
Step8:  Sorok szerinti szűrés
Step9:  Pnadas dokumentációban van sok más típusú szűrés (iloc, xslice) és még sok más.
Új oszlop hozzáadása.
Step10:  Új oszlop egyenlő méretű listát kell tartalmazzon a DataFrame sorai számával.
Step11:  Exportálás pl. Excelbe
Step12:  Egyediségvizsgálat
Step13:  Számolás NaN elemek nélkül.
Step14:  Egyedi számolás NaN elemek nélkül.
Step15:  Csoportosítani oszlopok szerint
Step16:  Listák vágása (slicing) / szeletelése
Step17:  "Hány elemenként"
Step18:  Pythonic list composition
for és if parancsok
Step19:  range(honnan,hova,mekkora lepes=1)
Step20:  Elegánsabb szűrés
Step21:  Uj index szerinti szűrés
Step22:  Python dictionary, azaz szotar
Step23:  Geometria hozzatarsitas. Ezeket shapefile-típusú fájlokban találjuk. Ezeke ArcGIS. A shapefile fájlok nagyok, Csak az ArcGIS nyithatóak - ezért van egy nyílt standard, ez a geojson. (De a geojson elég régi és van egy újabb stnadardja a topojson).
Konvertálni egyszerű közöttük
Step24:  Levenshtein függvény definiálása kólön python .py fileban.
Step25:  Összes távolság
Step26:  Minimum távolságok
Step27:  Hibák javítása manuálisan
Step28:  Életkorok kinyerése a df5 dataframeből
Step29:  Országok listáját átalakítjuk szótárrá
Step30:  Ezután kicseréljük a szótár kulcsait az angol országneveről a román országnevekre.
Step31:  Behozzuk a román országneveket és élatkorokat az országok szótárába
Step32:  Visszalakítjuk lista formátumba
Step33:  Exportáljuk mint új geojson
<ASSISTANT_TASK:>
Python Code:
!pip install xlrd
Explanation: Ha nincs meg minden bővítőcsomag, akkor feltesszük ezeket console-ból vagy ! a cella elejére.
End of explanation
df=pd.read_excel('set-date-deschise-vtp2015.xlsx')
Explanation: Pandasban az táblázatatok DataFrame-ek.
End of explanation
df.index
Explanation: Vízszintes sorok nevei
End of explanation
df.columns
Explanation: Oszlopok nevei
End of explanation
df.head(2)
Explanation: Első néhány sor
End of explanation
df.tail(2)
Explanation: Utolsó néhány sor
End of explanation
az_en_oszlopom=['varsta','Cetatenie','gen']
df2=df[az_en_oszlopom].head(2)
df2
Explanation: Szűrés több oszlop szerint
End of explanation
print(type(df[['varsta']]))
print(type(df['varsta']))
Explanation: Szűrés egyetloen oszlopra lehet Series vagy DataFrame.
End of explanation
az_en_indexem=[2,4,67]
df3=df.loc[az_en_indexem]
df3
Explanation: Sorok szerinti szűrés
End of explanation
df['uj']=42
Explanation: Pnadas dokumentációban van sok más típusú szűrés (iloc, xslice) és még sok más.
Új oszlop hozzáadása.
End of explanation
df['uj2']=range(880)
df['uj2']=range(len(df))
#df['uj2']=range(870) #nem mukodik
Explanation: Új oszlop egyenlő méretű listát kell tartalmazzon a DataFrame sorai számával.
End of explanation
df[['gen','varsta','Destinatie_tara1']].to_excel('enyim.xlsx')
Explanation: Exportálás pl. Excelbe
End of explanation
len(df)
len(df['Destinatie_tara1'].unique())
Explanation: Egyediségvizsgálat
End of explanation
df.count()
Explanation: Számolás NaN elemek nélkül.
End of explanation
df.nunique()
Explanation: Egyedi számolás NaN elemek nélkül.
End of explanation
df.groupby(['judet_domiciliu','Destinatie_tara1']).mean() #tobb oszlop is lehet a szuro
df4=df.groupby(['Destinatie_tara1']).mean()
df4=df4[['varsta']]
az_en_indexem=list(df4.index)
az_en_indexem[2]
az_en_indexem[2:]
Explanation: Csoportosítani oszlopok szerint
End of explanation
az_en_indexem[:2]
az_en_indexem[2:7]
Explanation: Listák vágása (slicing) / szeletelése
End of explanation
az_en_indexem[::3]
az_en_indexem[::-1]
Explanation: "Hány elemenként"
End of explanation
for elem in az_en_indexem[:4]:
    print(elem)
for i,elem in enumerate(az_en_indexem[:4]):
    print(i,elem)
for i in range(5):
    print(i,az_en_indexem[i])
Explanation: Pythonic list composition
for és if parancsok
End of explanation
for i in range(3,8):
    print(i,az_en_indexem[i])
Explanation: range(honnan,hova,mekkora lepes=1)
End of explanation
for elem in az_en_indexem:
    if ( (elem==18) or (elem==999) ):
        print(elem)
tiltolista=[18,999]
for elem in az_en_indexem:
    if elem in tiltolista:
        print(elem)
    
for elem in az_en_indexem:
    if ( (elem!=18) and (elem!=999) ):
        print(elem)
    
for elem in az_en_indexem:
    if elem not in tiltolista:
        print(elem)
uj_index=[]
for elem in az_en_indexem:
    if elem not in [18,999]:
        uj_index.append(elem)
uj_index
[i for i in range(5)]
uj_index2=[elem for elem in az_en_indexem if elem not in tiltolista]
uj_index2
Explanation: Elegánsabb szűrés
End of explanation
df4.loc[uj_index2].head(4)
df5=df4.loc[uj_index2]
df5=df5.reset_index()
df5[['Destinatie_tara1']].replace('Belgia','Belgium').replace('Cehia','Cseh')
Explanation: Uj index szerinti szűrés
End of explanation
nev_cserelo={'Belgia':'Belgium','Cehia':'Cseh'}
df5[['Destinatie_tara2']]=df5[['Destinatie_tara1']].replace(nev_cserelo)
df5.set_index('Destinatie_tara2')[['varsta']].to_excel('df5.xlsx')
df5=df5.set_index('Destinatie_tara2')[['varsta']]
df5.to_excel('df5.xlsx')
Explanation: Python dictionary, azaz szotar: {key1:value2, key2: value2, ...}
End of explanation
pd.read_json('countries.geo.json').head()
import json
file=open('countries.geo.json','r').read()
countries=json.loads(file)
countries=countries['features']
countries[0]
orszagok_angol=[country['properties']['name'] for country in countries]
orszagok_roman=list(df5.index)
Explanation: Geometria hozzatarsitas. Ezeket shapefile-típusú fájlokban találjuk. Ezeke ArcGIS. A shapefile fájlok nagyok, Csak az ArcGIS nyithatóak - ezért van egy nyílt standard, ez a geojson. (De a geojson elég régi és van egy újabb stnadardja a topojson).
Konvertálni egyszerű közöttük:
- https://mygeodata.cloud/converter/geojson-to-topojson
- https://www.igismap.com/convert-geojson-to-topojson-gis/
- https://jeffpaine.github.io/geojson-topojson/
- https://www.safe.com/convert/geojson/topojson/
Szükségunk van országok szintű geojson-ra.
https://github.com/johan/world.geo.json/blob/master/countries.geo.json  
Románia megyék:
https://github.com/deldersveld/topojson/blob/master/countries/romania/romania-counties.json
Európa megyeszintű felosztás: https://data.europa.eu/euodp/en/data/dataset/HZKBS2y8ycdZijX0PMHPA
JSON file beolvasása
End of explanation
import lev
Explanation: Levenshtein függvény definiálása kólön python .py fileban.
End of explanation
orszag_matrix={}
for orszag1 in orszagok_roman:
    if orszag1 not in orszag_matrix:orszag_matrix[orszag1]={}
    for orszag2 in orszagok_angol:
        orszag_matrix[orszag1][orszag2]=lev.levenshteinDistance(orszag1,orszag2)
        #print(orszag1,orszag2)
Explanation: Összes távolság
End of explanation
orszag_matrix_jo={}
for orszag1 in orszag_matrix:
    orszag_matrix_jo[orszag1]=min(orszag_matrix[orszag1],key=orszag_matrix[orszag1].get)
Explanation: Minimum távolságok
End of explanation
orszag_matrix_jo['Cseh']='Czech Republic'
orszag_matrix_jo['Elvetia']='Switzerland'
orszag_matrix_jo['Grecia']='Greece'
orszag_matrix_jo['Norvegia']='Norway'
orszag_matrix_jo['Olanda']='Netherlands'
orszag_matrix_jo['Suedia']='Sweden'
orszag_matrix_jo['Turcia']='Turkey'
orszag_matrix_jo['UK']='United Kingdom'
orszag_matrix_jo['Ungaria']='Hungary'
orszag_matrix_jo['Bahamas']='The Bahamas'
orszag_matrix_jo
Explanation: Hibák javítása manuálisan
End of explanation
eletkorok=df5.to_dict()['varsta']
eletkorok
Explanation: Életkorok kinyerése a df5 dataframeből
End of explanation
country_dict={country['properties']['name']:country for country in countries}
Explanation: Országok listáját átalakítjuk szótárrá
End of explanation
country_dict_ro={orszag1:country_dict[orszag_matrix_jo[orszag1]] for orszag1 in orszag_matrix_jo}
Explanation: Ezután kicseréljük a szótár kulcsait az angol országneveről a román országnevekre.
End of explanation
for country in country_dict_ro:
    country_dict_ro[country]['properties']['name_ro']=country
    country_dict_ro[country]['properties']['varsta']=eletkorok[country]
Explanation: Behozzuk a román országneveket és élatkorokat az országok szótárába
End of explanation
country_dict_ro_values=list(country_dict_ro.values())
country_dict_ro_updated={'features':country_dict_ro_values}
country_dict_ro_updated['type']='FeatureCollection'
Explanation: Visszalakítjuk lista formátumba
End of explanation
export_file=open('countries_ro.geo.json','w')
export_file.write(json.dumps(country_dict_ro_updated))
Explanation: Exportáljuk mint új geojson
End of explanation
<END_TASK>