pandas 0.23 - 24. Sparse data structures

विरल डेटा संरचनाएँ




pandas

विरल डेटा संरचनाएँ

ध्यान दें

SparsePanel वर्ग को SparsePanel में हटा दिया गया है

हमने Series और DataFrame "विरल" संस्करणों को लागू किया है। ये विशिष्ट "ज्यादातर 0" में विरल नहीं हैं। बल्कि, आप इन वस्तुओं को "संपीड़ित" होने के रूप में देख सकते हैं, जहां कोई भी डेटा एक विशिष्ट मूल्य ( NaN / लापता मूल्य, हालांकि किसी भी मूल्य को चुना जा सकता है) को छोड़ दिया जाता है। एक विशेष SparseIndex ऑब्जेक्ट ट्रैक करता है जहां डेटा "स्पार्सिफ़ाइड" किया गया है। यह एक उदाहरण के साथ और अधिक समझ में आएगा। सभी मानक पांडा डेटा संरचनाओं में एक to_sparse विधि है:

In [1]: ts = pd.Series(randn(10))

In [2]: ts[2:-2] = np.nan

In [3]: sts = ts.to_sparse()

In [4]: sts
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: float64
BlockIndex
Block locations: array([0, 8], dtype=int32)
Block lengths: array([2, 2], dtype=int32)

to_sparse विधि एक kind तर्क लेती है (विरल सूचकांक के लिए, नीचे देखें) और एक fill_value । इसलिए यदि हमारे पास ज्यादातर शून्य Series , तो हम इसे fill_value=0 साथ विरल में बदल सकते हैं:

In [5]: ts.fillna(0).to_sparse(fill_value=0)
Out[5]: 
0    0.469112
1   -0.282863
2    0.000000
3    0.000000
4    0.000000
5    0.000000
6    0.000000
7    0.000000
8   -0.861849
9   -2.104569
dtype: float64
BlockIndex
Block locations: array([0, 8], dtype=int32)
Block lengths: array([2, 2], dtype=int32)

स्मृति दक्षता कारणों से विरल वस्तुएँ मौजूद हैं। मान लीजिए कि आपके पास एक बड़ा, ज्यादातर NA DataFrame :

In [6]: df = pd.DataFrame(randn(10000, 4))

In [7]: df.iloc[:9998] = np.nan

In [8]: sdf = df.to_sparse()

In [9]: sdf
Out[9]: 
             0         1         2         3
0          NaN       NaN       NaN       NaN
1          NaN       NaN       NaN       NaN
2          NaN       NaN       NaN       NaN
3          NaN       NaN       NaN       NaN
4          NaN       NaN       NaN       NaN
5          NaN       NaN       NaN       NaN
6          NaN       NaN       NaN       NaN
...        ...       ...       ...       ...
9993       NaN       NaN       NaN       NaN
9994       NaN       NaN       NaN       NaN
9995       NaN       NaN       NaN       NaN
9996       NaN       NaN       NaN       NaN
9997       NaN       NaN       NaN       NaN
9998  0.509184 -0.774928 -1.369894 -0.382141
9999  0.280249 -1.648493  1.490865 -0.890819

[10000 rows x 4 columns]

In [10]: sdf.density