Pandas 稀疏資料

2021-10-04 19:28:40 字數 2165 閱讀 8236

當任何匹配特定值的資料(nan/缺失值,儘管可以選擇任何值)被省略時,稀疏物件被「壓縮」。 乙個特殊的sparseindex物件跟蹤資料被「稀疏」的地方。 這將在乙個例子中更有意義。 所有的標準pandas資料結構都應用了to_sparse方法 -

import pandas as pd

import numpy as np

ts = pd.series(np.random.randn(10))

ts[2:-2] = np.nan

sts = ts.to_sparse()

print (sts)

執行上面示例**,得到以下結果 -

0   -0.391926

1 -1.774880

2 nan

3 nan

4 nan

5 nan

6 nan

7 nan

8 0.642988

9 -0.373698

dtype: float64

blockindex

block locations: array([0, 8])

block lengths: array([2, 2])

為了記憶體效率的原因,所以需要稀疏物件的存在。

現在假設有乙個大的na dataframe並執行下面的** -

import pandas as pd

import numpy as np

df = pd.dataframe(np.random.randn(10000, 4))

df.ix[:9998] = np.nan

sdf = df.to_sparse()

print (sdf.density)

執行上面示例**,得到以下結果 -

0.0001
通過呼叫to_dense可以將任何稀疏物件轉換回標準密集形式 -

import pandas as pd

import numpy as np

ts = pd.series(np.random.randn(10))

ts[2:-2] = np.nan

sts = ts.to_sparse()

print (sts.to_dense())

執行上面示例**,得到以下結果 -

0   -0.275846

1 1.172722

2 nan

3 nan

4 nan

5 nan

6 nan

7 nan

8 -0.612009

9 -1.413996

dtype: float64

稀疏資料應該具有與其密集表示相同的dtype。 目前,支援float64int64booldtypes。 取決於原始的dtypefill_value預設值的更改 -

執行下面的**來理解相同的內容 -

import pandas as pd

import numpy as np

s = pd.series([1, np.nan, np.nan])

print (s)

print ("*************************====")

s.to_sparse()

print (s)

執行上面示例**,得到以下結果 -

0    1.0

1 nan

2 nan

dtype: float64

*************************====

0 1.0

1 nan

2 nan

dtype: float64

Pandas 稀疏資料結構的實現

目錄 如果資料中有很多nan的值,儲存起來就會浪費空間。為了解決這個問題,pandas引入了一種叫做sparse data的結構,來有效的儲存這些nan的值。我們建立乙個陣列,然後將其大部分資料設定為nan,接著使用這個陣列來建立sparsearray in 1 arr np.random.rand...

pandas 排序 Pandas 資料排序

python 的 pandas 庫中有一類對資料排序的方法,主要分為對引數列排序,對數值排序,及二者混合三種。一.引數列排序 首先我們生成乙個亂序數列 unsorted df 隨後我們可通過 df.sort index 函式對資料集進行排序操作 如不做規定,返回行引數正序排序 新增引數 ascend...

pandas資料重塑

python for data analysis stack 將資料的列 旋轉 為行 unstack 將資料的行 旋轉 為列 pivot 前兩個引數值分別用作行和列索引的列名,最後乙個引數則是用於填充dataframe的資料列的列名。如果忽略最後乙個引數,得到的dataframe就會帶有層次化的列。...