Öffentlichkeit – chatgpz.de – KI-Tools & Praxiswissen https://chatgpz.de Unabhängige Tests, Anleitungen und Hintergründe zu KI-Tools. Sat, 20 Dec 2025 18:38:11 +0000 de-DE hourly 1 https://wordpress.org/?v=6.4.2 234900186 EDA in der Öffentlichkeit (Teil 2): ​​Produkt-Deep Dive und Zeitreihenanalyse in Pandas https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-2-produkt-deep-dive-und-zeitreihenanalyse-in-pandas/ https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-2-produkt-deep-dive-und-zeitreihenanalyse-in-pandas/#respond Sat, 20 Dec 2025 18:38:11 +0000 https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-2-produkt-deep-dive-und-zeitreihenanalyse-in-pandas/ [ad_1]

! Willkommen zurück zur Reihe „EDA in Public“! Dies ist Teil 2 der Serie; Wenn Sie Teil 1 noch nicht gesehen haben, lesen Sie ihn Hier. Hier ist eine Zusammenfassung dessen, was wir erobert haben.

In Teil 1 haben wir eine unordentliche Verkaufsdatei mit einer halben Million Zeilen genommen und sie in Kind gebracht. Im Einzelnen:

  • Die Daten wurden zur schnelleren Verarbeitung abgetastet.
  • Fehlende Werte und standardisierte Texteinträge (wie „EIRE“ bis „Irland“) behoben.
  • Den ganzen Lärm herausgefiltert – Rückgaben, Stornierungen und Transaktionen zum Nullpreis.
  • Wir haben unser wichtigstes Merkmal entwickelt: Die Income Spalte.
  • Wir haben unsere ersten geschäftlichen Erkenntnisse gewonnen: die Die 10 umsatzstärksten Länder.

Wir haben jetzt einen sauberen, umsatzbereiten Pandas DataFrame, der für Erkenntnisse genutzt werden kann! Am Ende dieser Serie möchte ich die explorative Datenanalyse mit Pandas beherrschen. Wenn Sie ein Datenbegeisterter sind, können Sie gerne mitmachen.

Jetzt verlagern wir unseren Fokus auf die Bereitstellung wirklich wirkungsvoller Enterprise Intelligence für NovaShop. Unser übergeordnetes Ziel für Teil 2 ist es, die grundlegenden Fragen zu beantworten: Was Produkte sind die leistungsstärksten, Und Wann ist der beste Zeitpunkt, sie zu verkaufen?

In diesem Teil geht es um die Analyse mithilfe leistungsstarker Pandas-Aggregationstechniken (.groupby()) und Characteristic-Engineering mithilfe der Datetime-Spalte (.dt Accessor). Wir werden unsere Analyse in zwei Schlüsselbereiche unterteilen:

  • Produkt-Deep-Dive: Identifizieren der Produkte, die die meisten Einheiten bewegen, im Vergleich zu denen, die das meiste Geld einbringen.
  • Verkaufs-Timing (Zeitreihe): Aufdecken der Saisonalität der Verkäufe (monatliche Spitzenwerte) und der betrieblichen Traits (geschäftigste Stunde des Tages).

Kommen wir ohne weitere Umschweife zur Sache.

Laden der sauberen Daten

Um die Leistung zu verbessern, exportieren wir unseren bereinigten Datensatz und importieren ihn erneut zur Analyse

df.to_csv('online_retail_clean.csv', index=False)

Jetzt kann ich ein neues Projekt erstellen und von vorne beginnen.

Beim Laden von CSVs, die Datumsspalten enthalten, versuche ich, die zu verwenden parse_dates Argument in pd.read_csv(). Dies erspart mir den Schritt der späteren manuellen Konvertierung des Spaltentyps und stellt sicher, dass die Datumsmerkmale von Anfang an korrekt sind.

import pandas as pd
df = pd.read_csv('online_retail_clean.csv', parse_dates=('InvoiceDate'))
print(f"Efficiently loaded clear knowledge. Complete rows: {len(df)}")

Ausgabe:

Efficiently loaded clear knowledge. Complete rows: 52933

Produkt-Deep-Dive: Wer sind die wahren Geldverdiener?

Nachdem die sauberen Daten geladen sind, können wir direkt mit der Produktleistung beginnen. Produkte können auf zwei verschiedene Arten als „Bestseller“ betrachtet werden: nach Volumen (verkaufte Einheiten) oder nach Wert (generierter Umsatz).

Einblick 2: Prime 10 Bestseller (nach Menge)

Die Mengenliste verrät uns, welche Produkte beliebt und stark nachgefragt sind, auch wenn ihr Preis niedrig ist. Dies ist wichtig für die Lagerbestückung und Bestandsverwaltung.

Wir gruppieren nach dem Produkt Descriptionsummieren Sie die Amountund sortieren Sie es absteigend.

# Prime 10 Bestsellers (by Amount)
df.groupby(‘Description’)(‘Amount’).sum().sort_values(ascending=False).head(10)

Ausgabe:

Description
MEDIUM CERAMIC TOP STORAGE JAR 74698
WORLD WAR 2 GLIDERS ASSTD DESIGNS 9419
GIN + TONIC DIET METAL SIGN 5016
ASSORTED COLOURS SILK FAN 4684
JUMBO BAG RED RETROSPOT 4671
PACK OF 72 RETROSPOT CAKE CASES 3561
MINI PAINT SET VINTAGE 3285
ASSORTED COLOUR BIRD ORNAMENT 2783
BROCADE RING PURSE 2525
POPCORN HOLDER 2508
Identify: Amount, dtype: int64

Einblick 3: Die 10 wichtigsten Umsatztreiber (die wahren Geldverdiener)

Das ist es, was NovaShop wirklich wissen möchte. Diese Produkte steigern die Rentabilität. Sie verkaufen möglicherweise nicht so viele Einheiten wie die Artikel in der vorherigen Liste, aber ihr höherer Preis oder größere Großbestellungen machen sie weitaus wertvoller.

