2020. szeptember 16., szerda

Jupyter notebook trükkök

 

Hogyan jelezhetjük a felületen hogy elkészült a program futása?

## Java scrip felugró ablak:

%%javascript
alert("Kész vagyok!")  

 

 

Hogyan küldjünk magunknak üzenetet ha elkészült a program futása?

mport smtplib 
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart('alternative') 
msg['Subject'] = "Elkészül a futás, nézd meg az eredményt!"
msg['From'] = "
no.reply.admin@mierdekel.hu"
msg['To'] = "
admin@mierdekel.hu"
# Message body 
html = "<html><b>DONE</b></html>"
# beágyazott üzenet
part2 = MIMEText(html, 'html')
msg.attach(part2)
# Send the message via local SMTP server.
s = smtplib.SMTP('
amail.servers.mierdekel.hu')
# sendmail function takes 3 arguments: sender's address, recipient's address and message to send - here it is sent as one string
s.sendmail("
no.reply.admin@mierdekel.hu", "user2@mierdekel.hu", msg.as_string())
s.quit()

 

 

Hogyan lehet felhasználni a külső parancsok eredményét?

Az eredmény változóba irányítható. A változó típusa automatikusan String Lists (IPython.utils.text.SList) lesz.

result = !hadoop fs -ls /data/sada/dcda/s3/domani_kbc.avro

 

 

Hogyan íratható automatikusan ki a végrehajtási idő minden program végrehajtás után?

%load_ext autotime 

### Installálás ha szükséges:

%install_ext /data/site/jupyter_extensions/autotime.py  %load_ext autotime

 

 

Az egyes függvények leírását hogyan lehet gyorsan elérni?

A parancs végére tegyünk kérdőjelet a CODE cellában és futtassuk le shift+enter gyos billentyűkombinációval.

 

Hogyan és mire használjunk mágikus parancsokat?

# Egysoros hatókör : %

# Egész céllára vonatkozó hatókör : %%

%%prun : profile your cell code (number of calls & timing info)
%%timeit : execution time of the cell
%debug : enter this in a cell after you had an error, it allow you to debug (messages, variable content at error, ...)
%load : load a .py script or other file into the cell
%macro : create macro's
további infó : (
http://ipython.readthedocs.io/en/stable/interactive/magics.html) ...

 

Hogyan változtathatjuk meg a jupyter lapok stilusát?

A felhasználói stiluslap helye: /home/userxx/.jupyter/custom/custom.css. 

 

 

Több kimenet megjelenítése egyszerre hogyan történhet?

Helyezze a következőket a notebook első soraiba (nem sükséges külön print parancs működéshez):

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

 

 

Hogyan növelhető meg a kimeneti terület szélessége 100%-osra?

from IPython.core.display import display, HTML

display(HTML("<style>.container { width:100% !important; }</style>")) 

 

 

Hogyan lehet összecsukni a code (program) cellát?

from IPython.display import HTML
HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
$( document ).ready(code_toggle);
</script>
Ha eltüntetni akarod, akkor : <a href="javascript:code_toggle()">Erre klikkelj</a>.''')

 

 

az összes kimeneti cella elrejtéséhez futtassa ezt a kódot egy cellában

 

from IPython.display import HTML

HTML('''<script> $('div.output_wrapper').hide(); </script>''')

 

 

az összes kimeneti cella megjelenítéséhez futtassa ezt a kódot egy cellában

from IPython.display import HTML

HTML('''<script> $('div.output_wrapper').show(); </script>''')

 

 

 

Hogyan lehet csak a nagy kimeneti cellákat törölni (hogy megakadályozzuk a böngésző lelassulását)?

%%html <button onclick="$('div.output_subarea.output_text.output_stream.output_stdout').each(function( index, element ) {

     if( element.innerHTML ) {

         if (element.innerHTML.length > 1000) {

             element.innerHTML='Output Cleared';

         }

     }

 });">Clear output larger than 1000 characters</button>

 

 

Hogyan kell a felesleges logolást letiltani?

import logging 

logger =logging.getLogger('kl_lib')

logger.setLevel(logging.CRITICAL)

 

 

Hagyan kell python modulokat elérhetővé tenni?

Extra könyvtárrakat be kell jegyezni a környezeti utvonal változóba,

import sys
sys.path.append("/data/site/python[2|3]libs/lib/python") 

 

 

 

Hogyan tudunk tömörített fileket olvasni, írni?

 

Írás

#  pandas dataframe : pdf

pdf.to_csv('mypath/myfile.csv.tar.gz', compression='gzip')

 

Olvasás

pdf = pd.read_csv('mypath/myfile.csv.tar.gz', compression='gzip')

 

 

Dátum különbségek napjainak számolása hogyan gyorsítható?

Alap :

 (date1-date2).dt.days

 

Gyors:

 (date1-date2).dt.values.astype('timedelta64[D]')

 

 

 Hogyan lehet konvertálni egy sorozat  int-től dátumra?

Ha az oszlop (sorozat) a következő formátumú: 20200916, és azt szeretné, hogy date_time (2020-09-16) legyen

df['SERIES_NAME'] = pd.to_datetime(df['SERIES_NAME'], format = '%Y%m%d') 

 

 

 

Dátum idő csoportosításokat hoyga érdemes elvégezni?

times = pd.DatetimeIndex(df.SERIES_NAME)

grouped = df.groupby([times.month, times.year)    # Note you can then add additional df columns to the groupby

grouped.count()

 

Hogyan lehet hatékonyan ledobni bizonyos karaktereket egy karakterláncból (pl. A karakterlánc tisztításához)?

text = 'This is a test, dropping 123 numbers and other special characters like #} from a string.'

text_cleaned = text.translate({ord(i):None for i in ' ,.;:-[](){}"\'!@#$:0123456789?!'})

print(text_cleaned)

 

 

Hogyan teszteljek?

Használjuk az assert lehetőséget az elvár eredménnyel összehasonlításra.

assert resolveUser('123456')=='123456'

assert resolveUser('')==''

assert resolveUser('A')=='A'

assert resolveUser('None')==''




Nincsenek megjegyzések:

Megjegyzés küldése

Jupyter notebook trükkök

  Hogyan jelezhetjük a felületen hogy elkészült a program futása? ## Java scrip felugró ablak: %%javascript alert("Kész vagyok!&qu...