Датафреймы Pandas, сериализованные в Protobuf, улучшают скорость - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть фрейм данных Pandas, который составляет примерно 3 миллиона строк и 5 столбцов.Каждое значение довольно мало - примерно 20 символов или меньше.Когда я пытаюсь сериализовать в файл protobuf, это занимает примерно час.В конце концов, этот процесс должен будет сериализовать файлы, которые в 2000 раз длиннее, поэтому я пытаюсь сделать его более эффективным.

Я нахожусь в Python и могу преобразовать мой фрейм данных в любой другой тип объекта, чтобы увеличить общую скорость.Единственная реальная вещь, которая установлена ​​в камне, это то, что вывод должен быть протобуфом.

Итак, мой вопрос, есть ли более эффективный способ сделать это, чем добавлять каждую строку одну за другой?Как это будет выглядеть?

Вот этот файл:

syntax = "proto3";

package index_picker;

message unit{
  string field1 = 1;
  string field2= 2;
  int64 field3 = 3;
  string field4 = 4;

  message field5{
    int64 field51 = 1;
    int64 field52 = 2;
  }

  repeated field5 field55= 5;
}

message row{
  repeated unit unit1= 1;
}

Я сериализуюсь, перебирая каждую строку и добавляя:

book = row3_pb2.row()

for index, row in df.iterrows():
    ProtoRow(book.unit1.add(), df, index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...