Wir folgen dem gleichen Prozess, aber dieses Mal aggregieren wir auf der Income Spalte, die wir in Teil 1 entwickelt haben.

# Prime 10 Income Drivers (The True Cash-Makers)
df.groupby(‘Description’)(‘Income’).sum().sort_values(ascending=False).head(10)

Ausgabe:

Description
MEDIUM CERAMIC TOP STORAGE JAR 77785.74
DOTCOM POSTAGE 18456.13
REGENCY CAKESTAND 3 TIER 15093.38
AMAZON FEE 13541.33
PARTY BUNTING 9491.60
GIN + TONIC DIET METAL SIGN 9480.51
JUMBO BAG RED RETROSPOT 8996.65
Guide 8966.96
CHILLI LIGHTS 8395.20
POSTAGE 7194.51
Identify: Income, dtype: float64

Diskussion: Was diese Pay attention NovaShop sagen

Hier zeigt sich die Stärke von EDA wirklich, denn diese beiden Pay attention erzählen eine ganz unterschiedliche Geschichte:

  • Das All-Star-Produkt: Der „MITTLERES AUFBEWAHRUNGSGLAS AUS KERAMIK“ ist eindeutig der Gewinner und dominiert beide Pay attention mit großem Abstand. Es ist ein hohes Volumen und ein hoher Wert. Dieser Artikel sollte der Hauptschwerpunkt von NovaShop für Inventar, Advertising und Growth sein.
  • Eine überraschende Einnahmequelle: Beim Durchsuchen der Daten fielen mir Elemente wie auf „DOTCOM-PORTO“, „AMAZON-GEBÜHR“, „Handbuch“, Und „PORTO.“ Dabei handelt es sich nicht um echte Produkte, sondern um Servicegebühren und manuelle Anpassungen. Doch zusammen bringen sie quick ein 48.000 £ an Einnahmen. NovaShop sollte noch einmal prüfen, ob diese Gebühren in seinem Bruttogewinn berücksichtigt werden. Es ist leicht zu übersehen, aber es könnte eine stille und sinnvolle Einnahmequelle sein, die sich im Verborgenen versteckt.
  • Die hochwertigen physischen Güter: Artikel wie die „REGENCY KUCHENSTAND, 3-STOCKIG“ Und „CHILLI-LICHTER“ Erstellen Sie die Umsatzliste, aber nicht die Mengenliste. Dies zeigt uns, dass es sich um hochpreisige Artikel handelt, die erheblich zum gesamten Cashflow beitragen und gezielte Marketingmaßnahmen wert sind.

Wir haben jetzt ein vollständiges Bild davon, was NovaShop am besten verkauft. Zeit herauszufinden, wann!

Vorbereitung auf die Zeitreihenanalyse: Characteristic Engineering

Wir wissen, was sich intestine verkauft hat. Lassen Sie uns nun herausfinden, wann der Umsatz seinen Höhepunkt erreicht. Unser Ziel ist es, das aufzubrechen InvoiceDate Spalte in Komponenten, die es uns ermöglichen, Verkäufe nach Jahr, Monat, Tag und sogar Stunde zu gruppieren und zu analysieren.

Dies ist ein klassischer Characteristic-Engineering-Schritt. Da wir uns bereits vergewissert haben InvoiceDate ist ein richtiger Pandas datetime Objekt (Danke an parse_dates in unserem Ladeschritt!), können wir das äußerst nützlich nutzen .dt Zugriffsberechtigter.

Extrahieren von Zeitkomponenten

Um die Saisonalität (monatlich) und die betriebliche Effizienz (stündlich) zu verstehen, erstellen wir vier neue Spalten.

  • Jahr – Für langfristige Vergleiche
  • Monat – Zur Identifizierung saisonaler Spitzen (z. B. Ansturm im 4. Quartal).
  • DayName – Um den geschäftigsten Tag der Woche zu finden.
  • Stunde – Zur Ermittlung der Spitzenbetriebszeiten.

Lassen Sie uns diese Spalten generieren:

print(“n — — Time Sequence Characteristic Extraction — -”)

# Extract 12 months, Month, DayName, and Hour from the InvoiceDate column
df(‘12 months’) = df(‘InvoiceDate’).dt.12 months
df(‘Month’) = df(‘InvoiceDate’).dt.month
df(‘DayName’) = df(‘InvoiceDate’).dt.day_name()
df(‘Hour’) = df(‘InvoiceDate’).dt.hour
print(“New time options added: 12 months, Month, DayName, Hour.”)
print(df((‘InvoiceDate’, ‘12 months’, ‘Month’, ‘DayName’, ‘Hour’)).head())

Ausgabe:

--- Time Sequence Characteristic Extraction ---
New time options added: 12 months, Month, DayName, Hour.
InvoiceDate 12 months Month DayName Hour
0 2011-06-01 12:05:00 2011 6 Wednesday 12
1 2011-05-27 17:14:00 2011 5 Friday 17
2 2011-04-21 17:05:00 2011 4 Thursday 17
3 2011-11-16 10:39:00 2011 11 Wednesday 10
4 2011-03-10 08:40:00 2011 3 Thursday 8

Perfekt! Im nächsten Abschnitt können wir direkt mit der Kartierung der Verkaufsmuster fortfahren.

Kartierung von Verkaufsmustern (Zeitreiheneinblicke)

Da unsere Zeitfunktionen bereit sind, können wir nun unsere Fragen dazu stellen und beantworten, wann Verkäufe stattfinden. Wir fangen groß an (monatliche Traits) und gehen im kleinen Schritt weiter (stündliche Traits).

Einblick 4: Verkaufstrends nach Monat (Saisonalität)

