Erstellen von Datenhistogrammen / Visualisierungen mit ipython und Ausfiltern einiger Werte

Ich habe eine Frage früher ( Pandas-ipython, wie man neue Daten-Frames mit Drill-Down-Fähigkeiten zu schaffen ) und es wurde darauf hingewiesen, dass es möglicherweise zu breit ist, so habe ich einige spezifischere Fragen, die leichter zu reagieren und mir helfen können Ein Start mit grafischen Daten.

Ich habe beschlossen, versuchen, einige Visualisierungen meiner Daten mit Pandas (oder ein Paket, das über ipython zugänglich ist) zu erstellen. Das erste, offensichtliche Problem, das ich hineingehe, ist, wie kann ich unter bestimmten Bedingungen filtern? Zum Beispiel tippe ich den Befehl ein:

df.Duration.hist(bins=10) 

Aber bekomme einen Fehler wegen nicht erkannter Dtypen (es gibt einige Einträge, die nicht im datetime Format sind). Wie kann ich diese im ursprünglichen Befehl ausschließen?

Auch was, wenn ich das gleiche Histogramm erstellen möchte, aber das Filtern, um nur Datensätze zu speichern, die ID haben (in einem Konto-ID-Feld) beginnend mit der Ganzzahl (oder String?) '2'?

Letztendlich möchte ich in der Lage sein, Histogramme, Zeilenplots, Kastenplots und so weiter zu erstellen, aber für bestimmte Monate zu filtern, Benutzer-IDs oder einfach nur 'Dtypen'.

Kann mir jemand helfen, den obigen Befehl zu ändern, um Filter hinzuzufügen. (Ich bin anständig mit python-neu auf Daten)

Tnx

Update: ein freundlicher Benutzer unten hat versucht, mir bei diesem Problem zu helfen. Ich habe ein paar Entwicklungen, um die Frage und ein spezielleres Problem hinzuzufügen.

Ich habe Spalten in meinem Datenrahmen für Startzeit und Endzeit und schuf eine Spalte 'Dauer' für die Zeit verstrichen.

Die Spalten Startzeit / Endzeit haben Felder, die wie folgt aussehen:

 2014/03/30 15:45 

Und wenn ich den Befehl pd.to_datetime () auf diese Spalten anwende, bekomme ich Felder, die so aussehen:

 2014-03-30 15:45:00 

Ich habe das Format in datetime geändert und eine neue Spalte erstellt, die die 'Duration' oder die Zeit in einem Befehl verstrichen ist:

 df['Duration'] = pd.to_datetime(df['End Time'])-pd.to_datetime(df['Start Time']) 

Das Format der Felder in der Spalte Dauer ist:

 01:14:00 

Oder hh: mm: ss

Um die Zeit verjährt oder 74 Minuten im obigen Beispiel anzugeben.

Der dtype der Dauer Spaltenfelder (hh: mm: ss) ist:

 dtype('<m8[ns]') 

Die Frage ist, wie kann ich diese Felder in nur ganze Zahlen umwandeln?

  • Plotten von Histogrammen aus gruppierten Daten in einem Pandas DataFrame
  • Create heatmap2d aus der txt-Datei
  • Binning von Daten entlang einer Achse in numpy
  • Wie man das Histogramm-Diagramm über matplotlib skaliert
  • Wie man Etiketten in Histogramm-Handlung zentriert
  • Matplotlib - Etikett jedes bin
  • One Solution collect form web for “Erstellen von Datenhistogrammen / Visualisierungen mit ipython und Ausfiltern einiger Werte”

    Ich denke, du musst die Dauer (timedelta64) in int umwandeln (vorausgesetzt, du hast eine Dauer). Dann wird die .hist-Methode funktionieren.

     from pandas import Series from numpy.random import rand from numpy import timedelta64 In [21]: a = (rand(3) *10).astype(int) a Out[21]: array([3, 3, 8]) In [22]: b = [timedelta64(x, 'D') for x in a] # This is a duration b Out[22]: [numpy.timedelta64(3,'D'), numpy.timedelta64(3,'D'), numpy.timedelta64(8,'D')] In [23]: c = Series(b) # This is a duration c Out[23]: 0 3 days 1 3 days 2 8 days dtype: timedelta64[ns] In [27]: d = c.apply(lambda x: x / timedelta64(1,'D')) # convert duration to int d Out[27]: 0 3 1 3 2 8 dtype: float64 In [28]: d.hist() 

    Ich habe die Dauer in Tage umgewandelt ('D'), aber du kannst sie in eine juristische Einheit umwandeln.

    Python ist die beste Programmiersprache der Welt.