Datensatz mit Polaren, der größer als der Speicher istPython

Python-Programme
Anonymous
 Datensatz mit Polaren, der größer als der Speicher ist

Post by Anonymous »

Ich habe eine Parkettdatei mit einem Datensatz, der wie folgt aussieht:

Code: Select all

import polars as pl

df = pl.LazyFrame(
{
"target": [
[1.0, 2.0],
[3.0, 4.0],
],
"point_cloud": [
[
[7.0, 8.0],
[9.0, 10.0],
],
[
[9.0, 10.0],
],
],
},
schema={
"target": pl.Array(pl.Float32, 2),
"point_cloud": pl.List(pl.Array(pl.Float32, 2)),
},
)
Die Datei hat 4 Millionen Zeilen und ist 20 GB groß (passt nicht in den RAM).
Ich versuche, die Größe von Punktwolken wie folgt zu ermitteln:

Code: Select all

df = (
pl.scan_parquet(dataset).select(size=pl.col("point_cloud").list.len()).collect()
)
Aber mein Programm hat nicht mehr genügend Speicher und stirbt. Ich habe versucht, „collect(engine="streaming") zu ändern, aber das Ergebnis ist das gleiche.
Ich bin verwirrt, denn wenn ich versuche, z. B. Wenn Sie die x-Koordinate aller Ziele verwenden, funktioniert es einwandfrei (und ist superschnell):

Code: Select all

df = pl.scan_parquet(dataset).select(x=pl.col("target").arr.get(0)).collect()
Kann ich dabei Hilfe bekommen?
Vielen Dank
BEARBEITEN
Dies ist ein Diagramm mit der Verteilung der Länge jeder Liste (erstellt durch Ausführen desselben Codes auf einem Computer mit genügend RAM, um den gesamten Datensatz aufzunehmen).
Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post