Für die Erkennung ist die monatliche Aggregation von entscheidender Bedeutung Saisonalität– das vorhersehbare Umsatzmuster, das sich jedes Jahr wiederholt. Diese Daten werden für Finanzprognosen und die Planung der Lagerbestände für die Hochsaison verwendet.

Wir werden nach dem gruppieren Month Spalte und berechnen Sie jeweils den Gesamtumsatz.

print(“n — — Perception 4: Gross sales Traits by Month (Seasonality) — -”)
# Group by month and sum the income
monthly_revenue = df.groupby(‘Month’)(‘Income’).sum().sort_values(ascending=False)
# Print the outcomes, which ought to present the seasonal peaks
print(monthly_revenue)

Ausgabe:

--- Perception 4: Gross sales Traits by Month (Seasonality) ---
Month
11 143576.360
1 142013.420
12 133178.980
10 119533.540
9 103929.420
3 72968.270
8 71302.890
5 70424.510
6 68722.520
7 68713.831
4 51882.010
2 50178.730
Identify: Income, dtype: float64

Interpretation: Die gewaltige This autumn- und Januar-Überraschung

Die Daten zeigen deutlich, dass die Umsätze von NovaShop stark zum Jahresende tendieren, was den typischen Einzelhandel bestätigt This autumn (Oktober, November, Dezember) Ansturm .

  • Hauptsaison: Der November ist mit geringem Abstand der Spitzenmonat, dicht gefolgt vom Dezember. Jetzt ist es an der Zeit, sich einzudecken Mittelgroße Vorratsdosen aus Keramik mit Deckel und gezielte Werbung schalten.
  • Der Januar-Anstieg: Der zweithöchste Monat ist der Januar! Das ist ein hervorragender Einblick für NovaShop. Es deutet darauf hin, dass Kunden möglicherweise Weihnachtsgeschenkgeld verwenden oder die Sonderangebote nach den Feiertagen nutzen. Dieser Zeitraum sollte nicht als Einbruch betrachtet werden, sondern als sekundäre Probability für großvolumige Verkäufe.
  • Nebensaison:Februar und April sind die leistungsschwächsten Monate, was NovaShop dabei hilft, in diesen Zeiträumen geringere Private- und Marketingbudgets einzuplanen.

Einblick 5: Verkaufstrends nach Wochentag und Stunde (Betriebsplanung)

Während es bei der Saisonalität um Finanzen und Lagerbestände geht, geht es um tägliche und stündliche Traits Operationen. NovaShop kann damit Lagerpersonal planen, Werbeausgaben optimieren und E-Mail-Kampagnen zeitlich planen.
Wir führen hier zwei separate Aggregationen durch: eine für den Wochentag und eine für die Stunde des Tages.

Umsatz nach Wochentag

# 1. Gross sales by Day of Week
daily_revenue = df.groupby(‘DayName’)(‘Income’).sum()
print(“n — — Income by Day of Week — -”)
print(daily_revenue)

Ausgabe:

--- Income by Day of Week ---
DayName
Friday 163861.320
Monday 171026.230
Sunday 83125.890
Thursday 219342.980
Tuesday 282796.741
Wednesday 176271.320
Identify: Income, dtype: float64

Interpretation: Dienstag ist der Tag der Macht

Die Daten zeigen ein klares und umsetzbares Muster für die Arbeitswoche:

  • Spitzenverkäufe : Dienstag dominiert die Woche absolut und generiert quick 30 % mehr Umsatz als der nächstgrößte Tag, der Donnerstag. Dies ist ein idealer Tag für die Einführung neuer Produkte oder die Durchführung wirkungsvoller Flash-Gross sales.
  • Tage des Einbruchs: Es überrascht nicht, dass die Verkäufe dramatisch zurückgehen Sonntag. NovaShop könnte dies als einen Tag mit niedriger Priorität für E-Mail-Advertising oder die Personalbesetzung im Kundenservice betrachten.
  • Vermisster Tag: Der Datensatz enthält keine Transaktionen für Samstag in unserem Beispiel (oder vielleicht der vollständige Satz, der in B2B-Datensätzen üblich ist).

Umsatz nach Tagesstunden

# 2. Gross sales by Hour of Day
hourly_revenue = df.groupby(‘Hour’)(‘Income’).sum().sort_index()
print(“n — — Income by Hour of Day — -”)
print(hourly_revenue)

Ausgabe:

--- Income by Hour of Day ---
Hour
7 2830.910
8 26597.800
9 76768.750
10 209809.971
11 115233.600
12 142474.460
13 130348.290
14 119241.520
15 145178.980
16 70620.550
17 36148.030
18 14022.790
19 4397.130
20 2751.700

Interpretation: Der Late-Morning-Growth

Die stündlichen Daten weisen direkt auf den betrieblichen Bedarf hin:

  • Massiver Gipfel: Um 10 Uhr morgens (Stunde 10) explodieren die Verkäufe und generieren quick das Doppelte des Umsatzes der nächsten Stunden. Dies ist der optimale Zeitpunkt für NovaShop, E-Mail-Advertising- und Social-Media-Kampagnen zu starten.
  • Nachhaltige Aktivität: Von 11:00 bis 15:00 Uhr bleiben die Verkäufe hoch, was auf ein starkes Einkaufsfenster am Mittag und nach der Mittagszeit schließen lässt.
  • Ende des Tages:Nach 16:00 Uhr lässt die Aktivität stark nach, und am Abend (ab 19:00 Uhr) werden nur noch sehr geringe Einnahmen erzielt. Dies deutet darauf hin, dass der Kundenstamm von NovaShop hauptsächlich am Schreibtisch tätig ist und während der üblichen Arbeitszeiten einkauft.

Fazit: Die Voraussetzungen für die Kundensegmentierung schaffen

Wir haben die Hochleistungs-EDA offiziell abgeschlossen! Wir wissen, was sich am besten verkauft (das Keramikglas und die Gebühren), wo die Verkäufe am stärksten sind (Großbritannien) und wann die Verkaufsspitzen auftreten (4. Quartal, dienstags und 10 Uhr).

