आपने जॉरिस के जवाब के लिए एक टिप्पणी में लिखा है:
"मैं एक पंक्ति में परिवर्तित होने के लिए एकल पंक्तियों के लिए डिज़ाइन निर्णय को नहीं समझता - एक पंक्ति के साथ डेटा फ्रेम क्यों नहीं?"
एक एकल पंक्ति एक श्रृंखला में परिवर्तित नहीं होती है ।
यह है एक श्रृंखला:No, I don't think so, in fact; see the edit
पांडा डेटा संरचनाओं के बारे में सोचने का सबसे अच्छा तरीका कम आयामी डेटा के लिए लचीले कंटेनर हैं। उदाहरण के लिए, DataFrame Series के लिए एक कंटेनर है, और पैनल DataFrame ऑब्जेक्ट्स के लिए एक कंटेनर है। हम इन कंटेनरों से ऑब्जेक्ट्स को डिक्शनरी जैसे अंदाज में डालना और निकालना चाहते हैं।
http://pandas.pydata.org/pandas-docs/stable/overview.html#why-more-than-1-data-structure
पंडों की वस्तुओं का डेटा मॉडल इस तरह चुना गया है। कारण निश्चित रूप से इस तथ्य में निहित है कि यह कुछ फायदे सुनिश्चित करता है जो मुझे नहीं पता है (मैं उद्धरण के अंतिम वाक्य को पूरी तरह से नहीं समझता हूं, शायद यह कारण है)
।
संपादित करें: मैं मेरे साथ सहमत नहीं हूं
एक DataFrame तत्वों को होगा से बना नहीं किया जा सकता हो , सीरीज क्योंकि निम्नलिखित कोड एक ही प्रकार के "सीरीज" के साथ-साथ के लिए एक कॉलम के लिए के रूप में एक पंक्ति देता है:
import pandas as pd
df = pd.DataFrame(data=[11,12,13], index=[2, 3, 3])
print '-------- df -------------'
print df
print '\n------- df.loc[2] --------'
print df.loc[2]
print 'type(df.loc[1]) : ',type(df.loc[2])
print '\n--------- df[0] ----------'
print df[0]
print 'type(df[0]) : ',type(df[0])
परिणाम
-------- df -------------
0
2 11
3 12
3 13
------- df.loc[2] --------
0 11
Name: 2, dtype: int64
type(df.loc[1]) : <class 'pandas.core.series.Series'>
--------- df[0] ----------
2 11
3 12
3 13
Name: 0, dtype: int64
type(df[0]) : <class 'pandas.core.series.Series'>
तो, यह दिखाने का कोई अर्थ नहीं है कि एक DataFrame श्रृंखला से बना है क्योंकि इन श्रृंखलाओं को क्या कहा जाएगा: कॉलम या पंक्तियाँ? मूर्खतापूर्ण प्रश्न और दृष्टि।
।
तो फिर DataFrame क्या है?
इस उत्तर के पिछले संस्करण में, मैंने यह प्रश्न पूछा था, Why is that?
ओपी के प्रश्न के उत्तर और इसी तरह की पूछताछ के उत्तर को खोजने की कोशिश कर रहा था single rows to get converted into a series - why not a data frame with one row?
,
जबकि इस Is there a way to ensure I always get back a data frame?
भाग का उत्तर दान एलन द्वारा दिया गया है।
फिर, जैसा कि पंडों के डॉक्स ने कहा है कि पांडा की डेटा संरचनाएं निचले आयामी डेटा के कंटेनरों के रूप में सबसे अच्छी तरह से देखी जाती हैं , मुझे यह प्रतीत हुआ कि डेटाफ़्रास्ट्रक्चर संरचनाओं की प्रकृति के चरित्रकारों में इसकी समझ क्यों मिलेगी।
हालांकि, मैंने महसूस किया कि इस उद्धृत सलाह को पंडों की डेटा संरचनाओं की प्रकृति के सटीक विवरण के रूप में नहीं लिया जाना चाहिए।
इस सलाह का मतलब यह नहीं है कि एक DataFrame श्रृंखला का एक कंटेनर है।
यह व्यक्त करता है कि श्रृंखला के एक कंटेनर के रूप में डेटाफ्रेम का मानसिक प्रतिनिधित्व (एक तर्क के एक पल में विचार किए गए विकल्प के अनुसार पंक्तियों या स्तंभों) डेटाफ़्रेम पर विचार करने का एक अच्छा तरीका है, भले ही यह वास्तविकता में कड़ाई से न हो। "अच्छा" जिसका अर्थ है कि यह दृष्टि दक्षता के साथ डेटाफ्रेम का उपयोग करने में सक्षम है। बस इतना ही।
।
फिर एक DataFrame ऑब्जेक्ट क्या है?
DataFrame वर्ग उदाहरणों कि है एक विशेष संरचना में जन्म लिया है पैदा करता है NDFrame आधार वर्ग, जो अपने आप से प्राप्त PandasContainer आधार वर्ग भी की एक माता पिता के वर्ग है कि सीरीज वर्ग।
ध्यान दें कि यह पंडों के लिए 0.12 संस्करण तक सही है। आगामी संस्करण 0.13 में, श्रृंखला केवल NDFrame वर्ग से निकलेगी ।
# with pandas 0.12
from pandas import Series
print 'Series :\n',Series
print 'Series.__bases__ :\n',Series.__bases__
from pandas import DataFrame
print '\nDataFrame :\n',DataFrame
print 'DataFrame.__bases__ :\n',DataFrame.__bases__
print '\n-------------------'
from pandas.core.generic import NDFrame
print '\nNDFrame.__bases__ :\n',NDFrame.__bases__
from pandas.core.generic import PandasContainer
print '\nPandasContainer.__bases__ :\n',PandasContainer.__bases__
from pandas.core.base import PandasObject
print '\nPandasObject.__bases__ :\n',PandasObject.__bases__
from pandas.core.base import StringMixin
print '\nStringMixin.__bases__ :\n',StringMixin.__bases__
परिणाम
Series :
<class 'pandas.core.series.Series'>
Series.__bases__ :
(<class 'pandas.core.generic.PandasContainer'>, <type 'numpy.ndarray'>)
DataFrame :
<class 'pandas.core.frame.DataFrame'>
DataFrame.__bases__ :
(<class 'pandas.core.generic.NDFrame'>,)
-------------------
NDFrame.__bases__ :
(<class 'pandas.core.generic.PandasContainer'>,)
PandasContainer.__bases__ :
(<class 'pandas.core.base.PandasObject'>,)
PandasObject.__bases__ :
(<class 'pandas.core.base.StringMixin'>,)
StringMixin.__bases__ :
(<type 'object'>,)
तो मेरी समझ अब यह है कि DataFrame उदाहरण में कुछ विधियाँ हैं जो डेटा को पंक्तियों और स्तंभों से निकाले जाने के तरीके को नियंत्रित करने के लिए तैयार की गई हैं।
इस पेज में काम करने के तरीके बताए गए हैं:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing
हम इसे दान एलन और अन्य तरीकों द्वारा दी गई विधि में पाते हैं।
ये निकालने के तरीके क्यों उकेरे गए हैं?
यह निश्चित रूप से है क्योंकि उन्हें डेटा विश्लेषण में बेहतर संभावनाएं और आसानी देने वाले लोगों के रूप में मूल्यांकित किया गया है।
यह ठीक वही है जो इस वाक्य में व्यक्त किया गया है:
पांडा डेटा संरचनाओं के बारे में सोचने का सबसे अच्छा तरीका कम आयामी डेटा के लिए लचीले कंटेनर हैं।
क्यों एक DataFRame उदाहरण से डेटा की निकासी की नहीं इसकी संरचना में निहित है, यह में निहित है क्यों इस संरचना का। मुझे लगता है कि पंडों की डेटा संरचना की संरचना और कार्यप्रणाली को अधिक से अधिक बौद्धिक रूप से सहज होने के लिए छेनी गई है, और विवरण को समझने के लिए, किसी को वेस मैककिनी के ब्लॉग को पढ़ना चाहिए।