আপনি কি জানেন যে কীভাবে ডেটাফ্রেমের সূচি বা কলামটি নুমপি অ্যারে বা পাইথন তালিকা হিসাবে পাবেন?
আপনি কি জানেন যে কীভাবে ডেটাফ্রেমের সূচি বা কলামটি নুমপি অ্যারে বা পাইথন তালিকা হিসাবে পাবেন?
উত্তর:
একটি NumPy অ্যারে পেতে, আপনি values
গুণাবলী ব্যবহার করা উচিত :
In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c']); df
A B
a 1 4
b 2 5
c 3 6
In [2]: df.index.values
Out[2]: array(['a', 'b', 'c'], dtype=object)
এটি কীভাবে ডেটা ইতিমধ্যে সঞ্চিত আছে তা অ্যাক্সেস করে, সুতরাং কোনও রূপান্তরের প্রয়োজন নেই।
দ্রষ্টব্য: এই বৈশিষ্ট্যটি অন্যান্য অনেক পান্ডার অবজেক্টের জন্যও উপলব্ধ।
In [3]: df['A'].values
Out[3]: Out[16]: array([1, 2, 3])
একটি তালিকা হিসাবে সূচক পেতে, কল করুন tolist
:
In [4]: df.index.tolist()
Out[4]: ['a', 'b', 'c']
এবং একইভাবে, কলামগুলির জন্য।
.values
অবহিত করা হয়েছে, .to_numpy()
প্রস্তাবিত প্রতিস্থাপনটি হ'ল যদি আপনি একটি নামপি অ্যারে চান। আপনি কীভাবে প্রসারিত করতে পারেন এটি কীভাবে ডেটা ইতিমধ্যে সঞ্চিত রয়েছে তা অ্যাক্সেস করে, তাই কোনও রূপান্তরের প্রয়োজন নেই ?
আপনি df.index
সূচক বস্তু অ্যাক্সেস করতে ব্যবহার করতে পারেন এবং তারপরে ব্যবহার করে একটি তালিকার মান পেতে পারেন df.index.tolist()
। একইভাবে, আপনি df['col'].tolist()
সিরিজের জন্য ব্যবহার করতে পারেন ।
df.index.values.tolist()
df.index.tolist()
একটি উদাহরণ পদ্ধতি ফেরত দেয় না। এটি সূচকের একটি তালিকা ফেরত দেয়। এটি পান্ডাস সূচকে সংজ্ঞায়িত একটি পদ্ধতি। মানগুলি প্রথমে কল করা একটি সম্ভাবনা হিসাবে, নিমপকে কাজ অর্পণ করা কোনও সংশোধন নয় - কেবল একটি বিকল্প।
.values
এই পদ্ধতির পক্ষে আপনার ব্যবহারকে হ্রাস করুন !V0.24.0 অগ্রে থেকে, আমরা দুই ব্র্যান্ড চমত্কার নতুন, থেকে NumPy অ্যারে প্রাপ্তির জন্য পছন্দসই পদ্ধতি থাকবে Index
, Series
এবং DataFrame
বস্তু: তারা to_numpy()
, এবং .array
। ব্যবহার সম্পর্কে, দস্তাবেজগুলি উল্লেখ করে:
আমরা মুছে ফেলা বা অবমূল্যায়ন করি না
Series.values
বাDataFrame.values
, তবে আমরা উচ্চ প্রস্তাব দিয়েছি এবং ব্যবহার.array
বা এর.to_numpy()
পরিবর্তে।
আরও তথ্যের জন্য v0.24.0 রিলিজ নোটের এই বিভাগটি দেখুন ।
df.index.to_numpy()
# array(['a', 'b'], dtype=object)
df['A'].to_numpy()
# array([1, 4])
ডিফল্টরূপে, একটি ভিউ ফিরে আসে। যে কোনও পরিবর্তনগুলি আসলটিকে প্রভাবিত করবে।
v = df.index.to_numpy()
v[0] = -1
df
A B
-1 1 2
b 4 5
পরিবর্তে আপনার যদি একটি অনুলিপি প্রয়োজন হয়, ব্যবহার করুন to_numpy(copy=True
);
v = df.index.to_numpy(copy=True)
v[-1] = -123
df
A B
a 1 2
b 4 5
মনে রাখবেন যে এই ফাংশনটি ডেটা ফ্রেমগুলির জন্যও কাজ .array
করে (যখন তা করে না)।
array
বৈশিষ্ট্য
এই বৈশিষ্ট্যটিExtensionArray
সূচক / সিরিজকে ব্যাক করে এমনএকটিবস্তু দেয়।
pd.__version__
# '0.24.0rc1'
# Setup.
df = pd.DataFrame([[1, 2], [4, 5]], columns=['A', 'B'], index=['a', 'b'])
df
A B
a 1 2
b 4 5
df.index.array
# <PandasArray>
# ['a', 'b']
# Length: 2, dtype: object
df['A'].array
# <PandasArray>
# [1, 4]
# Length: 2, dtype: int64
এখান থেকে, ব্যবহার করে একটি তালিকা পাওয়া সম্ভব list
:
list(df.index.array)
# ['a', 'b']
list(df['A'].array)
# [1, 4]
বা, কেবল সরাসরি কল করুন .tolist()
:
df.index.tolist()
# ['a', 'b']
df['A'].tolist()
# [1, 4]
কী ফিরিয়ে দেওয়া হয়েছে সে সম্পর্কে ডক্স উল্লেখ করেছে,
জন্য
Series
এবংIndex
স্বাভাবিক NumPy অ্যারে সমর্থন ES,Series.array
একটি নতুন ফিরে আসবেarrays.PandasArray
, যা একটি পাতলা (কোন-অনুলিপি) একটি প্রায় মোড়কের হয়numpy.ndarray
।arrays.PandasArray
এটি নিজস্বভাবে বিশেষভাবে কার্যকর নয়, তবে এটি পান্ডাস বা তৃতীয় পক্ষের লাইব্রেরি দ্বারা সংজ্ঞায়িত কোনও এক্সটেনশন অ্যারের মতো একই ইন্টারফেস সরবরাহ করে।
সুতরাং, সংক্ষেপে বলা হয়, .array
হয় ফিরে আসবে
ExtensionArray
সূচক / সিরিজ বিদ্যমান সমর্থন, বাExtensionArray
থাকে তবে অন্তর্নিহিত অ্যারেটির উপরে একটি পাতলা মোড়ক হিসাবে একটি নতুন অবজেক্ট তৈরি করা হবে।TWO নতুন পদ্ধতি যুক্ত করার যুক্তিযুক্ত কারণগুলি
দুটি GitHub ইস্যু GH19954 এবং GH23623 এর অধীনে আলোচনার ফলাফল হিসাবে এই ফাংশনগুলি যুক্ত করা হয়েছিল ।
বিশেষত, ডক্সে যুক্তিটি উল্লেখ করা হয়েছে:
[...] এর সাথে
.values
এটি স্পষ্ট নয় যে প্রত্যাবর্তিত মানটি আসল অ্যারে, এর কিছু রূপান্তর বা প্যান্ডাস কাস্টম অ্যারেগুলির মধ্যে একটি (যেমনCategorical
) হবে whether উদাহরণস্বরূপ, সঙ্গেPeriodIndex
,.values
একটি নতুন জেনারেট করেndarray
যুগের প্রতিটি সময় অবজেক্ট। [...]
এই দুটি ফাংশন লক্ষ্য করে এপিআইয়ের ধারাবাহিকতা উন্নত করা, যা সঠিক দিকের দিকে একটি বড় পদক্ষেপ।
শেষ অবধি, .values
বর্তমান সংস্করণে হ্রাস করা হবে না তবে আমি প্রত্যাশা করি এটি ভবিষ্যতে কোনও সময় ঘটতে পারে, তাই আমি ব্যবহারকারীদের যত তাড়াতাড়ি সম্ভব নতুন এপিআই-তে অভিবাসন করার জন্য অনুরোধ করব।
পান্ডাস v0.13 যেহেতু আপনি এটি ব্যবহার করতে পারেন get_values
:
df.index.get_values()
get_values
শুধু কল .values
। এটি টাইপ করার জন্য আরও অক্ষর।
আমি পান্ডাস রূপান্তরিত dataframe
করার list
এবং তারপর মৌলিক ব্যবহৃত list.index()
। এটার মতো কিছু:
dd = list(zone[0]) #Where zone[0] is some specific column of the table
idx = dd.index(filename[i])
আপনি যেমন সূচক মান হিসাবে idx
।
নীচে ডেটাফ্রেম কলামকে ন্যালি অ্যারেতে রূপান্তর করার একটি সহজ উপায়।
df = pd.DataFrame(somedict)
ytrain = df['label']
ytrain_numpy = np.array([x for x in ytrain['label']])
ytrain_numpy একটি অদ্ভুত অ্যারে।
আমি চেষ্টা করেছিলাম to.numpy()
তবে এটি আমাকে নীচের ত্রুটিটি দিয়েছে
: টাইপরর: টাইপের জন্য কোনও সমর্থিত রূপান্তর নয়: (dtype ('O')), লিনিয়ার এসভিসি ব্যবহার করে বাইনারি প্রাসঙ্গিক শ্রেণিবিন্যাস করার সময়। to.numpy () ডেটা ফ্রেমকে আঙ্কুল অ্যারেতে রূপান্তর করছিল তবে অভ্যন্তরীণ উপাদানটির ডেটা ধরণের তালিকা ছিল যার কারণে উপরের ত্রুটিটি লক্ষ্য করা গেছে observed
to_numpy
যদিও এটি আসলেই দোষ নয় ।