Allerdings fehlt uns noch das wertvollste Puzzleteil: Die WHO. Die besten Unternehmen wissen nicht nur, was sich verkauft; Sie wissen, wer ihre wertvollsten Kunden sind und wie sie sie halten können.

In Teil 3 werden wir uns mit der fortschrittlichsten Analysetechnik dieser Serie befassen: RFM (Recency, Frequency, Financial)-Kundensegmentierung. Dies wird es uns ermöglichen, Kunden in Stufen wie „Champions“, „Treuekunden“ und „Gefährdete Kunden“ einzuteilen, was NovaShop eine echte Roadmap für personalisiertes Advertising bietet.

Ich hoffe, Sie fanden diesen Artikel hilfreich. Sagen Sie mir gerne auf einer dieser Plattformen Hallo. Ich freue mich sehr über Ihr Suggestions.

Medium

LinkedIn

Twitter

YouTube

[ad_2]

]]>
https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-2-produkt-deep-dive-und-zeitreihenanalyse-in-pandas/feed/ 0 14987
EDA in der Öffentlichkeit (Teil 1): Bereinigen und Erkunden von Verkaufsdaten mit Pandas https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-1-bereinigen-und-erkunden-von-verkaufsdaten-mit-pandas/ https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-1-bereinigen-und-erkunden-von-verkaufsdaten-mit-pandas/#respond Fri, 12 Dec 2025 14:11:05 +0000 https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-1-bereinigen-und-erkunden-von-verkaufsdaten-mit-pandas/ [ad_1]

! Willkommen am Beginn einer großen Datenreise, die ich „EDA in Public“ nenne. Für diejenigen, die mich kennen: Ich glaube, der beste Weg, etwas zu lernen, besteht darin, ein reales Downside anzugehen und den gesamten chaotischen Prozess zu teilen – einschließlich Fehlern, Siegen und allem, was dazwischen liegt. Wenn Sie Ihre Pandas- und Datenanalysefähigkeiten verbessern möchten, ist dies die richtige Serie für Sie.

Wir werden als Datenanalysten für ein fiktives, mittelgroßes E-Commerce-Unternehmen fungieren, das ich nenne NovaShop. Sie reichten uns eine rohe, unübersichtliche Vertriebs-CSV-Datei und stellten eine einfache Frage: „Wie geht es uns?“

Das Ziel von Teil 1 ist von grundlegender Bedeutung: Wir bereinigen diesen anspruchsvollen E-Commerce-Datensatz, erforschen seine Grundstruktur und erlernen die EDA-Kernkompetenzen in Pandas, die jeder Datenwissenschaftler täglich nutzt. Diese Serie ist so strukturiert, dass sie Sie von a Anfänger (Teil 1) zu einem fortschrittlich Datenanalyst (Teil 3), Sie können additionally jederzeit einsteigen, wo immer Sie sich gerade befinden.

Bevor wir uns mit dem Code befassen, wollen wir unsere Kernmotivation festlegen. Für NovaShop müssen wir einige einfache, aber wirkungsvolle Fragen beantworten: Welche Produkte generieren den meisten Umsatz? Welche Länder generieren die meisten Umsätze? Finden wir es heraus.

Datensatzübersicht: Auspacken der Verkaufsdaten

Um unsere Analyse für NovaShop zu starten, verwenden wir die UCI On-line-Einzelhandelsdatensatz. Hierbei handelt es sich um einen großartigen, äußerst realistischen, nicht optimierten Datensatz, der alle Transaktionen eines in Großbritannien ansässigen On-line-Einzelhandelsunternehmens außerhalb von Filialen zwischen Ende 2010 und Ende 2011 erfasst.

Dieser Datensatz ist lizenziert unter a Artistic Commons Namensnennung 4.0 Worldwide (CC BY 4.0) Lizenz.

Dies ermöglicht die gemeinsame Nutzung und Anpassung der Datensätze für jeden Zweck, sofern die entsprechende Quellenangabe erfolgt.

Der Datensatz enthält über eine halbe Million Zeilen und ist voller Anomalien, die auch in der realen Welt vorkommen – fehlende Werte, destructive Zahlen und inkonsistente Textformatierung. Genau das wollen wir!

Hier sind die acht Schlüsselspalten, mit denen wir arbeiten werden, und was sie uns aus geschäftlicher Sicht sagen:

  • Rechnungsnr.: Das ist das Rechnungsnummer. Jeder Transaktion wird eine eindeutige 6-stellige Nummer zugewiesen. Wenn der Code mit „C“ beginnt, bedeutet dies a Stornierung (eine Rückkehr).
  • StockCode/Produktcode: Ein eindeutiger 5-stelliger Code, der jedem einzelnen Produkt zugewiesen ist.
  • Beschreibung: Der Identify des Components. Dies erfordert häufig eine Reinigung (zusätzliche Räume, inkonsistente Gehäuse).
  • Menge: Anzahl der gekauften Artikel. Wie viele Einheiten waren professional Transaktion beteiligt? Kann sein Negativ für Rücksendungen.
  • Rechnungsdatum: Datum und Uhrzeit der Transaktion. Dies ist für die spätere Zeitreihenanalyse von wesentlicher Bedeutung.
  • Stückpreis: Produktpreis professional Einheit in Pfund Sterling (GBP). Der Preis eines Artikels. Aufgrund von Fehlern/freien Artikeln kann es manchmal 0 oder negativ sein.
  • KundenID: Jedem registrierten Kunden wird eine eindeutige 5-stellige Nummer zugewiesen. Entscheidend ist, dass dies oft fehlt, was bedeutet, dass wir viele Transaktionen von Gästen haben.
  • Land: Identify des Landes, in dem der Kunde seinen Wohnsitz hat. Dies wäre großartig für die Segmentierung des internationalen Vertriebs.

