
Bild von Autor | LeinwandPandas und SQL sind beide für die Datenanalyse wirksam, aber was ist, wenn wir ihre Macht verschmelzen könnten? Mit PandasqlSie können SQL -Abfragen direkt in ein Jupyter -Notizbuch schreiben. Diese Integration ermöglicht es uns nahtlos, die SQL -Logik mit Python für eine effektive Datenanalyse zu mischen.
In diesem Artikel werden wir sowohl Pandas als auch SQL zusammen in einem Datenprojekt von Uber verwenden. Fangen wir an!
# Was ist Pandasql?
Pandasql kann über ein In-Reminiscence in einen beliebigen Datenrahmen integriert werden Sqlite Motor, damit Sie reine SQL in eine Python -Umgebung schreiben können.
# Vorteile der Verwendung von Pandas und SQL zusammen

SQL ist nützlich, um Zeilen zu filtern, Daten zu aggregieren oder Multi-Kondition-Logik anzuwenden.
Python hingegen bietet erweiterte Instruments für statistische Analysen und benutzerdefinierte Berechnungen sowie set-basierte Vorgänge an, die über die Funktionen von SQL hinausgehen.
Bei gemeinsamer Verwendung vereinfacht SQL die Datenauswahl, während Python analytische Flexibilität hinzufügt.
# Wie fahre ich Pandasql in einem Jupyter -Notizbuch aus?
Rennen pandasql Beginnen Sie in einem Jupyter -Notizbuch mit dem folgenden Code.
import pandas as pd
from pandasql import sqldf
run = lambda q: sqldf(q, globals())
Als nächstes können Sie Ihren SQL -Code wie diesen ausführen:
run("""
SELECT *
FROM df
LIMIT 10;
""")
Wir werden den SQL -Code verwenden, ohne die anzuzeigen run in diesem Artikel jedes Mal funktionieren.

Lassen Sie uns sehen, wie die Verwendung von SQL und Pandas zusammen in einem realen Projekt von Uber funktioniert.
# Actual-World-Projekt: Analyse von Uber-Treiberleistungsdaten


Bild des Autors
In diesem DatenprojektUber bittet uns, die Fahrerleistungdaten der Fahrerleistung zu analysieren und Bonusstrategien zu bewerten.
// Datenerforschung und Analyse
Lassen Sie uns nun die Datensätze untersuchen. Zunächst werden wir die Daten laden.
// Erstes Laden
Laden wir den Datensatz mit nur Pandas.
import pandas as pd
import numpy as np
df = pd.read_csv('dataset_2.csv')
// Erforschung der Daten
Lassen Sie uns nun den Datensatz überprüfen.
Die Ausgabe sieht so aus:

Jetzt haben wir einen Blick auf die Daten.
Wie Sie sehen können, enthält der Datensatz den Namen jedes Fahrers, die Anzahl der von ihnen abgeschlossenen Reisen, deren Akzeptanzrate (dh der Prozentsatz der angenommenen Auslöseanfragen), die Gesamtversorgungsstunden (die on-line ausgegebenen Gesamtstunden) und deren Durchschnittsbewertung.
Überprüfen Sie die Spaltennamen, bevor wir die Datenanalyse starten, damit wir sie korrekt verwenden können.
Hier ist die Ausgabe.

Wie Sie sehen können, verfügt unser Datensatz über fünf verschiedene Spalten, und es fehlen keine Werte.
Beantworten wir nun die Fragen mit SQL und Python.
# Frage 1: Wer qualifiziert sich für die Bonusoption 1?
In der ersten Frage werden wir gebeten, die Gesamtbonusauszahlung für Choice 1 zu bestimmen, dh:
50 US -Greenback für jeden Treiber, der mindestens 8 Stunden on-line ist, akzeptiert 90% der Anfragen, absolviert 10 Fahrten und hat während des Zeitrahmens eine Bewertung von 4,7 oder besser.
// Schritt 1: Filtern Sie die Qualifikationstreiber mit SQL (Pandasql)
In diesem Schritt werden wir anfangen zu verwenden pandasql.
Im folgenden Code haben wir alle Treiber ausgewählt, die die Bedingungen für den Bonus von Choice 1 unter Verwendung des WHERE Klausel und die AND Bediener zur Verknüpfung mehrerer Bedingungen. Um zu lernen, wie man benutzt WHERE Und ANDbeziehen Sie sich darauf Dokumentation.
opt1_eligible = run("""
SELECT Identify -- preserve solely a reputation column for readability
FROM df
WHERE `Provide Hours` >= 8
AND `Journeys Accomplished` >= 10
AND `Settle for Price` >= 90
AND Score >= 4.7;
""")
opt1_eligible
Hier ist die Ausgabe.

