পরিচয়
মনে হচ্ছে পৃথিবী এক্সেল দ্বারা শাসিত। আমার ডেটা ইঞ্জিনিয়ারিং কাজে আমি অবাক হয়েছি যে আমার কতজন সহকর্মী এক্সেলকে সিদ্ধান্ত নেওয়ার জন্য একটি গুরুত্বপূর্ণ হাতিয়ার হিসেবে ব্যবহার করছেন। যদিও আমি এমএস অফিস এবং তাদের এক্সেল স্প্রেড শীটগুলির একটি বড় অনুরাগী নই, তবুও আমি আপনাকে বড় এক্সেল স্প্রেড শীটগুলিকে কার্যকরভাবে পরিচালনা করার জন্য একটি পরিষ্কার কৌশল দেখাব৷
কিভাবে করবেন..
আমরা সরাসরি প্রোগ্রামে ঝাঁপিয়ে পড়ার আগে, আসুন আমরা পান্ডাদের সাথে এক্সেল স্প্রেডশীটগুলি ডিল করার কিছু মৌলিক বিষয় জেনে নেই।
1. ইনস্টলেশন। এগিয়ে যান এবং openpyxl এবং xlwt ইনস্টল করুন। পাইথন টার্মিনাল থেকে পিপ ফ্রিজ বা পিপ লিস্ট ব্যবহার করে এটি ইনস্টল করা আছে নাকি শুধু উপলব্ধ প্যাকেজ নয় তা যদি আপনি নিশ্চিত না হন।
আমরা প্রথমে একাধিক ডেটা পাস করে একটি এক্সেল স্প্রেড শীট তৈরি করব৷ তারপর আমরা ডাটাগুলিকে পান্ডাস ডেটাফ্রেমে লোড করব৷ আমরা অবশেষে একটি নতুন কাজের বইতে একটি ডেটাফ্রেম ডেটা লিখব৷
৷pd হিসাবে xlsxwriterimport পান্ডা আমদানি করুন
2. ছোট ডেটা সহ একটি এক্সেল স্প্রেড শীট তৈরি করুন। এক্সেল স্প্রেডশীটে অভিধানের ডেটা লেখার জন্য আমাদের একটি ছোট ফাংশন থাকবে। সমস্ত কোড লজিক প্রতিটি ধাপে সংজ্ঞায়িত করা হয়।
# ফাংশন :write_data_to_filesdef write_data_to_files(inp_data, inp_file_name):"""ফাংশন:এই কোডার্ডে পাস করা ডেটা দিয়ে একটি csv ফাইল তৈরি করুন:inp_data :টার্গেট ফাইলফাইল_নাম-এ টুপল ডেটা লিখতে হবে:ডেটা রিটার্ন সংরক্ষণ করতে টার্গেট ফাইলের নাম :noneassumption :ফাইল তৈরি করা হবে এবং এই কোডটি একই ডিরেক্টরিতে রয়েছে।""""প্রিন্ট(f" *** ডেটা লেখা হচ্ছে - {inp_file_name}")# একটি ওয়ার্কবুক তৈরি করুন। ওয়ার্কবুক =xlsxwriter. ওয়ার্কবুক(inp_file_name)# যোগ করুন a worksheet.worksheet =workbook.add_worksheet()# প্রথম ঘর থেকে শুরু করুন। সারি এবং কলাম শূন্য indexed.row =0col =0# ইনপুট ডেটা পড়ুন এবং প্লেয়ারের জন্য সারি এবং কলামে লিখুন, inp_data-এ শিরোনাম:worksheet.write(row, col, player)worksheet.write(row, col + 1, titles) সারি +=1# বন্ধ করুন workbook.workbook.close()print(f" *** এতে ডেটা লেখা সম্পূর্ণ হয়েছে - {inp_file_name}")
# ফাংশন :excel_functions_with_pandasdef excel_functions_with_pandas(inp_file_name):"""ফাংশন :ফাংশনগুলির দ্রুত ওভারভিউ আপনি এক্সেলে pandasargs এর সাথে আবেদন করতে পারেন :inp_file_name :input excel spread sheet.return :noneassumption এবং স্প্রেডশিটে একই কোড রয়েছে """ডেটা =pd.read_excel(inp_file_name)# প্রিন্ট টপ 2 সারি প্রিন্ট(f" *** - {inp_file_name} এর উপরের 2 সারি প্রদর্শন করা হচ্ছে \n {data.head()} ")# ডেটা টাইপপ্রিন্ট দেখুন( f" *** {inp_file_name} সম্পর্কে তথ্য প্রদর্শন করা হচ্ছে - {data.info()}")# একটি নতুন স্প্রেডশীট "Sheet2" তৈরি করুন এবং এতে ডেটা লিখুন।new_players_info =pd.DataFrame(data=[{"players":" নতুন রজার ফেদেরার", "টাইটেল":20},{"প্লেয়ার্স":"নতুন রাফায়েল নাদাল", "টাইটেল":20},{"প্লেয়ার্স":"নতুন নোভাক জোকোভিচ", "টাইটেল":17},{" players":"নতুন অ্যান্ডি মারে", "টাইটেল":3}], কলাম=["প্লেয়ার্স", "টাইটেল"])new_data =pd.ExcelWriter(inp_file_name)new_players_info.to_excel(new_data, sheet_name="Sheet2") if __name__ =='__main__':# আপনার ফাইলের নাম এবং datafile_na সংজ্ঞায়িত করুন me ="temporary_file.xlsx"# স্টোরেজ ফাইল_ডেটার জন্য টিপল ডেটা =(['প্লেয়ার', 'টাইটেল'], ['ফেদেরার', 20], ['নাদাল', 20], ['জোকোভিচ', 17], [' মারে', 3])# ফাইল_ডেটা ফাইল_নামে লিখুন# লিখুন_ডাটা_টু_ফাইল(ফাইল_ডেটা, ফাইল_নাম)# # এক্সেল ফাইলটি পান্ডায় পড়ুন এবং ফাংশন প্রয়োগ করুন।
if __name__ =='__main__':# আপনার ফাইলের নাম এবং datafile_name ="temporary_file.xlsx" # টিপল ডেটা স্টোরেজফাইল_ডেটার জন্য সংজ্ঞায়িত করুন =(['প্লেয়ার', 'টাইটেল'], ['ফেদেরার', 20], [' 'Nadal', 20], ['Jokovic', 17], ['Murray', 3])# file_data লিখুন file_name# write_data_to_files(file_data, file_name)# # এক্সেল ফাইলটি পান্ডায় পড়ুন এবং ফাংশন প্রয়োগ করুন। # excel_functions_with_pandas( ফাইল_নাম)আউটপুট
*** ডেটা লেখা - temporary_file.xlsx**** - temporary_file.xlsx** এ ডেটা লেখা সম্পূর্ণ হয়েছে - temporary_file.xlsxplayer শিরোনাম0 ফেদেরার 201 নাদাল 202 জোকোভিচ 173 মারে 3 এর শীর্ষ 2 সারি প্রদর্শন করা হচ্ছে pandas.core.frame.DataFrame'>রেঞ্জ ইনডেক্স:4টি এন্ট্রি, 0 থেকে 3ডেটা কলাম (মোট 2টি কলাম):# কলাম নন-নাল কাউন্ট ডিটাইপ--------------- ---- -----0 প্লেয়ার 4 নন-নাল অবজেক্ট1 শিরোনাম 4 নন-নাল int64dtypes:int64(1), অবজেক্ট(1)মেমরি ব্যবহার:192.0+ বাইট*** temporary_file.xlsx সম্পর্কে তথ্য প্রদর্শন করা হচ্ছে - কোনটিই নয়প্রে>এখন বড় csv ফাইলগুলির সাথে কাজ করার সময় আমাদের কাছে খণ্ডগুলিকে খণ্ডে প্রক্রিয়া করার জন্য খণ্ডগুলি সহ বেশ কিছু বিকল্প রয়েছে, তবে এক্সেল স্প্রেড শীটগুলির জন্য পান্ডাস ডিফল্টরূপে খণ্ড বিকল্প সরবরাহ করে না৷
তাই নিচের প্রোগ্রামটি বেশ সহায়ক যদি আপনি এক্সেল স্প্রেড শীটকে খণ্ডে প্রসেস করতে চান।
উদাহরণ
def global_excel_to_db_chunks(file_name, nrows):"""ফাংশন :এক্সেল স্প্রেডশীটগুলিকে chunksargs এ হ্যান্ডেল করুন :inp_file_name :ইনপুট এক্সেল স্প্রেড শীট. রিটার্ন :noneassumption :এক্সেল স্প্রেডশীট ইনপুট করুন এবং এই কোডটি একই ডিরেক্টরিতে রয়েছে।" ]i_chunk =0# প্রথম সারিটি হেডার। আমরা ইতিমধ্যেই এটি পড়েছি, তাই আমরা এটিকে এড়িয়ে যাই। skiprows =1df_header =pd.read_excel(file_name, nrows=1) যখন True:df_chunk =pd.read_excel(file_name, nrows=nrows, skiprows=skiprows, header=None)skiprows + =nrows# যখন কোনো ডেটা না থাকে, আমরা জানি আমরা লুপ থেকে বেরিয়ে আসতে পারি। যদি df_chunk.shape[0] না হয়:breakelse:print(f" ** {df_chunk.shape[0] এর সাথে খণ্ড সংখ্যা {i_chunk} পড়া } সারি")# প্রিন্ট(f" *** রিডিং খণ্ড {i_chunk} ({df_chunk.shape[0]} সারি)")chunks.append(df_chunk)i_chunk +=1df_chunks =pd.concat(খণ্ডগুলি)# পুনঃনামকরণ করুন খণ্ডগুলিকে header.columns ={i:i এর জন্য col, enumerate(df_header.columns.tolist())}df_chunks.rename(columns=columns, inplace=True)df =pd.concat([[ df_header, df_chunks])print(f' *** খণ্ডে পড়া শেষ হয়েছে...') if __name__ =='__main__':print(f" *** এক্সেল স্প্রেডশীটে পরিসংখ্যান সংগ্রহ ও প্রদর্শন ***") file_name ='Sample-sales-data-excel.xls'stats =pd.read_excel(file_name)print(f" ** স্প্রেডশীটে মোট সারি হল - {len(stat) s.index)} সারি
*** এক্সেল স্প্রেডশীটে পরিসংখ্যান সংগ্রহ ও প্রদর্শন করা ***** স্প্রেডশীটে মোট সারি হল - 9994 সারি** 1000 সারির সাথে খণ্ড নম্বর 0 পড়া** 1000 সারির সাথে খণ্ড নম্বর 1 পড়া** খণ্ড পড়া 1000 সারির সাথে 2 নম্বর ** 1000 সারির সাথে খণ্ড নম্বর 3 পড়া** 1000 সারির সাথে 4 নম্বর খণ্ড পড়া** 1000 সারির সাথে খণ্ড নম্বর 5 পড়া** 1000 সারির সাথে খণ্ড নম্বর 6 পড়া** 1000 সারির সাথে খণ্ড নম্বর 7 পড়া ** 1000 সারির সাথে 8 নম্বর খণ্ড পড়া** 994 সারির সাথে 9 নম্বর খণ্ড পড়া *** খণ্ডে পড়া শেষ হয়েছে...আউটপুট
*** এক্সেল স্প্রেডশীটে পরিসংখ্যান সংগ্রহ ও প্রদর্শন করা ***** স্প্রেডশীটে মোট সারি হল - 9994 সারি** 1000 সারির সাথে খণ্ড নম্বর 0 পড়া** 1000 সারির সাথে খণ্ড নম্বর 1 পড়া** খণ্ড পড়া 1000 সারির সাথে 2 নম্বর ** 1000 সারির সাথে খণ্ড নম্বর 3 পড়া** 1000 সারির সাথে 4 নম্বর খণ্ড পড়া** 1000 সারির সাথে খণ্ড নম্বর 5 পড়া** 1000 সারির সাথে খণ্ড নম্বর 6 পড়া** 1000 সারির সাথে খণ্ড নম্বর 7 পড়া ** 1000 সারির সাথে 8 নম্বর খণ্ড পড়া** 994 সারির সাথে 9 নম্বর খণ্ড পড়া *** খণ্ডে পড়া শেষ হয়েছে...