Werfen wir einen kurzen Blick auf die ersten Zeilen, um zu sehen, womit wir es zu tun haben. Dies ist die Ausgabe von df.head():

Lassen Sie uns den Datensatz in Pandas importieren und sehen, mit wie vielen Zeilen wir es zu tun haben.

import pandas as pd
import numpy as np
df = pd.read_csv(‘On-line Retail.csv’)
df.form

Ausgabe:

(541909, 8)

Das sind ziemlich viele Reihen. Möglicherweise muss ich die Zeilen etwas zerschneiden.

Laden und Schneiden von Daten: Umgang mit Volumen

Für Teil 1 nehmen wir eine 10 % Zufallsstichprobe des vollständigen Datensatzes. Dadurch erhalten wir eine wesentlich überschaubarere Größe – etwa 54.000 Zeilen – und behalten gleichzeitig die Eigenschaften der Originaldaten bei. Dies ist eine gängige und praktische Technik beim Umgang mit Massive-Knowledge-Umgebungen oder beim Fokussieren auf Prototyping.

# Knowledge Loading and Slicing
FILE_PATH = ‘On-line Retail.csv’
SAMPLE_FRACTION = 0.1 # We'll pattern 10% of the information
full_df = pd.read_csv(FILE_PATH, encoding=’unicode_escape’)

# Take a random 10% pattern for sooner processing in Half 1
df = full_df.pattern(frac=SAMPLE_FRACTION, random_state=42).reset_index(drop=True)

Schauen wir uns nun die Kind noch einmal mit an df.form

Ausgabe:

(54191, 8)

Perfekt! Jetzt können wir beginnen.

Erste Dateninspektion: Wir machen uns die Hände schmutzig

Mein erster Schritt wird darin bestehen, herauszufinden, was wir reinigen. Ich muss diese Fragen beantworten

  • Was enthält der Datensatz?
  • Welche Datentypen und Nicht-Null-Zählungen gibt es?
  • Wie sehen die Zahlen aus?

Visuelle Prüfung: df.head() und df.tail()

Wenn ich mir die ersten und letzten paar Zeilen anschaue, kann ich ein paar Dinge bestätigen:

  • Stornierungen und Rücksendungen: Einige sind mir zufällig aufgefallen InvoiceNo Werte beginnend mit ‚C‘und das entsprechende Amount ist negativ. Dies bestätigt, dass Retouren enthalten sind, und für die Umsatzanalyse muss ich sie trennen oder ausschließen.
  • Fehlen: Ich konnte visuell sehen NaN Werte in der CustomerID Spalte, die die Masse der Gasttransaktionen bestätigt.
  • Inkonsistenter Textual content: Ich habe die Spalte „Beschreibung“ auf Leerzeichen überprüft. Anhand der kleinen Stichprobe, die ich erhalten habe, konnte ich es nicht wirklich sagen. Aber es schadet nicht, sie anzusprechen, wenn ich mich mit der Datenbereinigung befasse. Ich könnte auch die Groß- und Kleinschreibung konsistent halten. Es ist immer die beste Vorgehensweise Entfernen Sie alle führenden/nachgestellten Leerzeichen aus allen String-Spalten, um subtile Fehler beim Gruppieren zu vermeiden.
  • Mir sind auch einige Inkonsistenzen bei der Groß- und Kleinschreibung in der Spalte „Land“ aufgefallen. Ich habe ein Land namens EIRE entdeckt. Das bedeutet wahrscheinlich, dass Irland das möglicherweise ändern muss.

Was sind die Datentypen und Nicht-Null-Zählungen? (.data())

Der nächste wesentliche Schritt besteht darin, die Struktur anhand des zu überprüfen .data() Verfahren. Dies verrät mir den Datentyp jeder Spalte und, was am wichtigsten ist, wie viele Nicht-Null-Werte (nicht fehlende) wir haben.

Wichtigste Erkenntnisse

  • Fehlende Werte: Nachdem ich unsere 10 %-Stichprobe genommen hatte, konnte ich eine riesige Lücke erkennen CustomerID. Etwa 25 % der Kunden-IDs fehlen. Mir sind auch ein paar hundert fehlende Werte aufgefallen Description das muss ich ansprechen.
  • Datentypen: Der InvoiceDate Spalte wird immer noch als aufgeführt object (String-)Typ. Muss das in einen richtigen Pandas umwandeln datetime Objekt.CustomerID ist derzeit auch ein schwebenwahrscheinlich weil es diese enthält NaN Werte! Dies ist ein kleines Element, das ich mir merken muss, wenn ich es jemals als echte Integer-ID verwenden möchte.

Wie sehen die Zahlen aus? (.describe())

Als nächstes habe ich verwendet .describe() um eine schnelle statistische Zusammenfassung aller numerischen Spalten zu erhalten (Amount Und UnitPrice).

  • Menge (Amount): Die Mindestmenge beträgt -2472. Dies bestätigt, dass es Renditen gibt, aber die Höhe dieser Mindestpunkte deutet auf eine excessive Ausreißertransaktion hin. Für eine grundlegende Verkaufsanalyse muss ich möglicherweise diese negativen Zahlen und möglicherweise die extremen positiven und negativen Ausreißer herausfiltern.
  • Stückpreis (UnitPrice): Der Mindestpreis beträgt 0. Dies bedeutet, dass einige Produkte kostenlos verschenkt wurden oder Platzhaltereinträge sind. Da ein Produkt bei einem normalen Verkauf einen positiven Preis haben sollte, werden alle Zeilen herausgefiltert, in denen UnitPrice Null oder weniger ist immer die beste Methode zur genauen Berechnung des Umsatzes.

Basierend auf diesen durchgeführten Schnellinspektionen. Diese Daten sind alles andere als sauber. Wir haben mit massiven Fehlern, falschen Datentypen, äußerst problematischen negativen/Null-Werten in unseren numerischen Kernspalten und Textinkonsistenzen zu kämpfen.

