আমার কাছে মিশ্র প্রকারের কলামগুলির সাথে একটি পান্ডাস ডেটা ফ্রেম রয়েছে এবং আমি কিছু কলামে স্ক্লার্ন এর মিনি_ম্যাক্স_স্কেলার প্রয়োগ করতে চাই। আদর্শভাবে, আমি এই জায়গায় রূপান্তরগুলি করতে চাই, তবে এখনও এটি করার কোনও উপায় খুঁজে পাইনি। আমি নিম্নলিখিত কোড লিখেছি যা কাজ করে:
import pandas as pd
import numpy as np
from sklearn import preprocessing
scaler = preprocessing.MinMaxScaler()
dfTest = pd.DataFrame({'A':[14.00,90.20,90.95,96.27,91.21],'B':[103.02,107.26,110.35,114.23,114.68], 'C':['big','small','big','small','small']})
min_max_scaler = preprocessing.MinMaxScaler()
def scaleColumns(df, cols_to_scale):
for col in cols_to_scale:
df[col] = pd.DataFrame(min_max_scaler.fit_transform(pd.DataFrame(dfTest[col])),columns=[col])
return df
dfTest
A B C
0 14.00 103.02 big
1 90.20 107.26 small
2 90.95 110.35 big
3 96.27 114.23 small
4 91.21 114.68 small
scaled_df = scaleColumns(dfTest,['A','B'])
scaled_df
A B C
0 0.000000 0.000000 big
1 0.926219 0.363636 small
2 0.935335 0.628645 big
3 1.000000 0.961407 small
4 0.938495 1.000000 small
যদি আমি এই রূপান্তরটি সবচেয়ে পছন্দসই / সবচেয়ে কার্যকর উপায় হয় তবে আমি আগ্রহী। আমি কোন উপায় df.apply ব্যবহার করতে পারেন যে ভাল হবে?
আমিও অবাক হয়েছি আমি নিম্নলিখিত কোডটি কাজ করতে পারি না:
bad_output = min_max_scaler.fit_transform(dfTest['A'])
যদি আমি স্কেলারের কাছে একটি পুরো ডেটাফ্রেম পাস করি তবে এটি কাজ করে:
dfTest2 = dfTest.drop('C', axis = 1)
good_output = min_max_scaler.fit_transform(dfTest2)
good_output
আমি বিভ্রান্ত কারণ কেন স্কেলারের কাছে একটি সিরিজ পাস করা ব্যর্থ। উপরের আমার সম্পূর্ণ কার্যকারী কোডে আমি কেবলমাত্র স্কেলারের কাছে একটি সিরিজ পাস করার প্রত্যাশা করেছিলাম তারপর ডেটাফ্রেম কলাম = ছোট আকারের সিরিজে সেট করেছিলাম। আমি এই প্রশ্নটি আরও কয়েকটি জায়গায় জিজ্ঞাসা করেছি, কিন্তু ভাল উত্তর খুঁজে পাইনি। এখানে কী চলছে তা বোঝার জন্য কোনও সহায়তার প্রশংসা করা হবে!
bad_output = in_max_scaler.fit_transform(dfTest['A'].values)
করেনি। @ এলারসম্যানস - হ্যাঁ আমি এই রুটে নেমে যাওয়ার কথা ভেবেছিলাম, এটিকে কেবল কোনও ঝামেলার মতো মনে হচ্ছে। আমি জানি না এটি কোনও ত্রুটিযুক্ত কিনা বা তা নয় যে পান্ডারা একটি স্ক্যালার্ন ফাংশনে পুরো ডেটাফ্রেম দিতে পারে, তবে কোনও সিরিজ নয়। ডেটাফ্রেমের বিষয়ে আমার বোঝা ছিল যে এটি সিরিজের একটি ডিক। "ডেথ অ্যানালাইসিসের জন্য পাইথন" বইয়ে পড়া, এটিতে বলা হয়েছে যে পান্ডগুলি নম্পপি-কেন্দ্রিক প্রয়োগগুলিতে সহজেই ব্যবহার করার জন্য নিমপির উপরে তৈরি করা হয়েছে।
bad_output = min_max_scaler.fit_transform(dfTest['A'].values)
?values
অ্যাট্রিবিউটটি অ্যাক্সেস করা একটি অদ্ভুত অ্যারে প্রদান করে, কোনও কারণে সাইকিট শিখতে এপিআই সঠিকভাবে ডান পদ্ধতিটি কল করবে যা পান্ডাসকে একটি অদ্ভুত অ্যারে প্রদান করে এবং কখনও কখনও তা করে না।