// Schritt 2: Abschluss in Pandas
Nach dem Filtern des Datensatzes mit SQL mit pandasqlWir wechseln zu Pandas, um numerische Berechnungen durchzuführen und die Analyse abzuschließen. Diese Hybridtechnik, die SQL und Python kombiniert, verbessert sowohl die Lesbarkeit als auch die Flexibilität.
Als nächstes berechnen wir mit dem folgenden Python -Code die Gesamtausschüttung, indem wir die Anzahl der qualifizierten Treiber multiplizieren (mit Verwendung len()) durch den 50 -Greenback -Bonus professional Fahrer. Schauen Sie sich das an Dokumentation Um zu sehen, wie Sie das verwenden können len() Funktion.
payout_opt1 = 50 * len(opt1_eligible)
print(f"Choice 1 payout: ${payout_opt1:,}")
Hier ist die Ausgabe.

# Frage 2: Berechnung der Gesamtauszahlung für Bonusoption 2
In der zweiten Frage werden wir gebeten, die Gesamtbonusausschüttung mit Choice 2 zu finden:
$ 4/Reise für alle Fahrer, die 12 Fahrten absolvieren und eine Bewertung von 4,7 oder besser haben.
// Schritt 1: Filtern Sie die Qualifikationstreiber mit SQL (Pandasql)
Zunächst verwenden wir SQL, um für Fahrer zu filtern, die die Kriterien für die Choice 2 erfüllen: mindestens 12 Fahrten und eine Bewertung von 4,7 oder höher aufrechterhalten.
# Seize solely the rows that fulfill the Choice-2 thresholds
opt2_drivers = run("""
SELECT Identify,
`Journeys Accomplished`
FROM df
WHERE `Journeys Accomplished` >= 12
AND Score >= 4.7;
""")
opt2_drivers.head()
Folgendes bekommen wir.

// Schritt 2: Beenden Sie die Berechnung in reinen Pandas
Führen Sie nun die Berechnung mit Pandas durch. Der Code berechnet den Gesamtbonus, indem er die summiert Journeys Accomplished Spalte mit sum() und dann das Ergebnis mit dem 4 -Greenback -Bonus professional Reise multiplizieren.
total_trips = opt2_drivers("Journeys Accomplished").sum()
option2_bonus = 4 * total_trips
print(f"Complete journeys: {total_trips}, Choice-2 payout: ${option2_bonus}")
Hier ist das Ergebnis.

# Frage 3: Identifizieren von Treibern, die sich für Choice 1 qualifizieren, jedoch nicht für Choice 2
In der dritten Frage werden wir gebeten, die Anzahl der Fahrer zu zählen, die sich für Choice 1, nicht jedoch für Choice 2 qualifizieren.
// Schritt 1: Erstellen von zwei Berechtigungstabellen mit SQL (Pandasql)
Im folgenden SQL -Code erstellen wir zwei Datensätze: eine für Treiber, die die Kriterien für die Choice 1 erfüllen, und eine für diejenigen, die die Kriterien für Choice 2 erfüllen.
# All Choice-1 drivers
opt1_drivers = run("""
SELECT Identify
FROM df
WHERE `Provide Hours` >= 8
AND `Journeys Accomplished` >= 10
AND `Settle for Price` >= 90
AND Score >= 4.7;
""")
# All Choice-2 drivers
opt2_drivers = run("""
SELECT Identify
FROM df
WHERE `Journeys Accomplished` >= 12
AND Score >= 4.7;
""")
// Schritt 2: Verwenden von Python -Logik, um den Unterschied zu erkennen
Als Nächst Operationen dafür.
Hier ist der Code:
only_opt1 = set(opt1_drivers("Identify")) - set(opt2_drivers("Identify"))
count_only_opt1 = len(only_opt1)
print(f"Drivers qualifying for Choice 1 however not Choice 2: {count_only_opt1}")
Hier ist die Ausgabe.

Durch die Kombination dieser Methoden nutzen wir SQL für die Filterung und Python -Set -Logik für den Vergleich der resultierenden Datensätze.
# Frage 4: Treiber mit geringem Efficiency mit hohen Bewertungen finden
In Frage 4 werden wir gebeten, den Prozentsatz der Fahrer zu ermitteln, die weniger als 10 Fahrten absolviert haben, eine Akzeptanzrate von unter 90percenthatten und immer noch eine Bewertung von 4,7 oder mehr beibehalten haben.
// Schritt 1: Ziehen Sie die Teilmenge mit SQL (Pandasql)
Im folgenden Code wählen wir alle Treiber aus, die weniger als 10 Fahrten absolviert haben, eine Akzeptanzrate von weniger als 90percenthaben und eine Bewertung von mindestens 4,7 halten.
low_kpi_df = run("""
SELECT *
FROM df
WHERE `Journeys Accomplished` < 10
AND `Settle for Price` < 90
AND Score >= 4.7;
""")
low_kpi_df
Hier ist die Ausgabe.

// Schritt 2: Berechnung des Prozentsatzes in einfachen Pandas
In diesem Schritt werden wir Python verwenden, um den Prozentsatz solcher Treiber zu berechnen.
Wir teilen einfach die Anzahl der gefilterten Treiber durch die Gesamtzahl der Treiber und multiplizieren Sie sie mit 100, um den Prozentsatz zu erhalten.
Hier ist der Code:
num_low_kpi = len(low_kpi_df)
total_drivers = len(df)
proportion = spherical(100 * num_low_kpi / total_drivers, 2)
print(f"{num_low_kpi} out of {total_drivers} drivers ⇒ {proportion}%")
Hier ist die Ausgabe.

