Was ist pandasqlWas ist pandasqlBild von Autor | Leinwand

Pandas 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

Vorteile der Verwendung von Pandas und SQL zusammenVorteile 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.

Wie fahre ich Pandasql im Jupyter -Notebook aus?Wie fahre ich Pandasql im Jupyter -Notebook aus?

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

Real-World-Projekt: Analyse von Uber-TreiberleistungsdatenReal-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:

Datenerforschung und AnalyseDatenerforschung und Analyse

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.

Datenerforschung und AnalyseDatenerforschung und Analyse

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.

Ausgabe zeigt die für Option 1 in Frage kommenden TreiberAusgabe zeigt die für Option 1 in Frage kommenden Treiber

// 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.

Beenden Sie in PandasBeenden Sie in Pandas

# 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.

Filtern Sie die qualifizierenden Treiber mit SQL (Pandasql)Filtern Sie die qualifizierenden Treiber mit SQL (Pandasql)

// 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.

Beenden Sie die Berechnung in reinen PandasBeenden Sie die Berechnung in reinen Pandas

# 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.

Verwenden Sie Python Set Logic, um den Unterschied zu erkennenVerwenden Sie Python Set Logic, um den Unterschied zu erkennen

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.

Ziehen Sie die Untergruppe mit SQL (Pandasql)Ziehen Sie die Untergruppe mit SQL (Pandasql)

// 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.

Berechnen Sie den Prozentsatz in einfachen PandasBerechnen Sie den Prozentsatz in einfachen Pandas

# 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.

Jährliche Einnahmen und jährliche Ausgaben mit SQL (Pandasql) ziehenJährliche Einnahmen und jährliche Ausgaben mit SQL (Pandasql) ziehen

// 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.

Pandas leitet Gewinn und Marge von diesen SQL -Zahlen abPandas leitet Gewinn und Marge von diesen SQL -Zahlen ab

# 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.

SQL baut den neuen Einjahresausgabenstapel aufSQL baut den neuen Einjahresausgabenstapel auf

// 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.

Pandas verwendet alte Profit-Margin & Algebra, um eine wöchentliche Beule zu findenPandas verwendet alte Profit-Margin & Algebra, um eine wöchentliche Beule zu finden

# 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.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert