13-python-pandas-sparse-data
13. Pandas高级教程之:稀疏数据结构
简介
如果数据中有很多NaN的值,存储起来就会浪费空间。为了解决这个问题,Pandas引入了一种叫做Sparse data的结构,来有效的存储这些NaN的值。
Spare data的例子
我们创建一个数组,然后将其大部分数据设置为NaN,接着使用这个数组来创建SparseArray:
In [1]: arr = np.random.randn(10)
In [2]: arr[2:-2] = np.nan
In [3]: ts = pd.Series(pd.arrays.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]这里的dtype类型是Sparse[float64, nan],它的意思是数组中的nan实际上并没有存储,只有非nan的数据才被存储,并且这些数据的类型是float64.
SparseArray
arrays.SparseArray 是一个 ExtensionArray ,用来存储稀疏的数组类型。
使用 numpy.asarray() 可以将其转换为普通的数组:
SparseDtype
SparseDtype 表示的是Spare类型。它包含两种信息,第一种是非NaN值的数据类型,第二种是填充时候的常量值,比如nan:
可以像下面这样构造一个SparseDtype:
可以指定填充的值:
Sparse的属性
可以通过 .sparse 来访问sparse:
Sparse的计算
np的计算函数可以直接用在SparseArray中,并且会返回一个SparseArray。
SparseSeries 和 SparseDataFrame
SparseSeries 和 SparseDataFrame在1.0.0 的版本时候被删除了。取代他们的是功能更强的SparseArray。
看下两者的使用上的区别:
如果是SciPy 中的sparse 矩阵,那么可以使用 DataFrame.sparse.from_spmatrix() :
最后更新于
这有帮助吗?