Мой первый вопрос StackOverflow.Эффективная математизация кадра данных pandas
Так что у меня DataFrame панды, который выглядит вроде этого:
String1 String2 String3 value
word1 word2 word3 5.6
word4 word5 word6 123.4
...
Этот вид DataFrame поставляется с очень длинной цепью обработки на основе огромного количества текста. (Как примечание, я приближаюсь к ограничениям памяти и сейчас рассматриваю HDFStores.)
Теперь я хотел бы сделать операции линейной алгебры, основанные на преобразовании этой таблицы в (разреженную) панель или какую-то другую вид эффективной структуры данных, которая заполняет пробелы с 0s. То есть, я хотел бы создать таблицу, строки которой String3s и чьи столбцы представляют собой строки String1 x String2, а затем выполняют операции линейной алгебры по строкам. Тем не менее, я также хотел бы иметь возможность сделать то же самое с любым другим столбцом - т. Е. Взять String1 в виде строк и сделать столбцы из String2 x String3.
Я экспериментировал с панелями и сводными таблицами, но они, похоже, не совсем правильные, и они часто переполняют память.
Каков правильный способ сделать это с помощью Pandas или Python (2.7) в целом?
Edited добавить этот пример:
таблица вывода будет выглядеть следующим образом:
String1String2 (word1,word2) (word1,word5) (word4,word2) (word4,word5) ...
String3
word3 5.6 0 0 0 ...
word6 0 0 0 123.4 ...
Количество столбцов в основном будет | String1 | x | String2 |. Альтернативно, String3 в качестве столбцов и String1String2 в виде строк также будет прекрасным, так как я могу выполнять операции над серией столбцов.
ред далее, чтобы добавить этот вопрос памяти:
In [1]: import pandas as pd
In [2]: A = pd.load("file.df")
In [3]: A
Out[3]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 18506532 entries, 0 to 18506531
Columns: 4 entries, 0 to value
dtypes: float64(1), object(3)
In [4]: B = A[A[1] == 'xyz']
In [5]: C = B.pivot_table('value', [1,2], 0)
Это разбивает с MemoryError на линии 160 в reshape.pyc. Это версия 0.11.0 из панд.
Вы можете привести пример желаемого результата, например. для примера вы даете –
Я отредактировал в ответ на ваш вопрос, теперь он имеет пример таблицы вывода. Я не знаю, находится ли он в хорошем формате вывода панд, но может быть, это трюк? –