প্রথমে এর সাথে খেলতে একটি এমসিভে তৈরি করুন :
import pandas as pd
import numpy as np
In [1]: categorical_array = np.random.choice(['Var1','Var2','Var3'],
size=(5,3), p=[0.25,0.5,0.25])
df = pd.DataFrame(categorical_array,
columns=map(lambda x:chr(97+x), range(categorical_array.shape[1])))
# Add another column that isn't categorical but float
df['d'] = np.random.rand(len(df))
print(df)
Out[1]:
a b c d
0 Var3 Var3 Var3 0.953153
1 Var1 Var2 Var1 0.924896
2 Var2 Var2 Var2 0.273205
3 Var2 Var1 Var3 0.459676
4 Var2 Var1 Var1 0.114358
এখন আমরা প্রথম তিনটি কলামকে এনকোড করতে pd.get_dummy ব্যবহার করতে পারি ।
নোট করুন যে আমি drop_first
প্যারামিটারটি ব্যবহার করছি কারণ N-1
ডামিগুলি N
সম্ভাবনার সম্পূর্ণ বিবরণ দেওয়ার জন্য যথেষ্ট (যেমন: যদি হয় a_Var2
এবং a_Var3
0 হয় তবে এটি হয় a_Var1
)। এছাড়াও, আমি বিশেষভাবে কলামগুলি নির্দিষ্ট করছি তবে এটির dtype object
বা categorical
(আরও নীচে) কলাম হবে বলে আমার দরকার নেই।
In [2]: df_encoded = pd.get_dummies(df, columns=['a','b', 'c'], drop_first=True)
print(df_encoded]
Out[2]:
d a_Var2 a_Var3 b_Var2 b_Var3 c_Var2 c_Var3
0 0.953153 0 1 0 1 0 1
1 0.924896 0 0 1 0 0 0
2 0.273205 1 0 1 0 1 0
3 0.459676 1 0 0 0 0 1
4 0.114358 1 0 0 0 0 0
আপনার নির্দিষ্ট অ্যাপ্লিকেশনটিতে আপনাকে কলামের একটি তালিকা প্রদান করতে হবে যা শ্রেণিবদ্ধ, বা আপনাকে কোন কলামগুলি শ্রেণিবদ্ধ বলে নির্ধারণ করতে হবে।
আপনার ডেটাফ্রেমে ইতিমধ্যে সর্বোত্তম কেস দৃশ্যের সাথে এই কলামগুলি রয়েছে dtype=category
এবং আপনি এতে যেতে columns=df.columns[df.dtypes == 'category']
পারেন get_dummies
।
অন্যথায় আমি dtype
অন্য সমস্ত কলামগুলিকে যথাযথ হিসাবে সেট করার পরামর্শ দিচ্ছি (ইঙ্গিত: pd.to_numeric, pd.to_datetime, ইত্যাদি) এবং আপনি একটি object
dtype আছে কলাম সঙ্গে ছেড়ে যাবে এবং এগুলি আপনার শ্রেণীবদ্ধ কলাম হতে হবে।
পিডি.গেট_ডমিজ প্যারামিটার কলামগুলি ডিফল্ট হিসাবে নিম্নরূপ:
columns : list-like, default None
Column names in the DataFrame to be encoded.
If `columns` is None then all the columns with
`object` or `category` dtype will be converted.