2012-04-13 5 views
3

Ich versuche, Daten nach ihrer Wahrscheinlichkeit zu indizieren (geschätzt mit einem einfachen Histogramm). Das Ziel besteht darin, Elemente in der Reihe mit einer Wahrscheinlichkeit kleiner als ein Schwellenwert auszuwählen.Pandas: Indexdaten durch ein Histogramm Ergebnis

Ich habe eine Reihe von Integer-Werte, zum Beispiel:

import pandas as pnd 
import numpy as np 

series = pnd.Series(np.random.poisson(5, size = 100)) 

dann berechne ich ihr Histogramm wie folgt aus:

tmp = {"series" : series, "count" : np.ones(len(series))} 
hist = pnd.DataFrame(tmp).groupby("series").sum() 
freq = hist/hist.sum() 

So, jetzt habe ich die Frequenzen jedes Ergebnis durch das Ergebnis indiziert und die Reihe der Ergebnisse. Ich habe jetzt zwei Fragen:

  • Gibt es eine Möglichkeit zu indizieren series durch die Abbildung des Ergebnisses/Frequenz definiert durch freq?
  • Wenn ich das bewerkstellige, wie wähle ich nur Ergebnisse mit einer Häufigkeit größer als ein Wert aus?

Danke.

Antwort

3

Ja, verwenden Sie die map Series Methode:

In [16]: series.map(freq['count']) 
Out[16]: 
0  0.12 
1  0.06 
2  0.20 
3  0.11 
4  0.02 
5  0.13 
6  0.14 
7  0.11 
8  0.12 
9  0.16 
10 0.20 
<snip> 

können Sie dann tun:

In [22]: series[series.map(freq['count']) > 0.16] 
Out[22]: 
2  4 
10 4 
11 4 
22 4 
27 4 
31 4 
34 4 
56 4 
64 4 
71 4 
73 4 
76 4 
77 4 
79 4 
80 4 
86 4 
88 4 
89 4 
91 4 
99 4 
+0

humm! Nett!! Vielen Dank. –