2017-03-18 12 views
5

में बनाम xarray multiindexing उपयोग करने के लिए pandas pivot tables documentation multiindexing का उपयोग करके डेटा की दो से अधिक आयाम के साथ काम करने की सिफारिश करने के लिए लगता है:जब पांडा

In [1]: import pandas as pd 

In [2]: import numpy as np 

In [3]: import pandas.util.testing as tm; tm.N = 3 

In [4]: def unpivot(frame): 
    ...:   N, K = frame.shape 
    ...:   data = {'value' : frame.values.ravel('F'), 
    ...:     'variable' : np.asarray(frame.columns).repeat(N), 
    ...:     'date' : np.tile(np.asarray(frame.index), K)} 
    ...:   return pd.DataFrame(data, columns=['date', 'variable', 'value']) 
    ...: 

In [5]: df = unpivot(tm.makeTimeDataFrame()) 

In [6]: df 
Out[6]: 
     date variable  value value2 
0 2000-01-03  A 0.462461 0.924921 
1 2000-01-04  A -0.517911 -1.035823 
2 2000-01-05  A 0.831014 1.662027 
3 2000-01-03  B -0.492679 -0.985358 
4 2000-01-04  B -1.234068 -2.468135 
5 2000-01-05  B 1.725218 3.450437 
6 2000-01-03  C 0.453859 0.907718 
7 2000-01-04  C -0.763706 -1.527412 
8 2000-01-05  C 0.839706 1.679413 
9 2000-01-03  D -0.048108 -0.096216 
10 2000-01-04  D 0.184461 0.368922 
11 2000-01-05  D -0.349496 -0.698993 

In [7]: df['value2'] = df['value'] * 2 

In [8]: df.pivot('date', 'variable') 
Out[8]: 
       value         value2   \ 
variable   A   B   C   D   A   B 
date                  
2000-01-03 -1.558856 -1.144732 -0.234630 -1.252482 -3.117712 -2.289463 
2000-01-04 -1.351152 -0.173595 0.470253 -1.181006 -2.702304 -0.347191 
2000-01-05 0.151067 -0.402517 -2.625085 1.275430 0.302135 -0.805035 


variable   C   D 
date        
2000-01-03 -0.469259 -2.504964 
2000-01-04 0.940506 -2.362012 
2000-01-05 -5.250171 2.550861 

मैंने सोचा था कि xarray इस तरह बहुआयामी डेटासेट से निपटने के लिए किया गया था:

In [9]: import xarray as xr 

In [10]: xr.DataArray(dict([(var, df[df.variable==var].drop('variable', 1)) for var in np.unique(df.variable)])) 
Out[10]: 
<xarray.DataArray()> 
array({'A':   date  value value2 
0 2000-01-03 0.462461 0.924921 
1 2000-01-04 -0.517911 -1.035823 
2 2000-01-05 0.831014 1.662027, 'C':   date  value value2 
6 2000-01-03 0.453859 0.907718 
7 2000-01-04 -0.763706 -1.527412 
8 2000-01-05 0.839706 1.679413, 'B':   date  value value2 
3 2000-01-03 -0.492679 -0.985358 
4 2000-01-04 -1.234068 -2.468135 
5 2000-01-05 1.725218 3.450437, 'D':   date  value value2 
9 2000-01-03 -0.048108 -0.096216 
10 2000-01-04 0.184461 0.368922 
11 2000-01-05 -0.349496 -0.698993}, dtype=object) 

क्या इनमें से एक दृष्टिकोण दूसरे की तुलना में बेहतर है? Xarray पूरी तरह से multindexing बदल दिया क्यों नहीं है?

उत्तर

6

बहु-आयामी सरणी पर काम करने के लिए xarray में एक संक्रमण प्रतीत होता है। पांडा 3 डी पैनलों डेटा संरचना के लिए और documentation even suggest using xarray for working with multidemensional arrays में समर्थन गिरावट किया जाएगा:

'कई बार, एक बस आसानी से उच्च आयामी डेटा के साथ काम करने के लिए एक MultiIndex DataFrame उपयोग कर सकते हैं।

इसके अतिरिक्त, xarray पैकेज ग्राउंड अप, से बनाया गया था, विशेष रूप से बहु-आयामी विश्लेषण का समर्थन करने के लिए पैनल के मुख्य उपयोग मामलों में से एक है। यहां xarray पैनल-संक्रमण दस्तावेज़ का एक लिंक दिया गया है। '

xarray documentation से वे राज्य अपने लक्ष्य और लक्ष्यों:

xarray पांडा के रूप में के रूप में शक्तिशाली लेकिन इसके बजाय तालिका का डेटा सजातीय एन आयामी सरणी के साथ काम करने के लिए बनाया गया एक डेटा विश्लेषण टूलकिट प्रदान करना है ...

... हमारा लक्षित दर्शक कोई भी व्यक्ति है जिसने एन-आयामी लेबल सरणी की आवश्यकता है, लेकिन हम विशेष रूप से भौतिक वैज्ञानिकों की डेटा विश्लेषण आवश्यकताओं पर ध्यान केंद्रित कर रहे हैं विशेष रूप से भूवैज्ञानिकों जो पहले से ही जानते हैं और प्यार netCDF

सीधे numpy का उपयोग करने पर xarray का मुख्य लाभ यह है कि यह उसी तरह पांडा में लेबल का उपयोग करता है कई आयामों से अधिक करता है। यदि आप मल्टी-इंडेक्सिंग या एक्सएरे का उपयोग करके 3-आयामी डेटा के साथ काम कर रहे हैं तो अदला-बदली हो सकती है। चूंकि आयामों की संख्या आपके डेटा सेट में बढ़ती है xarray अधिक प्रबंधनीय हो जाती है। मैं इस बात पर टिप्पणी नहीं कर सकता कि प्रत्येक दक्षता या गति के मामले में कैसे कार्य करता है।