當任何匹配特定值的資料(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。 目前,支援float64
,int64
和booldtypes
。 取決於原始的dtype
,fill_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就會帶有層次化的列。...