Video:
Notizen / Code
https://colab.research.google.com/drive/1-2VAKiobSleqJSeFucWt-u1qi9HXSrk9
Living in a data-based world
Ihr wollte in eurem Dataframe zwei Spalten addieren und dabei nans ignorieren? D.h. ihr wollt a und b addieren, sofern a und b nicht None oder null sind und a, wenn a nicht None oder null aber b None oder null ist und sonst b in die neue Spalte schreiben?
Das geht so:
add_if_notna = lambda a, b: a+b if ~np.isnan(a) and ~np.isnan(b) else a if ~np.isnan(a) else b df['new_col'] = df['col1'].combine(df['col2'],add_if_notna)
Wenn ihr alternativ die Spalten nur addieren wollt, wenn beide Werte ungleich null / None sind, dann geht das so:
add_if_notna = lambda a, b: a+b if ~np.isnan(a) and ~np.isnan(b) else None df['new_col'] = df['col1'].combine(df['col2'],add_if_notna)
Unter der Annahme, dass ihr host, port, db_name, user_name und passwort definiert habt, könnt ihr dazu folgendes Snippet verwenden.
import pandas as pd import pandas.io.sql as sqlio import psycopg2 conn = psycopg2.connect(f"host='{host}' port={port} dbname='{db_name}' user={user_name} password={password}") query = "select count(*) from table;" df = sqlio.read_sql_query(query, conn) conn.close()
Für den Fall, dass ihr wie ich einmal vergessen habt in eure .gitignore :
__pycache__/ *.py[cod]
einzutragen und nun auf einmal diese Folder auch auf eurem Deploymentsystem habt oder sie bei euch lokal entfernen wollt, um dann zu commiten, dann gebt das hier ein:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
Für die meisten meiner Projekte verwende ich gitlab und dessen CI/CD Pipelines. Falls ihr das auch tun wollt, hier einen Anleitung dazu.
Webserver
Um zu beginnen braucht ihr einen eigenen Webserver. Ich habe mir hierfür zu Testzwecken ein simples Droplet bei Digital Ocean geklickt. Das geht so:
Als nächstes auf ‘Droplet’ klicken…
Ich habe eine Ubuntu 16.04 Machine genommen und aus dem “Starter Plan” die kleinste Maschine ausgewählt:
Um sie zu finden, müsst ihr auf den Pfeilknopf links klicken:
Jetzt die gewünschte Machine auswählen:
Ich habe das Droplet in Frankfurt erzeugt:
Abschließend noch einen Namen für das Droplet eingeben und dann bestätigen.
Nach kurzer Zeit erscheint euer Droplet. Ihr könnt direkt eure IP-Adresse sehen. Ein ssh-Passwort wurde euch an die E-Mail-Adresse geschickt, die ihr beim Anmelden hinterlegt habt.
Ihr könnt euch jetzt über euer terminal oder putty, wenn ihr auf Windows unterwegs seid so auf eurem System anmelden:
ssh root<eureIPAdresse>
Und nun das Passwort eingeben, dass euch per E-Mail zuschickt wurde. Fertig.
Patreon ist eine Plattform aus den USA, die es jedem ermöglicht Autoren, Künstler Musiker, Podcaster, YouTuber usw. seiner Wahl mit einer kleinen oder größere regelmäßigen spende zu versorgen.
Dadurch ist es eine gute Möglichkeit sich für alle Arten von Autoren sich ohne der Werbung zu unterwerfen zu finanzieren. Ich habe mir dort auch ein Profil für mein Projekt genughaben.de eingerichtet und habe seitdem dort auch keine automatische Werbung mehr. Sofern euch meine Seite gefällt und ihr mich unterstützen könnt, würde ich mich darüber freuen! Mein Profil findet ihr hier:
Seid ihr selbst Künstler, Autor, Musiker, Podcaster, YouTuber o.ä.? Dann meldet euch doch selbst auf Patreon an und schreibt euren Fans, dass sie euch darüber unterstützen könnt! Patreon bietet dazu viel und gute Unterstützung an, damit ihr damit auch Erfolg habt und ihr in Zukunft weniger von Werbung abhängig seid!
Viel Spaß und Erfolg mit eurem Projekt und danke für eure Unterstützung!
Frank
Bücher in Buchläden (leichter) finden
Immer wieder stehe ich vor Bücherregalen und würde zugern nach Stichworten suchen und dann entweder einen passenden Titel oder eine Empfehlung bekommen. Dazu fielen mir ein:
App der Buchhandlung, die mit immer aktuellen Bildern der Bücherregale gefüllt werden. Nun kann ich als Besucher die Bücherregale durchsuchen – ggf. sogar von zuhause.
Da in einer Datenbank idealerweise auch Metadaten, Autorenname und Stichworte zum Inhalt liegen können diese für die Suche herangezogen werden.
Text in Bildern durchsuchen.
Manchmal möchte ich nach Begriffen in einem physischen Buch suchen. Cool fände ich da eine App, der ich meine Suchbegriffe eingeben kann. Mit meiner Telefonkamera filme ich dann über die Seiten und mir werden die passenden Begriffe gehighlighted. Manchmal netter als das Buch Zeile für Zeile mit den Augen durchzugehen.
Gestern war ich auf dem PyData Meetup in Hamburg bei Grunar + Jahr am Baumwall.
Ich werde her keine vollumfängliche Beschreibung, sondern nur jeweils das berichten, was ich am spannensten fand.
Es gab drei Vorträge:
1. Irina Vidal Migallón: Poking holes in your deep learning vision model.
Irina stellte Herausforderunge bei der Entwicklung von Bilderkennungsverfahren vor. Es ging dabei um Robustheit, die sie durch die vier Begriffe Evaluaton, Debugging, Interpretability und Adversarial* umriss. Irina arbeitete bereits im Bereich Medizin und Mobilität und wendete dort Bilderkennung an. In der Pause unterhielten wir uns u.a. über Ansätze “unbekannte” in Klassifikationen zu erkennen. Sie schlug Siemese Networks vor, die ich auch schon einmal ins Auge gefasst hatte – es ist aber immer gut das noch einmal von jemanden bestätigt zu bekommen 🙂
2. Matti Lyra: Research into production: automating travel bookings using current NLP research.
Matti erzählte über NLP zur Detektierung von Hotelbuchungen aus E-Mails. Ich fand den Vortrag technisch sehr spannend! Es ging darum aus E-Mails anfragen für Hotels zu extrahieren. Für mich nicht so relevant – da ich lieber ein Formular verwende, dass für mich gleichzeitig wie eine Checkliste fungiert und für mich so sicher stellt, dass ich nichts wichtiges vergessen habe. Für einen vielreisenden Businessman aber vielleicht genau das richtige!
Christopher Werner: Prediction of Status Changes in Software Tests.
Auch ein spannender Vortrag. Technisch betrachtet. Es ging darum zu erkennen, ob be einen Commit der Status eines Tests sich ändert. Hier war allerdings der Use Case für mich nicht wirklich nachvollziehbar. Problem des Kunden war: die Tests brauchen 1,5 Tage bis sie durchlaufen. Fair enough. Aber warum dann nicht die Anwendung in Services mit jeweils kleineren Testsuits unterteilen? Und wenn das keine Option ist: warum nicht an Teilen des Codes entwicklen und nur die dafür relevanten Suites ausführen? Immer noch sicherer als die Endgenauigkeit von circa 80% des vorgestellten Modells: denn ein mit 20%iger Wahrscheinlichkeit fehlerhaftes Update würde ich nicht deployen wollen…
Key Takeaways waren für mich:
Selbst sprechen:
Auch interessant fand ich: