একটি পান্ডাস সিরিজ এবং একটি একক-কলাম ডেটা ফ্রেমের মধ্যে পার্থক্য কী?


168

পান্ডারা কেন একটি Seriesএবং একটি একক কলামের মধ্যে পার্থক্য তৈরি করে DataFrame?
অন্য কথায়: Seriesশ্রেণীর অস্তিত্বের কারণ কী ?

আমি মূলত ডেটটাইম সূচী সহ টাইম সিরিজ ব্যবহার করছি, সম্ভবত এটি প্রসঙ্গটি সেট করতে সহায়তা করে।


ভাল তারা স্পষ্টতই পৃথক, আমি মনে করি আপনি নির্দিষ্ট অপারেশনগুলিকে উল্লেখ করছেন যা এখনও আপনার কাছে একটি একক কলামের ডেটাফ্রেম বা একক কলামের ডেটাফ্রেমের ফলে অপারেশনের ফলাফলের কারণে কোনও ডেটাফ্রেম ফেরত দেয়। তবে একটি একক কলাম নির্বাচন করার সময় কোনও দ্বিধা নেই এবং এটি একটি সিরিজে পচে যায়। আপনার সমস্যাটি কী তা বোঝাতে আপনাকে নমুনা কোডটি প্রদর্শন করতে হবে।
এডচুম

সম্ভবত সম্পর্কিত: stackoverflow.com/questions/16782323/...
EdChum

6
মূল বিষয়টি হ'ল আমি বিভিন্ন পদ্ধতি সহ সিরিজ অবজেক্টের প্রয়োজন দেখছি না।
সরোলে

একটির জন্য, একটি নেমস্পেসের পার্থক্য রয়েছে। সিরিজের কেবল শীর্ষ স্তরের নাম থাকে, ডেটাফ্রেমে শীর্ষ স্তরের এবং একটি কলামের নাম থাকে। এটি নতুন কলাম বনাম একটি নতুন সিরিজ প্রক্রিয়াজাতকরণ / তৈরির জন্য সিনট্যাক্সের উল্লেখযোগ্য পার্থক্যের দিকে নিয়ে যেতে পারে।
জন

4
আমি যতদূর বলতে পারি, এখনও এই প্রশ্নের উত্তর দেওয়া উচিত। যদিও এক মনে করতে পারেন DataFrameহিসেবে dictএর Series(যদিও বর্তমান বাস্তবায়ন নয়), এটা এখনও স্পষ্ট নয় কেন আপনি কি কখনও একটি ফিরে আসবে Seriesবস্তুর একটি পরিবর্তে DataFrame(অর্থাত ধারণার দিক থেকে একটি dictএকটি এন্ট্রি সহ)।
অ্যালেক্স

উত্তর:


190

পান্ডাদের ডক্স উদ্ধৃত করা হচ্ছে

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

দ্বি-মাত্রিক আকার-পরিবর্তনীয়, লেবেলযুক্ত অক্ষ (সারি এবং কলাম) সহ সম্ভাব্য ভিন্ন ভিন্ন ট্যাবুলার ডেটা কাঠামো। গাণিতিক ক্রিয়াকলাপগুলি সারি এবং কলাম লেবেল উভয়কেই সাজায়। সিরিজ অবজেক্টের জন্য ডিকের মতো ধারক হিসাবে ভাবা যেতে পারে। প্রাথমিক পান্ডসের ডেটা স্ট্রাকচার।

সুতরাং, সিরিজটি হ'ল একের একক কলামের জন্য ডেটা কাঠামোDataFrame , কেবল ধারণাগতভাবেই নয়, আক্ষরিক অর্থে, অর্থাত্ একটি এর ডেটা DataFrameআসলে সংগ্রহ হিসাবে মেমোরিতে সংরক্ষণ করা হয় Series

আনুষাঙ্গিকভাবে: আমাদের তালিকাগুলি এবং ম্যাট্রিক উভয়ই প্রয়োজন, কারণ ম্যাট্রিকগুলি তালিকা সহ নির্মিত। একক সারি ম্যাট্রিক্স, কার্যকারিতার তালিকাগুলির সমতুল্য যখন এখনও তারা তালিকা তৈরি করে না cannot

