Как преобразовать pandas фрейм данных в разреженную матрицу с помощью scipy csr_matrix? - PullRequest
1 голос
/ 05 августа 2020

Я хочу преобразовать DataFrame в разреженную матрицу, используя csr_matrix из библиотеки scipy, но сначала мне нужно преобразовать его в SparseDataFrame. В предыдущих версиях pandas я использовал pd.SparseDataFrame(df).to_coo() для таких целей, но с pandas 1.0.0 этот метод устарел. Кто-нибудь знает, как выполнить такое преобразование с использованием последнего pandas api. Я использовал это руководство и пробовал различные комбинации, но все равно не смог достичь желаемого результата. Следуя руководству, когда я делаю следующее

csr_matrix(pd.DataFrame.sparse.from_spmatrix(df).to_coo())

, я получаю эту ошибку

AttributeError: 'DataFrame' object has no attribute 'tocsc'

Может ли кто-нибудь помочь мне, как решить эту проблему? Также я нахожу другие сообщения, но в моем случае это не помогло ссылка ссылка ссылка

1 Ответ

1 голос
/ 05 августа 2020

IIU C и используя третью ссылку, которой вы поделились, вы можете преобразовать свои df данные в разреженные данные, используя pd.SparseDtype, например,

df_sparsed = df.astype(pd.SparseDtype("float", np.nan)

Вы можете узнать больше о pd.SparseDtype здесь , чтобы выбрать правильные параметры для ваших данных, а затем использовать их в приведенной выше команде, например:

csr_matrix(df_sparsed.sparse.to_coo()) # Note you need .sparse accessor to access .to_coo()

Простой лайнер будет

csr_matrix(df.astype(pd.SparseDtype("float", np.nan)).sparse.to_coo())
...