English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Pandas スパースデータ操作の例
特定の値(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.810497 1 -1.419954 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN 7 NaN 8 0.439240 9 -1.095910 dtype: float64 BlockIndex ブロック位置: array([0, 8], dtype=int32) ブロック長さ: array([2, 2], dtype=int32)
メモリ効率のために、スパースオブジェクトが存在します。
今度は、大きなNA DataFrameがあると仮定して以下のコードを実行してみましょう}}-
import pandas as pd import numpy as np 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.810497 1 -1.419954 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN 7 NaN 8 0.439240 9 -1.095910 dtype: float64
スパースデータはそのデジタル表現と同じdtypeを持つべきです。現在、floatがサポートされています64、int64そしてbooldtypes。元のdtypeに依存し、デフォルトのfill_valueが変更されます-
float64 − np.nan int64 − 0 bool − False
以下のコードを実行してそれらを理解するために:
import pandas as pd import numpy as np s = pd.Series([1, np.nan, np.nan]) print s s.to_sparse() print s
以下の結果を実行しました:
0 1.0 1 NaN 2 NaN dtype: float64 0 1.0 1 NaN 2 NaN dtype: float64