Umgang mit fehlenden Werten

Da wir nun wissen, wo unsere Daten fehlen, können wir mit der Diskussion von Strategien für den Umgang mit Nullwerten beginnen. Mir geht es vor allem darum Description Und CustomerID.

Fehlende Beschreibungen

Der Description sagt uns, welches Produkt verkauft wurde, sodass der Verlust die Transaktion bedeutungslos macht. In unserer Stichprobe fehlen in weniger als 1 % der Zeilen Beschreibungen. Es ist sinnvoll, diese Zeilen vollständig wegzulassen, da sie für die Analyse auf Produktebene unbrauchbar sind.

# Drop rows the place the Description is lacking
df.dropna(subset=('Description'), inplace=True)
# checking for null counts
df('Description').isnull().sum()

Ausgabe:

np.int64(0)

Alles klar, perfekt! Alle Nullwerte sind weg.

Fehlende Kunden-IDs

Das Vermisste CustomerIDs (etwa 25 % unserer Stichprobe) sind eine viel größere Sache. Wenn ich sie alle weglasse, verliere ich quick ein Viertel unserer Verkaufsdaten, was NovaShop eine gefährlich verzerrte Sicht auf seinen Gesamtumsatz verschaffen wird.

Für eine einfache Umsatz- und Produktanalyse (das Ziel von Teil 1) benötige ich das nicht wirklich CustomerID. Wir können mit der Analyse für alle Zeilen fortfahren auch ohne eine ID. Wir benötigen die ID nur, wenn wir eine Kundensegmentierung (z. B. eine RFM-Analyse) planen, was ich mir für Teil 2 aufhebe!

Datentypkonvertierung und Duplikatentfernung

Nachdem wir uns nun um die fehlenden Beschreibungen gekümmert haben, beschäftigen sich die nächsten beiden unmittelbaren Probleme mit vollständig duplizierten Zeilen und der Behebung unseres wesentlichen Issues InvoiceDate Spalte.

Korrigieren des Rechnungsdatumstyps

Denken Sie daran, wie .data() zeigte InvoiceDate als Zeichenfolge (object)? Wir müssen dies sofort beheben, damit Pandas weiß, wie es unsere Daten chronologisch sortiert und aggregiert.

# Convert InvoiceDate from object (string) to datetime
df(‘InvoiceDate’) = pd.to_datetime(df(‘InvoiceDate’))

Duplikate entfernen

Wenn zwei Reihen quer identisch sind alle Spalten sind Duplikate und werden unsere Verkaufszahlen künstlich in die Höhe treiben. Lassen Sie uns nach ihnen suchen und sie entfernen.

# Take away Duplicates
num_duplicates = df.duplicated().sum()
print(f”Discovered {num_duplicates} totally duplicated rows.”)

Ausgabe:

Discovered 62 totally duplicated rows

Lassen wir sie fallen

# Take away duplicates, maintaining the primary occasion
df.drop_duplicates(inplace=True)
print(f”Dataframe dimension after eradicating duplicates: {len(df)} rows.”)

Ausgabe:

Dataframe dimension after eradicating duplicates: 53980 rows.

Retouren und Fehler herausfiltern

Unser .describe() Die Methode zeigte uns einige schwerwiegende Warnsignale: destructive Mengen (Retouren) und null/destructive Stückpreise (Fehler/freie Artikel). Für Teil 1 wollen wir rechnen Nettoerlös aus Verkäufenadditionally müssen wir dieses Rauschen herausfiltern.

Umgang mit negativen Mengen und Preisen

Wir behalten nur die Transaktionen bei, bei denen:

  • Amount ist unbedingt größer als Null (alle Rückgaben und Stornierungen werden herausgefiltert).
  • UnitPrice ist unbedingt größer als Null (Fehler und freie Artikel werden herausgefiltert).
# Filter: Maintain solely transactions the place Amount is optimistic (i.e., gross sales, not returns)
df = df(df(‘Amount’) > 0)

# Filter: Maintain solely transactions the place UnitPrice is optimistic (i.e., not free or an error)
df = df(df(‘UnitPrice’) > 0)
print(f”Dataframe dimension after filtering: {len(df)} rows.”)

Ausgabe

Dataframe dimension after filtering: 52933 rows.

Textspalten bereinigen

Lassen Sie uns abschließend die Probleme bei der Textstandardisierung angehen, die uns visuell aufgefallen sind, wie z EIRE Ländercode und etwaige versteckte Leerzeichen darin Description.

  • Leerzeichen entfernen: Wir verwenden .str.strip() um führende/nachgestellte Leerzeichen von beiden zu entfernen Description Und Nation.
  • Land standardisieren: Wir ordnen Inkonsistenzen wie „EIRE“ manuell „Irland“ zu.
# Cleansing Textual content Columns
# Clear Description and Nation columns
df(‘Description’) = df(‘Description’).str.strip()
df(‘Nation’) = df(‘Nation’).str.strip()

# Deal with particular nation title inconsistencies
# EIRE is a standard inconsistency on this dataset for Eire
df(‘Nation’).substitute(‘EIRE’, ‘Eire’, inplace=True)
print(“Textual content columns cleaned and standardized.”)

Characteristic Engineering und erste Einblicke

Die Daten sind jetzt sauber. Jetzt können wir endlich anfangen, die lustigen Fragen zu stellen. Die wichtigste Kennzahl für jeden Verkaufsdatensatz ist der Umsatz. Da unsere ursprünglichen Daten nur haben Amount Und UnitPricewir müssen das konstruieren Einnahmen Kolumne selbst.

Characteristic Engineering: Erstellen des Income Spalte

Der Umsatz einer Transaktion ist einfach die Anzahl der verkauften Artikel multipliziert mit dem Preis jedes Artikels.