# Frage 5: Berechnung des Jahresgewinns ohne Partnerschaft mit Uber
In der fünften Frage müssen wir das Jahreseinkommen eines Taxifahrers berechnen, ohne mit Uber zusammenzuarbeiten, basierend auf den angegebenen Kosten- und Umsatzparametern.
// Schritt 1: Jährliche Einnahmen und Ausgaben mit SQL (Pandasql) ziehen
Durch die Verwendung von SQL berechnen wir zunächst die jährlichen Einnahmen aus den täglichen Tarifen und subtrahieren die Kosten für Gasoline, Miete und Versicherung.
taxi_stats = run("""
SELECT
200*6*(52-3) AS annual_revenue,
((200+500)*(52-3) + 400*12) AS annual_expenses
""")
taxi_stats
Hier ist die Ausgabe.

// Schritt 2: Gewinn und Marge mit Pandas abgeben
Im nächsten Schritt werden wir Python verwenden, um den Gewinn zu berechnen und die Fahrer zu beziehen, wenn sie nicht mit Uber zusammenarbeiten.
rev = taxi_stats.loc(0, "annual_revenue")
price = taxi_stats.loc(0, "annual_expenses")
revenue = rev - price
margin = spherical(100 * revenue / rev, 2)
print(f"Income : ${rev:,}")
print(f"Bills : ${price:,}")
print(f"Revenue : ${revenue:,} (margin: {margin}%)")
Folgendes bekommen wir.

# Frage 6: Berechnung der erforderlichen Fahrpreiserhöhung, um die Rentabilität aufrechtzuerhalten
In der sechsten Frage gehen wir davon aus, dass derselbe Fahrer beschließt, ein Stadtauto zu kaufen und mit Uber zusammenzuarbeiten.
Die Gaskosten steigen um 5%, die Versicherung sinkt um 20percentund die Mietkosten werden beseitigt, der Fahrer muss jedoch die 40.000 -Greenback -Kosten für das Auto decken. Wir werden gebeten, zu berechnen, wie viel die wöchentlichen Brutto -Tarife dieses Fahrers im ersten Jahr erhöhen müssen, um das Auto sowohl zu zahlen als auch die gleiche jährliche Gewinnspanne aufrechtzuerhalten.
// Schritt 1: Erstellen des neuen Einjahresausgabenstapels mit SQL
In diesem Schritt werden wir SQL verwenden, um die neuen Einjahreskosten mit bereinigtem Gasoline und Versicherungen und ohne Mietgebühren zuzüglich der Autokosten zu berechnen.
new_exp = run("""
SELECT
40000 AS automobile,
200*1.05*(52-3) AS fuel, -- +5 %
400*0.80*12 AS insurance coverage -- –20 %
""")
new_cost = new_exp.sum(axis=1).iloc(0)
new_cost
Hier ist die Ausgabe.

// Schritt 2: Berechnung der wöchentlichen Fahrpreissteigerung mit Pandas
Als nächstes verwenden wir Python, um zu berechnen, wie viel mehr der Fahrer professional Woche verdienen muss, um diese Marge nach dem Kauf des Autos zu bewahren.
# Current values from Query 5
old_rev = 58800
old_profit = 19700
old_margin = old_profit / old_rev
weeks = 49
# new_cost was calculated within the earlier step (54130.0)
# We have to discover the brand new income (new_rev) such that the revenue margin stays the identical:
# (new_rev - new_cost) / new_rev = old_margin
# Fixing for new_rev provides: new_rev = new_cost / (1 - old_margin)
new_rev_required = new_cost / (1 - old_margin)
# The entire improve in annual income wanted is the distinction
total_increase = new_rev_required - old_rev
# Divide by the variety of working weeks to get the required weekly improve
weekly_bump = spherical(total_increase / weeks, 2)
print(f"Required weekly gross-fare improve = ${weekly_bump}")
Folgendes bekommen wir.

# Abschluss
Die Stärken von SQL und Python zusammenbringen, vor allem durch pandasqlWir haben sechs verschiedene Probleme gelöst.
SQL hilft bei der schnellen Filterung und Zusammenfassung strukturierter Datensätze, während Python in fortschrittlicher Berechnung und dynamischer Manipulation intestine ist.
Während dieser Analyse haben wir beide Instruments genutzt, um den Workflow zu vereinfachen und jeden Schritt interpretierbarer zu gestalten.
Nate Rosidi ist Datenwissenschaftler und in Produktstrategie. Er ist außerdem eine zusätzliche Professorin für Lehranalysen und Gründer von Stratascratch, einer Plattform, die Datenwissenschaftlern hilft, sich auf ihre Interviews mit echten Interviewfragen von High -Unternehmen vorzubereiten. Nate schreibt über die neuesten Developments auf dem Karrieremarkt, gibt Interviewberatung, teilt Datenwissenschaftsprojekte und deckt alles SQL ab.
