Spec-Zone.ru › pandas 0.25

Разреженные структуры данных

Примечание

SparseSeries и SparseDataFrame устарели. Их функциональность одинаково хорошо реализуется с помощью Series или DataFrame с разреженными значениями. См. Миграцию для советов по миграции.

Pandas предоставляет структуры данных для эффективного хранения разреженных данных. Они не обязательно разреженные в обычном понимании (в основном 0). Скорее, эти объекты можно рассматривать как «сжатые», где любые данные, соответствующие определенному значению (NaN / пропущенное значение, хотя можно выбрать любое значение, включая 0), опускаются. Сжатые значения фактически не хранятся в массиве.

In [1]: arr = np.random.randn(10)

In [2]: arr[2:-2] = np.nan

In [3]: ts = pd.Series(pd.SparseArray(arr))

In [4]: ts
Out[4]: 
0    0.469112
1   -0.282863
2         NaN
3         NaN
4         NaN
5         NaN
6         NaN
7         NaN
8   -0.861849
9   -2.104569
dtype: Sparse[float64, nan]

Обратите внимание на тип данных, Sparse[float64, nan]. nan означает, что элементы в массиве, которые nan , фактически не хранятся, хранятся только не-nan элементы. Эти не-nan элементы имеют тип данных float64.

Разреженные объекты существуют для повышения эффективности памяти. Представьте себе большой массив, в основном содержащий пропущенные значения DataFrame:

In [5]: df = pd.DataFrame(np.random.randn(10000, 4))

In [6]: df.iloc[:9998] = np.nan

In [7]: sdf = df.astype(pd.SparseDtype("float", np.nan))

In [8]: sdf.head()
Out[8]: 
    0   1   2   3
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN

In [9]: sdf.dtypes

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/user_guide/sparse.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API