<jupyter_start><jupyter_text>Ha nincs meg minden bővítőcsomag, akkor feltesszük ezeket `console`-ból vagy `!` a cella elejére.<jupyter_code>!pip install xlrd<jupyter_output>Requirement already satisfied: xlrd in c:\programdata\anaconda3\lib\site-packages (1.2.0)<jupyter_text>Pandasban az táblázatatok `DataFrame`-ek.<jupyter_code>df=pd.read_excel('set-date-deschise-vtp2015.xlsx')<jupyter_output><empty_output><jupyter_text>Vízszintes sorok nevei<jupyter_code>df.index<jupyter_output><empty_output><jupyter_text>Oszlopok nevei<jupyter_code>df.columns<jupyter_output><empty_output><jupyter_text>Első néhány sor<jupyter_code>df.head(2)<jupyter_output><empty_output><jupyter_text>Utolsó néhány sor<jupyter_code>df.tail(2)<jupyter_output><empty_output><jupyter_text>Szűrés több oszlop szerint<jupyter_code>az_en_oszlopom=['varsta','Cetatenie','gen']
df2=df[az_en_oszlopom].head(2)
df2<jupyter_output><empty_output><jupyter_text>Szűrés egyetloen oszlopra lehet `Series` vagy `DataFrame`.<jupyter_code>print(type(df[['varsta']]))
print(type(df['varsta']))<jupyter_output><class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.series.Series'><jupyter_text>Sorok szerinti szűrés<jupyter_code>az_en_indexem=[2,4,67]
df3=df.loc[az_en_indexem]
df3<jupyter_output><empty_output><jupyter_text>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.<jupyter_code>df['uj']=42<jupyter_output><empty_output><jupyter_text>Új oszlop egyenlő méretű listát kell tartalmazzon a `DataFrame` sorai számával.<jupyter_code>df['uj2']=range(880)
df['uj2']=range(len(df))
#df['uj2']=range(870) #nem mukodik<jupyter_output><empty_output><jupyter_text>Exportálás pl. Excelbe<jupyter_code>df[['gen','varsta','Destinatie_tara1']].to_excel('enyim.xlsx')<jupyter_output><empty_output><jupyter_text>Egyediségvizsgálat<jupyter_code>len(df)
len(df['Destinatie_tara1'].unique())<jupyter_output><empty_output><jupyter_text>Számolás `NaN` elemek nélkül.<jupyter_code>df.count()<jupyter_output><empty_output><jupyter_text>Egyedi számolás `NaN` elemek nélkül.<jupyter_code>df.nunique()<jupyter_output><empty_output><jupyter_text>Csoportosítani oszlopok szerint<jupyter_code>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:]<jupyter_output><empty_output><jupyter_text>Listák vágása (slicing) / szeletelése<jupyter_code>az_en_indexem[:2]
az_en_indexem[2:7]<jupyter_output><empty_output><jupyter_text>"Hány elemenként"<jupyter_code>az_en_indexem[::3]
az_en_indexem[::-1]<jupyter_output><empty_output><jupyter_text>Pythonic list composition `for` és `if` parancsok<jupyter_code>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])<jupyter_output>0 18
1 999
2 Austria
3 Bahamas
4 Belgia<jupyter_text>`range(honnan,hova,mekkora lepes=1)`<jupyter_code>for i in range(3,8):
    print(i,az_en_indexem[i])<jupyter_output>3 Bahamas
4 Belgia
5 Cehia
6 Cipru
7 Danemarca<jupyter_text>Elegánsabb szűrés<jupyter_code>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<jupyter_output><empty_output><jupyter_text>Uj index szerinti szűrés<jupyter_code>df4.loc[uj_index2].head(4)
df5=df4.loc[uj_index2]
df5=df5.reset_index()
df5[['Destinatie_tara1']].replace('Belgia','Belgium').replace('Cehia','Cseh')<jupyter_output><empty_output><jupyter_text>Python `dictionary`, azaz szotar: `{key1:value2, key2: value2, ...}`<jupyter_code>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')<jupyter_output><empty_output><jupyter_text>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<jupyter_code>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)<jupyter_output><empty_output><jupyter_text>Levenshtein függvény definiálása kólön python `.py` fileban.<jupyter_code>import lev<jupyter_output><empty_output><jupyter_text>Összes távolság<jupyter_code>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)<jupyter_output><empty_output><jupyter_text>Minimum távolságok<jupyter_code>orszag_matrix_jo={}
for orszag1 in orszag_matrix:
    orszag_matrix_jo[orszag1]=min(orszag_matrix[orszag1],key=orszag_matrix[orszag1].get)<jupyter_output><empty_output><jupyter_text>Hibák javítása manuálisan<jupyter_code>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<jupyter_output><empty_output><jupyter_text>Életkorok kinyerése a `df5` dataframeből<jupyter_code>eletkorok=df5.to_dict()['varsta']
eletkorok<jupyter_output><empty_output><jupyter_text>Országok listáját átalakítjuk szótárrá<jupyter_code>country_dict={country['properties']['name']:country for country in countries}<jupyter_output><empty_output><jupyter_text>Ezután kicseréljük a szótár kulcsait az angol országneveről a román országnevekre.<jupyter_code>country_dict_ro={orszag1:country_dict[orszag_matrix_jo[orszag1]] for orszag1 in orszag_matrix_jo}<jupyter_output><empty_output><jupyter_text>Behozzuk a román országneveket és élatkorokat az országok szótárába<jupyter_code>for country in country_dict_ro:
    country_dict_ro[country]['properties']['name_ro']=country
    country_dict_ro[country]['properties']['varsta']=eletkorok[country]<jupyter_output><empty_output><jupyter_text>Visszalakítjuk lista formátumba<jupyter_code>country_dict_ro_values=list(country_dict_ro.values())
country_dict_ro_updated={'features':country_dict_ro_values}
country_dict_ro_updated['type']='FeatureCollection'<jupyter_output><empty_output><jupyter_text>Exportáljuk mint új `geojson`<jupyter_code>export_file=open('countries_ro.geo.json','w')
export_file.write(json.dumps(country_dict_ro_updated))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1366816591704148, 'fraction_numerical': 0.01736631684157921, 'mean_word_length': 10.669096209912537, 'pattern_counts': {'":': 0, '<': 135, '<?xml version=': 0, '>': 135, 'https://': 7, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '34', 'dir': 'jupyter-structured-clean-dedup', 'id': '361467', 'license': 'MIT', 'n_tokens_mistral': 3505, 'n_tokens_neox': 3470, 'n_words': 393, 'path': 'present/bi/2020/jupyter/1_python_bevezeto.ipynb', 'repo_name': 'csaladenes/csaladenes.github.io', 'size': '8004'}