Ich habe eine SQL-Tabelle, die ich als Pandas Datenrahmen lesen kann, das die folgende Struktur aufweist:Wie kann ein SparseDataFrame effizient aus einer langen Tabelle erstellt werden?
user_id value
1 100
1 200
2 100
4 200
Es ist eine Darstellung einer Matrix, für die alle Werte sind 1 oder 0. Die dichte Darstellung dieser Matrix würde wie folgt aussehen:
100 200
1 1 1
2 1 0
4 0 1
Normalerweise diese Umwandlung tun Sie schwenken können, aber in meinem Fall mit Dutzenden oder Hunderten von Millionen von Zeilen in der ersten Tabelle erhält man eine große dichte Matrix voll von Nullen, die teuer ist, um herumzuziehen. Sie können es in Sparse konvertieren, aber so weit zu kommen erfordert eine Menge Ressourcen.
Momentan arbeite ich an einer Lösung, um jeder user_id Zeilennummern zuzuordnen, sie zu sortieren und dann die 'value'-Spalte in SparseSeries aufzuteilen, bevor sie zu einem SparseDataFrame zusammengefügt werden. Gibt es einen besseren Weg?
Ich habe nicht viel Diskussion über SparseSeries auf SO gesehen. Ich habe ein paar Fragen zum Hin- und Hertransfer zwischen diesen und den 'scipy'' spärlichen' Matrizen beantwortet. Mein Eindruck ist, dass die "spärliche" Struktur der Pandas noch in Entwicklung ist. – hpaulj
Ich habe ein paar gefunden, wie Ihre Antwort hier http://stackoverflow.com/questions/34181494/populate-a-pandas-sparsedatareframe-from-a-scipy-sparse-coo-matrix Das Problem ist, dass es nicht scheint nicht zu skalieren. Im Moment versuche ich, eine CSC-Matrix von 40.000 x 15.000 zu konvertieren, die mehr als 30 Minuten läuft. –