df(‘Income’) = df(‘Amount’) * df(‘UnitPrice’)

Erster Einblick: Welche Länder steigern den Umsatz?

Lassen Sie uns unsere sauberen Daten verwenden, um die Frage von NovaShop zu beantworten: „Welche Länder treiben unseren Umsatz voran?“
Wir verwenden eine leistungsstarke Drei-Schritte-Kombination:

  • Gruppe durch die Nation Spalte.
  • Aggregat (Summe) die Income innerhalb jeder Gruppe.
  • Sortieren die Ergebnisse vom höchsten zum niedrigsten Umsatz.
# Group by Nation, sum the Income, and type for the highest 10
top_countries = df.groupby(‘Nation’)(‘Income’).sum().sort_values(ascending=False).head(10)
print(“n — — High 10 Nations by Income (GBP) — -”)
print(top_countries)

Ausgabe:

--- High 10 Nations by Income (GBP) ---
Nation
United Kingdom 941268.661
Netherlands 27435.830
EIRE 26066.000
France 23645.330
Germany 22389.510
Australia 12429.990
Spain 5600.900
Switzerland 5483.890
Hong Kong 3597.850
Belgium 3593.510
Identify: Income, dtype: float64

Die Ausgabe hierfür zeigt typischerweise eine large Dominanz durch Vereinigtes Königreich. Dies ist zu erwarten, da das Unternehmen seinen Sitz im Vereinigten Königreich hat. Die nächsten Länder geben uns einen schnellen Überblick darüber, wo der internationale Fokus von NovaShop liegen sollte.

Abschluss

Wir haben es geschafft. Wir haben einen Rohdatensatz mit einer halben Million Zeilen genommen, ihn aus Gründen der Verwaltbarkeit segmentiert, fehlende Werte bekämpft, Datentypen korrigiert, Fehler herausgefiltert und unsere erste wichtige Geschäftsmetrik berechnet. Die harte, grundlegende Arbeit ist erledigt.

Hier ist eine kurze Zusammenfassung dessen, was wir in Teil 1 erobert haben:

  • Datenüberprüfung: Wir haben verwendet .head(), .data()Und .describe() um entscheidende Probleme wie destructive Preise/Mengen, fehlende Kunden-IDs und das falsche Datum/Uhrzeit-Format zu identifizieren.
  • Datenbereinigung: Wir haben Nullen und Duplikate systematisch entfernt und konvertiert InvoiceDate zu einem richtigen datetime Objekt und filterte Nicht-Verkaufstransaktionen (Retouren und Gratisartikel) heraus.
  • Characteristic-Engineering: Wir haben das Kritische geschaffen Income Spalte.
  • Erster Einblick: Wir haben für NovaShop die 10 umsatzstärksten Länder erstellt und ihnen damit den ersten verwertbaren Datenpunkt aus der Gesamtmenge gegeben.

Der saubere Datensatz ist nun für eine anspruchsvollere Analyse vorbereitet. In Teil 2 werden wir tiefer eintauchen Produktanalyse und Zeitreihenzerlegung. Wir finden heraus, mit welchen Artikeln sich wirklich Geld verdienen lässt, und analysieren, wie sich das Verkaufsvolumen von Stunde zu Stunde und von Monat zu Monat verändert.

Ich freue mich darauf, weiterzumachen! Wenn Ihnen dieser Artikel gefallen hat. Teilen Sie mir dies gerne auf einem dieser Kanäle mit. Ihr Suggestions wird mir sehr viel bedeuten.

Medium

LinkedIn

Twitter

YouTube

[ad_2]

]]>
https://chatgpz.de/artificial-intelligence/eda-in-der-oeffentlichkeit-teil-1-bereinigen-und-erkunden-von-verkaufsdaten-mit-pandas/feed/ 0 14767
Daten vor der Öffentlichkeit und uns selbst schützen https://chatgpz.de/data-science/daten-vor-der-oeffentlichkeit-und-uns-selbst-schuetzen/ https://chatgpz.de/data-science/daten-vor-der-oeffentlichkeit-und-uns-selbst-schuetzen/#respond Sat, 27 Sep 2025 06:30:13 +0000 https://chatgpz.de/data-science/daten-vor-der-oeffentlichkeit-und-uns-selbst-schuetzen/ [ad_1]

Dieser Beitrag stammt von Lizzie.

Vor vielen Jahren erhielt ich eine E -Mail von einigen Ökologen, die ich noch nie getroffen hatte und die Daten aus meinem Doktortitel verwenden wollte Ich habe dir neulich von anderen Tag erzählt)? Oh herrlicher Tag! Ich und meine Sträucher waren im Sonnenlicht der Interessen anderer Forscher. Und besser als das, alle meine Daten waren bereits öffentlich, als sie nach den Daten fragten, auf die ich sie gerade hingewiesen habe ein Hyperlink und wünschte sie alles intestine. Nach einigem Hin- und Her baten sie mich, das resultierende Papier zu lesen, um sicherzustellen, dass sie die Daten von meiner Promotion nicht missbraucht oder missverstanden hatten. Ich fand das unnötig, aber ich habe es trotzdem gelesen. Ich fand nichts zu beschweren.

Ich erinnere mich nur daran, dass ich es nicht liebte, dass sie die Feldseite nannten. Dies lag zum Teil daran, dass Mojave -Wüste, wenn ich denke, wie Moonscape und ich in einem Küstenlebensraum mit mehr Vegetation gearbeitet haben (siehe Foto), aber auch, weil ich einen vollständigen Tritt hatte, mehr Leute mit Strauch als Adjektiv zu bekommen (ich battle begeistert, als ich über ‚Shruboreal Arthropoden‘ veröffentlicht wurde). Dies bringt mich zu Punkt 1, den ich heute über den Datenaustausch machen wollte.

Die Idee, dass wir alle die Leute kontaktieren sollten, die Daten erstellt haben, um sicherzustellen, dass wir sie richtig verwenden, ist falsch.