তাদের উভয়ই অত্যন্ত অনুরূপ এপিআই রয়েছে তবে আপনি দেখতে পাবেন যে DataFrameপদ্ধতিগুলি সর্বদা আপনার একাধিক কলামের সম্ভাবনা পূরণ করে। এবং, অবশ্যই, আপনি সর্বদা একটিতে অন্য Series(বা সমমানের বস্তু) যুক্ত করতে পারেন, অন্যটিতে DataFrameযুক্ত করার সাথে একটি তৈরি করা জড়িত ।SeriesSeriesDataFrame


2
আপনার উত্তরের জন্য ধন্যবাদ. আমার প্রশ্নটি আমার কোডের একটি বাগ দ্বারা অনুপ্রাণিত হয়েছিল যখন কোনও ডেটাফ্রেমে কোনও নির্বাচন হঠাৎ পরিবর্তে একটি সিরিজ ফেরত দেয় এবং আমি কলামগুলির বৈশিষ্ট্য অ্যাক্সেস করতে পারি না। আমি নই শুধুমাত্র এক বিভ্রান্ত: stackoverflow.com/questions/16782323/...
saroele

আমি দেখি. সম্ভবত তাদের যদি অন্যরকম __repr__আচরণ করা সাহায্য করে তবে আপনি সেগুলি মেশাতে পারবেন না?
পাইথননট

6
আপনি একটি প্রকৃত অভ্যন্তরীণ ডাটা স্ট্রাকচার সম্পর্কে কিছু উপসংহার করতে পারবে না DataFrameথেকে Can be thought of as a dict-like container for Series objects। প্রকৃতপক্ষে, এটি বর্তমানে একটি হিসাবে সঞ্চিত রয়েছে BlockManager(এটি এমন একটি বাস্তবায়ন বিশদ যা আপনার উপর নির্ভর করা উচিত নয়)।
টাইমডিউল

1
আমি এখনও বিভ্রান্ত, তাই আমি কখন সিরিজের পরিবর্তে একক কলামের ডেটাফ্রেম ব্যবহার করব?
ধীরাজ সুবর্ণা

4
আমি প্যাডেন্টিক হতে পারি, তবে আমি কেন ওপেনের সিরিজের উপস্থিতির প্রশ্নের উত্তর দেখতে পাচ্ছি না। আমি সিরিজ এবং ডেটাফ্রেমগুলির মধ্যে সম্পর্কের বর্ণনা দেওয়ার একটি উত্তর দেখছি, তবে কোনও ডেটাফ্রেমের (যেমন একটি মাত্র কলামের সাথে একটি) বিশেষত্ব হওয়ার বিপরীতে আমাদের আলাদা ডেটা টাইপ হিসাবে কেন সিরিজ রাখতে হবে তা বোঝানো একটি উত্তর নয়।
মাইক্রিটিকিয়াস

14

পান্ডাস ডক থেকে http://pandas.pydata.org/pandas-docs/stable/dsintro.html সিরিজ এমন এক-মাত্রিক লেবেলযুক্ত অ্যারে যা কোনও ডাটা টাইপ ধারণ করতে সক্ষম। পান্ডা সিরিজের আকারে ডেটা পড়তে:

import pandas as pd
ds = pd.Series(data, index=index)

ডেটাফ্রেম সম্ভাব্য বিভিন্ন ধরণের কলাম সহ একটি 2-মাত্রিক লেবেলযুক্ত ডেটা কাঠামো।

import pandas as pd
df = pd.DataFrame(data, index=index)

উপরের উভয় সূচকের তালিকায় রয়েছে

উদাহরণস্বরূপ: আমার কাছে নিম্নলিখিত ডেটা সহ একটি সিএসভি ফাইল রয়েছে:

,country,popuplation,area,capital
BR,Brazil,10210,12015,Brasile
RU,Russia,1025,457,Moscow
IN,India,10458,457787,New Delhi

উপরের ডেটা সিরিজ এবং ডেটা ফ্রেম হিসাবে পড়তে:

import pandas as pd
file_data = pd.read_csv("file_path", index_col=0)
d = pd.Series(file_data.country, index=['BR','RU','IN'] or index =  file_data.index)

আউটপুট:

>>> d
BR           Brazil
RU           Russia
IN            India

df = pd.DataFrame(file_data.area, index=['BR','RU','IN'] or index = file_data.index )

