欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas 稀疏數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)

 更新時間:2021年07月23日 09:32:24   作者:程序那些事  
如果數(shù)據(jù)中有很多NaN的值,存儲起來就會浪費空間。為了解決這個問題,Pandas引入了一種叫做Sparse data的結(jié)構(gòu),來有效的存儲這些NaN的值,本文就來詳細的介紹了一下,感興趣的可以了解一下

簡介

如果數(shù)據(jù)中有很多NaN的值,存儲起來就會浪費空間。為了解決這個問題,Pandas引入了一種叫做Sparse data的結(jié)構(gòu),來有效的存儲這些NaN的值。

Spare data的例子

我們創(chuàng)建一個數(shù)組,然后將其大部分數(shù)據(jù)設(shè)置為NaN,接著使用這個數(shù)組來創(chuàng)建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],它的意思是數(shù)組中的nan實際上并沒有存儲,只有非nan的數(shù)據(jù)才被存儲,并且這些數(shù)據(jù)的類型是float64.

SparseArray

arrays.SparseArray 是一個  ExtensionArray  ,用來存儲稀疏的數(shù)組類型。

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

In [14]: arr[2:5] = np.nan

In [15]: arr[7:8] = np.nan

In [16]: sparr = pd.arrays.SparseArray(arr)

In [17]: sparr
Out[17]: 
[-1.9556635297215477, -1.6588664275960427, nan, nan, nan, 1.1589328886422277, 0.14529711373305043, nan, 0.6060271905134522, 1.3342113401317768]
Fill: nan
IntIndex
Indices: array([0, 1, 5, 6, 8, 9], dtype=int32)

使用 numpy.asarray()  可以將其轉(zhuǎn)換為普通的數(shù)組:

In [18]: np.asarray(sparr)
Out[18]: 
array([-1.9557, -1.6589,     nan,     nan,     nan,  1.1589,  0.1453,
           nan,  0.606 ,  1.3342])

SparseDtype

SparseDtype 表示的是Spare類型。它包含兩種信息,第一種是非NaN值的數(shù)據(jù)類型,第二種是填充時候的常量值,比如nan:

In [19]: sparr.dtype
Out[19]: Sparse[float64, nan]

可以像下面這樣構(gòu)造一個SparseDtype:

In [20]: pd.SparseDtype(np.dtype('datetime64[ns]'))
Out[20]: Sparse[datetime64[ns], NaT]

可以指定填充的值:

In [21]: pd.SparseDtype(np.dtype('datetime64[ns]'),
   ....:                fill_value=pd.Timestamp('2017-01-01'))
   ....: 
Out[21]: Sparse[datetime64[ns], Timestamp('2017-01-01 00:00:00')]

Sparse的屬性

可以通過 .sparse 來訪問sparse:

In [23]: s = pd.Series([0, 0, 1, 2], dtype="Sparse[int]")

In [24]: s.sparse.density
Out[24]: 0.5

In [25]: s.sparse.fill_value
Out[25]: 0

Sparse的計算

np的計算函數(shù)可以直接用在SparseArray中,并且會返回一個SparseArray。

In [26]: arr = pd.arrays.SparseArray([1., np.nan, np.nan, -2., np.nan])

In [27]: np.abs(arr)
Out[27]: 
[1.0, nan, nan, 2.0, nan]
Fill: nan
IntIndex
Indices: array([0, 3], dtype=int32)

SparseSeries 和 SparseDataFrame

SparseSeries 和 SparseDataFrame在1.0.0 的版本時候被刪除了。取代他們的是功能更強的SparseArray。
看下兩者的使用上的區(qū)別:

# Previous way
>>> pd.SparseDataFrame({"A": [0, 1]})
# New way
In [31]: pd.DataFrame({"A": pd.arrays.SparseArray([0, 1])})
Out[31]: 
   A
0  0
1  1

如果是SciPy 中的sparse 矩陣,那么可以使用 DataFrame.sparse.from_spmatrix() :

# Previous way
>>> from scipy import sparse
>>> mat = sparse.eye(3)
>>> df = pd.SparseDataFrame(mat, columns=['A', 'B', 'C'])
# New way
In [32]: from scipy import sparse

In [33]: mat = sparse.eye(3)

In [34]: df = pd.DataFrame.sparse.from_spmatrix(mat, columns=['A', 'B', 'C'])

In [35]: df.dtypes
Out[35]: 
A    Sparse[float64, 0]
B    Sparse[float64, 0]
C    Sparse[float64, 0]
dtype: object

到此這篇關(guān)于Pandas 稀疏數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)的文章就介紹到這了,更多相關(guān)Pandas 稀疏數(shù)據(jù)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • NumPy中的實用函數(shù)clip詳解

    NumPy中的實用函數(shù)clip詳解

    這篇文章主要介紹了NumPy中的實用函數(shù)clip詳解,NumPy函數(shù)clip()用于保留數(shù)組中在間隔范圍內(nèi)的值,給定一個范圍,范圍外的值將剪裁到范圍邊界,需要的朋友可以參考下的相關(guān)資料
    2023-08-08
  • Python數(shù)據(jù)結(jié)構(gòu)之順序表的實現(xiàn)代碼示例

    Python數(shù)據(jù)結(jié)構(gòu)之順序表的實現(xiàn)代碼示例

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之順序表的實現(xiàn)代碼示例,簡單介紹了順序表的相關(guān)內(nèi)容,然后分享了其代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • python+OpenCV人臉識別考勤系統(tǒng)實現(xiàn)的詳細代碼

    python+OpenCV人臉識別考勤系統(tǒng)實現(xiàn)的詳細代碼

    作為一個基于人臉識別算法的考勤系統(tǒng)的設(shè)計與實現(xiàn)教程,以下內(nèi)容將提供詳細的步驟和代碼示例。本教程將使用 Python 語言和 OpenCV 庫進行實現(xiàn),需要的朋友可以參考下
    2023-05-05
  • MATLAB中text函數(shù)使用的語法與示例代碼

    MATLAB中text函數(shù)使用的語法與示例代碼

    text函數(shù)的功能是向數(shù)據(jù)點添加文本說明,下面這篇文章主要給大家介紹了關(guān)于MATLAB中text函數(shù)使用的語法與示例的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • numpy.transpose()實現(xiàn)數(shù)組的轉(zhuǎn)置例子

    numpy.transpose()實現(xiàn)數(shù)組的轉(zhuǎn)置例子

    今天小編就為大家分享一篇numpy.transpose()實現(xiàn)數(shù)組的轉(zhuǎn)置例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python3爬蟲中識別圖形驗證碼的實例講解

    Python3爬蟲中識別圖形驗證碼的實例講解

    在本篇內(nèi)容里小編給大家分享的是關(guān)于Python3爬蟲中識別圖形驗證碼的實例講解內(nèi)容,需要的朋友們可以學習參考下。
    2020-07-07
  • Python 文本文件內(nèi)容批量抽取實例

    Python 文本文件內(nèi)容批量抽取實例

    今天小編就為大家分享一篇Python 文本文件內(nèi)容批量抽取實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python3 導入上級目錄中的模塊實例

    Python3 導入上級目錄中的模塊實例

    今天小編就為大家分享一篇Python3 導入上級目錄中的模塊實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python中過濾字符串列表的方法

    Python中過濾字符串列表的方法

    這篇文章主要介紹了Python中過濾字符串列表的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python使用zmail進行郵件發(fā)送的示例詳解

    Python使用zmail進行郵件發(fā)送的示例詳解

    這篇文章主要為大家詳細介紹了Python如何使用zmail進行郵件發(fā)送功能,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2024-03-03

最新評論