আপনি জরিসের উত্তরে একটি মন্তব্যে লিখেছেন:
"আমি একক সারিগুলিকে একটি সিরিজে রূপান্তরিত করার জন্য ডিজাইনের সিদ্ধান্তটি বুঝতে পারি না - কেন একটি সারিযুক্ত একটি ডেটা ফ্রেম নয়?"
একটি একক সারি একটি সিরিজে রূপান্তরিত হয় না ।
এটা তোলে IS সিরিজ:No, I don't think so, in fact; see the edit
পান্ডাস ডেটা স্ট্রাকচারগুলি সম্পর্কে ভাবার সেরা উপায় হ'ল নিম্ন মাত্রিক তথ্যের জন্য নমনীয় পাত্রে। উদাহরণস্বরূপ, ডেটাফ্রেম সিরিজের জন্য একটি ধারক এবং প্যানেল ডেটা ফ্রেম অবজেক্টের জন্য একটি ধারক। আমরা অভিধানের মতো ফ্যাশনে এই ধারকগুলি থেকে অবজেক্টগুলি সন্নিবেশ করতে এবং সরাতে সক্ষম হতে চাই।
http://pandas.pydata.org/pandas-docs/stable/overview.html#why-more-than-1-data-st संरचना
পান্ডাস অবজেক্টের ডেটা মডেলটি সেভাবেই বেছে নেওয়া হয়েছে। কারণটি অবশ্যই এতে নিহিত রয়েছে যে এটি আমার জানা না থাকা কিছু সুবিধা নিশ্চিত করে (আমি উদ্ধৃতিটির শেষ বাক্যটি পুরোপুরি বুঝতে পারি না, সম্ভবত এটি কারণ)
।
সম্পাদনা: আমি আমার সাথে একমত নই
একজন 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'>
সুতরাং, কোনও ডেটাফ্রেম সিরিজটি নিয়ে গঠিত বলে ভেবে দেখার কোনও বুদ্ধি নেই কারণ এগুলি বলেছিল সিরিজটি কী হবে: কলাম বা সারি? বোকা প্রশ্ন এবং দৃষ্টি।
।
তাহলে ডেটাফ্রেম কী?
এই উত্তরের পূর্ববর্তী সংস্করণে, আমি এই প্রশ্নটি 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?
অংশটির উত্তর ড্যান অ্যালান দিয়েছেন।
তারপরে, পান্ডাদের ডকুমেন্টগুলি উপরে বর্ণিত হয়েছে যে পান্ডাদের ডেটা স্ট্রাকচারগুলি নিম্ন মাত্রিক উপাত্তের ধারক হিসাবে সবচেয়ে ভালভাবে দেখা যায় , এটি আমার কাছে মনে হয়েছিল যে কেন ডেটাফ্রেম কাঠামোর প্রকৃতির চরিত্রগতগুলিতে এই বিষয়টি বোঝা যাবে।
তবে, আমি বুঝতে পেরেছি যে এই উদ্ধৃত পরামর্শটি পান্ডাদের ডেটা স্ট্রাকচারের প্রকৃতির একটি সুনির্দিষ্ট বিবরণ হিসাবে গ্রহণ করা উচিত নয়।
এই পরামর্শের অর্থ এই নয় যে কোনও ডেটাফ্রেম সিরিজের ধারক।
এটি প্রকাশ করে যে সিরিজের একটি ধারক হিসাবে ডেটাফ্রেমের মানসিক উপস্থাপনা (যুক্তির এক মুহুর্তে বিবেচনা করা বিকল্প অনুসারে সারি বা কলামগুলি হয়) ডাটাফ্রেমগুলি বিবেচনা করার একটি ভাল উপায়, এমনকি বাস্তবে এটি দৃ strictly়রূপে ঘটেনি। "ভাল" অর্থ এই দৃষ্টিভঙ্গি দক্ষতার সাথে ডেটা ফ্রেমগুলি ব্যবহার করতে সক্ষম করে। এখানেই শেষ.
।
তাহলে ডেটাফ্রেম অবজেক্টটি কী?
DataFrame বর্গ দৃষ্টান্ত আছে একটি নির্দিষ্ট কাঠামো সম্ভূত উৎপন্ন NDFrame বেস বর্গ, নিজেই থেকে উদ্ভূত PandasContainer বেস বর্গ এছাড়াও একটি পিতা বা মাতা ক্লাস হয় যে সিরিজ বর্গ।
নোট করুন যে সংস্করণ 0.12 পর্যন্ত পান্ডার পক্ষে এটি সঠিক। আসন্ন সংস্করণ 0.13-এ সিরিজ থেকে আহরণ করা হবে NDFrame শুধুমাত্র বর্গ।
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'>,)
সুতরাং আমার বুঝতে এখন যে কোনও ডাটাফ্রেমের উদাহরণে সুনির্দিষ্ট কিছু পদ্ধতি রয়েছে যা সারি এবং কলামগুলি থেকে ডেটা উত্তোলনের পথে নিয়ন্ত্রণের জন্য তৈরি করা হয়েছিল cra
এই নিষ্কাশন পদ্ধতিগুলি
কীভাবে কাজ করে সেগুলি এই পৃষ্ঠায় বর্ণিত হয়েছে:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing
আমরা এটিতে ড্যান অ্যালান এবং অন্যান্য পদ্ধতি দ্বারা প্রদত্ত পদ্ধতিটি পাই।
কেন এই নিষ্কাশন পদ্ধতিগুলি যেমন ছিল তেমন তৈরি করা হয়েছিল?
এটি অবশ্যই কারণ ডেটা বিশ্লেষণে আরও ভাল সম্ভাবনা এবং স্বাচ্ছন্দ্য প্রদানকারী হিসাবে তাদের মূল্যায়ন করা হয়েছে।
এই বাক্যটিতে যা প্রকাশ করা হয়েছে তা অবিকল:
পান্ডাস ডেটা স্ট্রাকচারগুলি সম্পর্কে ভাবার সেরা উপায় হ'ল নিম্ন মাত্রিক তথ্যের জন্য নমনীয় পাত্রে।
কেন একটি DataFRame উদাহরণস্বরূপ থেকে তথ্য আহরণ করে না তার কাঠামো মিথ্যা, এটা এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ কেন এই কাঠামো। আমি অনুমান করি যে পান্ডাদের ডেটা স্ট্রাকচারের গঠন এবং কার্যকারিতাটি যতটা সম্ভব বৌদ্ধিকভাবে স্বজ্ঞাত হওয়ার জন্য ছাঁটাই করা হয়েছে এবং বিশদটি বোঝার জন্য ওয়েস ম্যাককিনির ব্লগটি অবশ্যই পড়তে হবে।