আউটপুট:

>>> df
      area
BR   12015
RU     457
IN  457787

2
যদি কেউ নীচে নামার চেষ্টা করে তবে আপনিও কি কোনও কারণ উল্লেখ করার চেষ্টা করতে পারেন?
উমেশ কৌশিক

2
আমি ডাউনভোট করি নি, তবে আপনার কোডটি কাজ করে না। আপনি পরিবর্তন করতে পারেন file_dataথেকে brics, CSV করার জন্য একটি মার্কিন লাইন, এবং পরিবর্তন যোগ ['BR'....'US']করার brics.index। সম্ভবত সঠিক pupuplation
রল্ফব্লাই

@ রल्फব্লি: এই ভুলগুলি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। এগুলি তৈরি করা আমার পক্ষে নির্বোধ ছিল। আমি তাদের পরিবর্তন করেছি। ধন্যবাদ! এবং পড়া সম্পর্কে যে কেবল একটি উদাহরণ আমি তাই এলোমেলো মান গ্রহণ।
উমেশ কৌশিক

4

সিরিজ এমন এক-মাত্রিক অবজেক্ট যা কোনও ডেটা টাইপ যেমন ইন্টিজার, ফ্লোট এবং স্ট্রিং যেমন ধরতে পারে

   import pandas as pd
   x = pd.Series([A,B,C]) 

0 A
1 B
2 C

সিরিজের প্রথম কলামটি সূচক হিসাবে পরিচিত, অর্থাৎ 0,1,2 দ্বিতীয় কলামটি আপনার আসল ডেটা অর্থাৎ এ, বি, সি

ডেটা ফ্রেমগুলি দ্বিমাত্রিক বস্তু যা সিরিজ, তালিকা, অভিধান রাখতে পারে

df=pd.DataFrame(rd(5,4),['A','B','C','D','E'],['W','X','Y','Z'])

2

সিরিজ হ'ল এক-মাত্রিক লেবেলযুক্ত অ্যারে যেকোন ডেটা টাইপ (পূর্ণসংখ্যা, স্ট্রিংস, ফ্লোটিং পয়েন্ট সংখ্যা, পাইথন অবজেক্টস ইত্যাদি) ধরে রাখতে সক্ষম। অক্ষের লেবেলগুলি সম্মিলিতভাবে সূচক হিসাবে উল্লেখ করা হয়। একটি সিরিজ তৈরির প্রাথমিক পদ্ধতিটি কল করতে হবে:

s = pd.Series(data, index=index)

ডেটাফ্রেম সম্ভাব্য বিভিন্ন ধরণের কলাম সহ একটি 2-মাত্রিক লেবেলযুক্ত ডেটা কাঠামো। আপনি এটিকে কোনও স্প্রেডশিট বা এসকিউএল টেবিল বা সিরিজের অবজেক্টগুলির একটি ডিকের মতো ভাবতে পারেন।

 d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
 two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
 df = pd.DataFrame(d)

0

গাড়ি ডেটা আমদানি করুন

import pandas as pd

cars = pd.read_csv('cars.csv', index_col = 0)

এখানে car.csv ফাইলটি কেমন দেখাচ্ছে।

সিরিজ হিসাবে ড্রাইভ_ রাইট কলাম প্রিন্ট করুন:

print(cars.loc[:,"drives_right"])

    US      True
    AUS    False
    JAP    False
    IN     False
    RU      True
    MOR     True
    EG      True
    Name: drives_right, dtype: bool

একক বন্ধনী সংস্করণ একটি পান্ডাস সিরিজ দেয়, ডাবল বন্ধনী সংস্করণ একটি পান্ডাস ডেটা ফ্রেম দেয়।

ডেটা ফ্রেম হিসাবে ড্রাইভ_রাইট কলাম প্রিন্ট করুন

print(cars.loc[:,["drives_right"]])

         drives_right
    US           True
    AUS         False
    JAP         False
    IN          False
    RU           True
    MOR          True
    EG           True

অন্য সিরিজে একটি সিরিজ যুক্ত করা একটি ডেটাফ্রেম তৈরি করে।


1
সম্পাদনার জন্য অনেক ধন্যবাদ। এটি এখন অনেক বেশি ভাল দেখাচ্ছে। @Zoe
abhishek_7081
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.