Es ist eine schöne Idee und ich möchte nicht, dass jemand glaubt, dass ich es nicht genieße, die Leute zu treffen, die Daten produziert haben, die ich verwende (oder wirklich jeder, ich schaue Filme an, um die Cern -Leute in ihren harten Hüten zu sehen, die Daten produzieren, und ich würde gerne mit diesen Leuten sprechen) oder ich merke nicht, dass viele Dinge Daten weniger einfach machen können (als ich diese ‚DeMonic Intrusions‘ nannte). Es ist so, dass die Idee zu kleinen (und häufiger weniger erstaunlichen) Wissenschaft führt. Ich denke, dies gilt insbesondere in der Ökologie, wo wir Jahrzehnte damit verbracht haben, Geschichten von dem zu teilen, was wir jeweils in unserem jeweiligen System gefunden haben (Seitenschrei an Ryan Thum, der für immer in meiner Erinnerung leben wird, wenn er im ersten Jahr meines Promotion mit mir sprach. An).

Überlegen Sie, wie groß die Wissenschaft Sie tun können, wenn Sie alle benötigen, die Daten verwenden möchten, die von jemand anderem erstellt werden, um sie zu kontaktieren. Ich analysiere definitiv keine Baumringe als Thema! (Aber rufen Sie auch allen Forschern an, die alle auf unsere Fragen zu ihren öffentlichen Daten geantwortet haben, einschließlich der Anzeige von Fotos ihrer westlichen Redcedar -Baumkerne, als wir ungläubig waren, dass sie 2 cm Wachstum in einem Jahr haben konnten). Keine globalen Analysen mehr für das IPCC! Es gibt die offensichtlichen logistischen Probleme der Bemühungen, dies zu tun (einschließlich aller toten Menschen, die Daten erstellt haben, die jetzt öffentlich sind), aber auch das Downside, was wir genau fragen würden. Als Forscher, der groß angelegte Analysen mit den Daten anderer Personen durchführt, ist es bei mir, um sicherzustellen, dass ich die Daten validiere, die Daten verstehe und alle Metadaten lesen kann. Ist dies eine Möglichkeit, diese Schritte zu überspringen und einfach eine E-Mail-Genehmigungs-Test-Marke zu erhalten? Oder gibt es so oft fehlende Informationen – dass ich im Prozess der Erstellung von Wissenschaft (Visualisierungen, Analysen usw.) irgendwie nicht finden würde, und der Forscher, der die Daten geteilt hätten, hätten die gesamte Feststellung entgleisen? Ich bezweifle es und das liegt an:

1) Die Particular person, die am wahrscheinlichsten davon profitiert, dass Sie Ihre Daten mit Metadaten veröffentlichen, sind Sie. Zukunft du. Weil Sie sich nicht an alle Particulars darüber erinnern, wie es gesammelt wurde und an welchem ​​Tag jemand die automatische Bewässerung Ihres Experiments ausgeschaltet und Ihre Pflanzen in einem Jahr oder zwei oder zehn ausgetrocknet hat.

Wie stehen Sie additionally so intestine darin, anderen dabei zu helfen, Ihre Daten in Zukunft zu verwenden?

2) Ich kenne nicht so viele Fälle, in denen die Leute es vermasseln. Und damit meine ich: Ich weiß es nicht beliebig Fälle. Wenn Sie einen guten Fall kennen, sagen Sie es mir. Und wenn Sie jemand sind, der sich darüber Sorgen machen soll, fragen Sie nach den guten Beispielen dieses Issues. Es muss einen Namen geben – den Boogeyman – für diese Tendenz derjenigen Tendenz, die sich gegen die Datenaustausch entgegennahmen, um die Risiken der Datenaustausch zu veröffentlichen, die sie selbst nie beobachtet haben. Es ist nur da draußen im Äther und so beängstigend, wie eine Camp -Geschichte, die ihnen jemand erzählt hat, dass jemand anderes ihnen von zwei Campern erzählte … die auf einen Freund warteten … nachts … auf einem dunklen Parkplatz … Boo!

Mein anderer Punkt (Punkt 2) bezieht sich auf dieses Boogeyman -Downside, was der Überzeugung ist, dass Daten vor „der Öffentlichkeit“ geschützt werden sollten. Dies battle eine neue, die ich bis vor kurzem nicht wusste, dass so viele Leute waren, und ich bin nicht sicher, wie ich es bekämpfen kann (ich bin offen für Ideen). Es scheint mir ziemlich offensichtlich, dass Daten im Allgemeinen im Sonnenlicht gedeihen.

Offene Daten sind ein wichtiger Grundsatz der Offene Regierung Bewegung, für die viele Demokratien unterschrieben haben (und muss ich das sagen? Offene Daten sind keine wichtige Politik der Autokratien), basierend auf der Realität, dass offene Daten diskriminierende Richtlinien offensichtlich machen (z. B. Redlining). Es gibt Realitäten, in denen Daten der öffentlichen Regierung missbraucht wurden, um Minderheitengruppen zu schädigen, aber am häufigsten ist das Gegenteil wahr. Geschlossene Daten erleichtern den Regierungen, Ressourcen ungleich zu verteilen und andere schändliche Aktionen zu verbergen. Ich bin nervös darüber, wie viele Menschen sich schnell in Minderheitenrechten und -bedenken berufen, um die Richtlinien der Regierung zu sichern, um Daten geschlossen zu halten – mit null Beweisen, um ihre Annahme zu stützen (gibt es einen Begriff dafür? Es sollte es geben). Sollte unsere erste Reaktion nicht sein, dass Daten offen sein sollten, ohne gute Beweise für das Gegenteil?

[ad_2]

]]>
https://chatgpz.de/data-science/daten-vor-der-oeffentlichkeit-und-uns-selbst-schuetzen/feed/ 0 12721