Pands 124 26はデータから離れています.

4049 ワード

特定の値にマッチするデータ(NaN/欠落値は、任意の値を選択してもよいが)が省略されると、まばらなオブジェクトは「圧縮」される.特別なSparseIndexオブジェクト追跡データが「疎」されているところです.これは一例においてより有意義になるであろう.すべての標準的なPandsデータ構造は、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
 
まばらなDtypes
疎データは、密集表現と同じdtypeを持つべきである.これまでは、float64int64booldtypesがサポートされています.元のdtypefill_valueのデフォルト値の変更に依存します.
  • float64np.nan
  • int640
  • boolFalse
  • 以下のコードを実行して、同じ内容を理解します.
    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