পাইথন পান্ডাসে একটি টেমপ্লেট ব্যবহার করে ডেটাফ্রেমে কীভাবে নতুন সারি যুক্ত করবেন।
পরিচয়
ডেটা ইঞ্জিনিয়ারিং বিশেষজ্ঞ হওয়ার কারণে, আমি প্রায়শই সারিগুলির চেয়ে বেশি প্রাপ্ত কলাম তৈরি করি কারণ বিশ্লেষণের জন্য আমার কাছে ডেটা তৈরি এবং পাঠানোর ভূমিকা অন্যান্য ডাটাবেস বিশেষজ্ঞদের যত্ন নেওয়া উচিত। যাইহোক, এটা সব সময় সত্য নয়।
আমাদের ডেটা পাঠানোর জন্য ডেটা বিশেষজ্ঞ দলের জন্য অপেক্ষা করার পরিবর্তে আমাদের নমুনা সারি তৈরি করতে হবে। এই বিষয়ে আমি সারি তৈরির জন্য সুন্দর কৌশলগুলি দেখাব৷
৷কিভাবে করতে হবে..
এই রেসিপিতে, আমরা .loc অ্যাট্রিবিউট সহ একটি ছোট ডেটাসেটে সারি যুক্ত করে শুরু করব এবং তারপরে .append পদ্ধতি ব্যবহার করব।
1.আসুন আমরা পরে সারি যোগ করার জন্য একটি ডেটাফ্রেম তৈরি করে শুরু করি৷
উদাহরণ
npplayers_info =pd.DataFrame(data=[{"players":"Roger Federer", "titles":20},{"players":"Rafael Nadal", "titles":20 },{"players":"নোভাক জোকোভিচ", "টাইটেল":17},{"players":"Andy Murray", "titles":3}], columns=["players", "titles"])প্রে>আউটপুট
print(players_info.info())
উদাহরণ
রেঞ্জ ইনডেক্স:4টি এন্ট্রি, 0 থেকে 3ডেটা কলাম (মোট 2টি কলাম):# কলাম নন-নাল কাউন্ট ডিটাইপ--------- ---------- -----0 প্লেয়ার 4টি নন-নাল অবজেক্ট1 শিরোনাম 4টি নন-নাল int64dtypes:int64(1), অবজেক্ট(1)মেমরি ব্যবহার:192.0+ bytesNone
1. এখন .loc অ্যাট্রিবিউট ব্যবহার করে ডেটাফ্রেমে নতুন প্লেয়ার "ডোমিনিক থিম" যোগ করা যাক।
new_Player =['Dominic Theim', 1]players_info.loc[4] =new_Player
আউটপুট
প্রিন্ট(players_info)
খেলোয়াড়দের খেতাব0 রজার ফেদেরার 201 রাফায়েল নাদাল 202 নোভাক জোকোভিচ 173 অ্যান্ডি মারে 34 ডমিনিক থিম 1
1. একই .loc অ্যাট্রিবিউট ব্যবহার করে, ডাটাফ্রেমের শেষে নতুন সারি যোগ করা যাক। এখানে আমি দেখাব কিভাবে ডেটাফ্রেমে একটি অভিধান যোগ করতে হয়।
new_player ={'players':'Daniel Medvedev', 'titles':0}players_info.loc[len(players_info)] =new_player
আউটপুট
প্রিন্ট(players_info)
খেলোয়াড়দের খেতাব0 রজার ফেদেরার 201 রাফায়েল নাদাল 202 নোভাক জোকোভিচ 173 অ্যান্ডি মারে 34 ডমিনিক থিম 15 ড্যানিয়েল মেদভেদেভ 0
1. আমরা ডাটাফ্রেমে ডাটা ধারণ করে পান্ডা সিরিজ যোগ করতে পারি।
players_info.loc[len(players_info)] =pd.Series({'players':'Andy Zverev', 'titles':0})
আউটপুট
প্রিন্ট(players_info)
খেলোয়াড়দের খেতাব0 রজার ফেদেরার 201 রাফায়েল নাদাল 202 নোভাক জোকোভিচ 173 অ্যান্ডি মারে 34 ডমিনিক থিম 15 ড্যানিয়েল মেদভেদেভ 06 অ্যান্ডি জাভেরেভ 0
উপসংহার
আমরা .loc পদ্ধতি ব্যবহার করে উপরের ৪টি ধাপে ডেটা যোগ করেছি। .loc বৈশিষ্ট্যটি ডাটাফ্রেমে পরিবর্তন করে।
পরবর্তী কয়েকটি ধাপে, আমরা .append পদ্ধতিটি দেখব, যা কলিং ডেটাফ্রেমকে পরিবর্তন করে না, বরং সংযুক্ত সারি/গুলি সহ ডেটাফ্রেমের একটি নতুন অনুলিপি প্রদান করে।
.append-এর প্রথম আর্গুমেন্ট অবশ্যই অন্য ডেটাফ্রেম, সিরিজ, অভিধান, অথবা একটি তালিকা হতে হবে।
উদাহরণ
# indexplayers_info =pd.DataFrame(data=[{"players":"Roger Federer", "titles":20},{"players":"Rafael Nadal", "titles":20} দিয়ে একটি DataFrame তৈরি করুন ,{"players":"নোভাক জোকোভিচ", "টাইটেল":17},{"players":"Andy Murray", "titles":3}], columns=["players", "titles"],index=["রজার", "নাদাল", "জোকোভিচ", "মারে"])
# .append method.players_info.append({'players':'Daniel Medvedev', 'titles':0}) ব্যবহার করে ডেটাফ্রেমে একটি নতুন সারি (অভিধান) যোগ করুন
TypeError শুধুমাত্র একটি সিরিজ যোগ করতে পারে যদি ignore_index=True বা যদি সিরিজের একটি নাম থাকে
যখন আমি একটি অভিধান যুক্ত করার চেষ্টা করেছি, তখন এটি একটি ব্যতিক্রম উত্থাপন করেছে যা আমাদের প্যারামিটার ignore_index=True ব্যবহার করতে বলেছে। তাই আমাকে এই প্রস্তাবিত প্যারামিটারটি যোগ করতে দিন এবং এটি কী করে তা দেখতে দিন।
new_df =players_info.append({'players':'Daniel Medvedev', 'titles':0}, ignore_index=True)
আউটপুট
প্রিন্ট(f" *** সূচী সহ আসল \n {players_info} \n\n\n *** পরিবর্তিত সূচক \n {new_df}")
**** সূচক প্লেয়ার শিরোনামের সাথে আসল রোজার রজার ফেদেরার 20নাডাল রাফায়েল নাদাল 20 জোকোভিচ নোভাক জোকোভিচ 17মুরে অ্যান্ডি মারে 3*আমি ignore_index=True প্যারামিটার ব্যবহার করার পরে আপনি আউটপুট থেকে কী লক্ষ্য করেছেন? হ্যাঁ, ignore_index True-এ সেট করা হলে, পুরানো সূচী সম্পূর্ণভাবে সরানো হবে এবং 0 থেকে n-1 পর্যন্ত একটি RangeIndex দিয়ে প্রতিস্থাপিত হবে।
আপনি যখন ডেটাফ্রেমে এককভাবে অনেক সারি যোগ করতে চান তখন .append পদ্ধতিটি বেশ কার্যকর।
player1 =pd.Series({'players':'Andy Zverev', 'titles':0}, name='zverev')player2 =pd.Series({'players':'Dominic Theim',' titles ':1}, name='theim')new_df_1 =players_info.append([player1, player2])আউটপুট
প্রিন্ট(new_df_1)খেলোয়াড়দের খেতাব রজার ফেদেরার 20নাডাল রাফায়েল নাদাল 20 জোকোভিচ নোভাক জোকোভিচ 17মুরে অ্যান্ডি মারে 3জভেরেভ অ্যান্ডি জাভেরেভ 0থিম ডমিনিক থিম 1ঠিক আছে, এখন আপনি সারি যোগ করার প্রাথমিক বিষয়গুলি দেখেছেন, আমরা অনেকগুলি কলাম সহ একটি ডেটাফ্রেমে কীভাবে সারি যুক্ত করতে হয় তা নিয়ে আলোচনা করব৷
df =pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")আউটপুট
প্রিন্ট(df.info())উদাহরণ
রেঞ্জ ইনডেক্স:4803 এন্ট্রি, 0 থেকে 4802 ডেটা কলাম (মোট 12টি কলাম):# কলাম নন-নাল কাউন্ট ডিটাইপ------------ ---------- -----0 বাজেট 4803 নন-নাল int641 আইডি 4803 নন-নাল int642 আসল_ভাষা 4803 নন-নাল অবজেক্ট3 আসল_শিরোনাম 4803 নন-নাল অবজেক্ট4 জনপ্রিয়তা 4803 নন-নাল ফ্লোট645 রিলিজ_ডেট 4802 অ- null object6 রাজস্ব 4803 non-null int647 রানটাইম 4801 অ-নাল float648 স্থিতি 4803 non-null object9 শিরোনাম 4803 non-null object10 vote_average 4803 non-null float6411 vote_count 4803 non-null float6411 vote_count 4803 non-floint6(4null6), 4803 non-null float648), (5)মেমরি ব্যবহার:450.4+ KBNone গুগলের এই ডেটাসেটে 12টি কলাম রয়েছে এবং আপনি যদি ম্যানুয়ালি ডেটার নতুন সারিগুলি প্রবেশ করেন তবে একটি কলামের নাম ভুল টাইপ করা বা একটি সম্পূর্ণ ভুলে যাওয়া খুব সহজ। তাহলে কিভাবে আমরা এই সমস্যা এড়াতে পারি? আচ্ছা একটা উপায় আছে, শুধু কলামের নামের একটি টেমপ্লেট তৈরি করুন।
columns_dictionary =df.iloc[0].to_dict()##### আউটপুট:
মুদ্রণ(কলাম_অভিধান)
{'budget':237000000, 'id':19995, 'original_language':'en', 'original_title':'অবতার', 'জনপ্রিয়তা':150.437577, 'release_date':'10/12', 'রেভিনিউ':2787965087, 'রানটাইম':162.0, 'স্ট্যাটাস':'রিলিজ হয়েছে', 'টাইটেল':'অবতার', 'ভোটের_গড়':7.2, 'ভোটের_গণনা':11800}সুতরাং, আপনি এখন বুঝতে পারেন যে আমরা প্রথম সারিটি নিয়েছি এবং এটিকে একটি অভিধানে রূপান্তর করেছি। ঠিক আছে আমরা কলাম এবং মানও পেয়েছি, আসুন এখন পুরানো মানগুলিকে একটি ডিকশনারী বোঝার সাথে সাফ করি যা একটি খালি স্ট্রিং হিসাবে পূর্ববর্তী স্ট্রিং মান নির্ধারণ করে। এবং অন্য সব অনুপস্থিত মান হিসাবে।
এই অভিধানটি এখন আপনি প্রবেশ করতে চান এমন যেকোনো নতুন ডেটার জন্য একটি টেমপ্লেট হিসাবে কাজ করতে পারে৷
উদাহরণ
import datetimenew_data_dict ={}a, b-এর জন্য columns_dictionary.items():if isinstance(b, str):new_data_dict[a] =np.random.choice(list('abcde'))elif isinstance(b, datetime.date):new_data_dict[a] =np.nanelse:new_data_dict[a] =np.nanআউটপুট
মুদ্রণ(নতুন_ডেটা_ডিক্ট)
{'বাজেট':nan, 'id':nan, 'original_language':'e', 'original_title':'a', 'জনপ্রিয়তা':nan, 'release_date':'b', 'revenue':nan, 'রানটাইম':nan, 'status':'e', 'title':'c', 'vote_average':nan, 'vote_count':nan}