2016-06-16 9 views
1

Lassen Sie uns mein Szenario darstellen:Ist Panda's DataFrame dafür geeignet?

Ich versuche, eine Analyse auf mehrere APIs für eine bestimmte Reihe von Proben zu machen. Am Ende stelle ich mir das folgendermaßen vor:

Eine 2D-Tabelle, wobei jede Zeile der Name jedes Beispiels ist und wobei jede Spalte der Name jeder API ist. Auf jeder dieser Tabelle, werde ich am Ende eine variable Anzahl von Paaren Schlüssel-Wert (zum Beispiel, Hund ': 0,9). So lassen wir ein einfaches Beispiel

________________________________________________________________________ 
|row/column | API 1  | API 2  | API 3  | API 4  | 
------------------------------------------------------------------------ 
|sample1 |{'dog':0.9, |{'cat':0.3, |{'dog':0.7, |{'cat':0.2, | 
|   |'animal': 0.8}|'mammal':0.4} |'mammal':0.3} |'animal':0.9}| 
------------------------------------------------------------------------ 
|sample2 |{'sun':0.6, |{'sun':0.7, |{'wind':0.5, |{'sun':0.1, | 
|   |'beach': 0.3} |'water':0.7} |'water':0.2} |'wind':0.3} | 
------------------------------------------------------------------------ 
|sample3 |{'tenis':0.9, |{'court':0.3, |{'court':0.7, |{'ball':0.2, | 
|   |'ball': 0.8} |'player':0.4} |'tennis':0.3} |'court':0.9} | 
________________________________________________________________________ 

Und so weiter ..

Die Anzahl der Elemente 2 nicht immer sein wird ... es von 0 bis N sein kann, aber normalerweise wird nie mehr als 3 -4 Tags.

das gesagt ist, was ich mit diesen Daten tun mag, sind danach einfache Rechnung wie:

  • Anzahl der Vorkommen in allen APIs
  • Maximum-miminum Partituren
  • Stichworte erscheinen nur in einem API

Nichts wirklich kompliziert, wie Sie sehen können.

Meine Frage ist, ein totaler Noob mit Pandas ... ist DataFrame ein guter Ansatz? Ist diese Anordnung der Daten in Ordnung oder sollte sie geändert werden?

Antwort

1

Ja, werden Sie ein MultiIndex verwenden, wo die index Ebene ein sample_id und die api_id enthalten und dann haben Sie zwei Spalten die tag und die dazugehörigen value enthalten. Dann können Sie einfach Ihre Statistiken verwenden, zum Beispiel .groupby(level='api_id').value.max().

Dies könnte wie folgt aussehen:

    tag value 
sample_id api_id    
1   1  tag1  1 
2   1  tag2  2 
3   1  tag3  3 
4   2  tag1  1 
5   2  tag2  2 
6   2  tag3  3 
7   2  tag4  1 
8   2  tag5  2 
9   2  tag6  3 
10  3  tag1  1 
11  3  tag2  2 
12  3  tag3  3 
13  3  tag4  1 
14  3  tag5  2 
15  4  tag1  3 
+0

Hallo Stefan, danke für den Link, ich bin ein bisschen verwirrt zäh ... tut Multiindex erfordert für die Konstruktion gleiche Länge Array haben? Oder sie können variable Länge haben? – AlejandroVK

+0

Sie meinen verschiedene Arrays von Tag: Wert pro API? Siehe Beispiel, da 'api_id' Teil des' MultiIndex' wäre, könnten Sie flexibel sein. – Stefan

+0

In der Tat kann ich mehr als ein Tag pro Sample-API haben, gilt das noch? Danke für das Beispiel, übrigens :) – AlejandroVK