ডাটাফ্রেমকে স্প্রেডশীটে রাখা একটি ডেটা সেট বা সারি এবং কলাম সহ একটি ডাটাবেসের সাথে তুলনা করা যেতে পারে। ডেটাফ্রেম হল একটি 2D অবজেক্ট।
ঠিক আছে, 1D এবং 2D পরিভাষা নিয়ে বিভ্রান্ত?
1D (সিরিজ) এবং 2D (ডেটাফ্রেম) এর মধ্যে প্রধান পার্থক্য হল যেকোন একক ডেটা পয়েন্টে পৌঁছানোর জন্য আপনাকে যতগুলি তথ্যের প্রয়োজন হবে তার সংখ্যা। আপনি যদি একটি সিরিজের একটি উদাহরণ নেন, এবং একটি মান বের করতে চান, তাহলে আপনার শুধুমাত্র একটি পয়েন্ট অব রেফারেন্স অর্থাৎ সারি সূচক প্রয়োজন৷
একটি টেবিলের (ডেটাফ্রেম) সাথে তুলনা করে, একটি তথ্য বিন্দুতে যাওয়ার জন্য রেফারেন্সের একটি পয়েন্ট যথেষ্ট নয়, আপনার সারি মান এবং কলামের মানের একটি ছেদ প্রয়োজন৷
নিচের স্নিপেট দেখায় কিভাবে একটি csv ফাইল থেকে একটি পান্ডাস ডেটাফ্রেম তৈরি করতে হয়।
ডিফল্টরূপে .read_csv() পদ্ধতি একটি ডেটাফ্রেম তৈরি করে। আপনি মুভি অনুসন্ধান করে kaggle.com থেকে মুভি ডেটাসেট ডাউনলোড করতে পারেন।
"""স্ক্রিপ্ট:একটি csv ফাইল থেকে একটি পান্ডাস ডেটাফ্রেম তৈরি করুন।"""pdmovies_dataset pd read_csv হিসাবে পান্ডা আমদানি করুন "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")#1 অবজেক্টটাইপ (চলচ্চিত্র_ডেটাসেট) # 2 প্রিন্ট করুন
| বাজেট | আইডি | মূল_ভাষা | মূল_শিরোনাম | জনপ্রিয়তা | মুক্তির_তারিখ | রাজস্ব | রানটাইম | স্থিতি | শিরোনাম | ভোটের_গড় | ভোট_গণনা |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 237000000 | 19995 | en | অবতার | 150.437577 | 10/12/2009 | 2787965087 | 162.0 | মুক্ত করা হয়েছে | অবতার | 7.2 | 11800 |
1 | 300000000 | 285 | en | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে | 139.082615 | 19/05/2007 | 961000000 | 169.0 | মুক্ত করা হয়েছে | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে | 6.9 | 4500 |
2 | 245000000 | 206647 | en | স্পেক্টার | 107.376788 | 26/10/2015 | 880674609 | 148.0 | মুক্ত করা হয়েছে | স্পেক্টার | 6.3 | 4466 |
3 | 250000000 | 49026 | en | দ্য ডার্ক নাইট রাইজেস | 112.312950 | 16/07/2012 | 1084939099 | 165.0 | মুক্ত করা হয়েছে | দ্য ডার্ক নাইট রাইজেস | 7.6 | 9106 |
4 | 260000000 | 49529 | en | জন কার্টার | 43.926995 | 7/03/2012 | 284139100 | 132.0 | মুক্ত করা হয়েছে | জন কার্টার | 6.1 | 2124 |
2. একটি একক ডেটাফ্রেম কলাম নির্বাচন করা৷ সূচী অপারেটরের কাছে স্ট্রিং বা তালিকা হিসাবে কলামের নাম পাস করা হলে কলামের মানগুলি সিরিজ বা ডেটাফ্রেম হিসাবে ফিরে আসবে৷
যদি আমরা কলামের নামের সাথে একটি স্ট্রিং পাস করি, আপনি আউটপুট হিসাবে একটি সিরিজ পাবেন, তবে, শুধুমাত্র একটি কলামের নামের সাথে তালিকাটি পাস করলে ডেটাফ্রেম ফিরে আসবে। আমরা উদাহরণ সহ এটি দেখতে পাব।
# সিরিজ মুভি_ডেটাসেট হিসেবে ডেটা নির্বাচন করুন["title"]
0 Avatar1 Pirates of the Caribbean:At World's End2 Spectre3 The Dark Knight Rises4 John Carter...4798 El Mariachi4799 Newlyweds4800 Signed, Sealed, Delivered4801 Shanghai Calling4802 My Date with DrewName:title, Length:4 object: পূর্বে>
# ডেটাফ্রেম মুভি_ডেটাসেট হিসেবে ডেটা নির্বাচন করুন[["title"]]
| শিরোনাম |
---|---|
0 | অবতার |
1 | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে |
2 | স্পেক্টার |
3 | দ্য ডার্ক নাইট রাইজেস |
4 | জন কার্টার |
... | ... |
4798 | এল মারিয়াচি |
4799 | নব দম্পতি |
4800 | স্বাক্ষরিত, সিল করা, বিতরণ করা হয়েছে |
4801 | সাংহাই কলিং |
4802 | ড্রুর সাথে আমার ডেট |
3. একাধিক ডেটাফ্রেম কলাম নির্বাচন করা৷
৷# একাধিক ডেটাফ্রেম কলাম চলচ্চিত্র_ডেটাসেট[["title""রানটাইম","vote_average","vote_count"]]
| শিরোনাম | রানটাইম | ভোটের_গড় | ভোট_গণনা |
---|---|---|---|---|
0 | অবতার | 162.0 | 7.2 | 11800 |
1 | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে | 169.0 | 6.9 | 4500 |
2 | স্পেক্টার | 148.0 | 6.3 | 4466 |
3 | দ্য ডার্ক নাইট রাইজেস | 165.0 | 7.6 | 9106 |
4 | জন কার্টার | 132.0 | 6.1 | 2124 |
... | ... | ... | ... | ... |
4798 | এল মারিয়াচি | 81.0 | 6.6 | 238 |
4799 | নব দম্পতি | 85.0 | 5.9 | 5 |
4800 | স্বাক্ষরিত, সিল করা, বিতরণ করা হয়েছে | 120.0 | 7.0 | 6 |
4801 | সাংহাই কলিং | 98.0 | 5.7 | 7 |
4802 | ড্রুর সাথে আমার ডেট | 90.0 | 6.3 | 16 |
কোড পঠনযোগ্যতার সমস্যাগুলি এড়াতে, আমি সর্বদা একটি তালিকা হিসাবে কলামগুলির নাম ধরে রাখার জন্য একটি পরিবর্তনশীল সংজ্ঞায়িত করার পরামর্শ দিই এবং কোডের মধ্যে একাধিক কলামের নাম উল্লেখ না করে কলামের নাম ব্যবহার করুন৷
কলাম=["শিরোনাম","রানটাইম","ভোট_গড়","ভোট_গণনা"]চলচ্চিত্র_ডেটাসেট[কলাম]
| শিরোনাম | রানটাইম | ভোটের_গড় | ভোট_গণনা |
---|---|---|---|---|
0 | অবতার | 162.0 | 7.2 | 11800 |
1 | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে | 169.0 | 6.9 | 4500 |
2 | স্পেক্টার | 148.0 | 6.3 | 4466 |
3 | দ্য ডার্ক নাইট রাইজেস | 165.0 | 7.6 | 9106 |
4 | জন কার্টার | 132.0 | 6.1 | 2124 |
... | ... | ... | ... | ... |
4798 | এল মারিয়াচি | 81.0 | 6.6 | 238 |
4799 | নব দম্পতি | 85.0 | 5.9 | 5 |
4800 | স্বাক্ষরিত, সিল করা, বিতরণ করা হয়েছে | 120.0 | 7.0 | 6 |
4801 | সাংহাই কলিং | 98.0 | 5.7 | 7 |
4802 | ড্রুর সাথে আমার ডেট | 90.0 | 6.3 | 16 |
4. কলামের নাম অনুসারে ডেটাফ্রেম কলাম।
.filter() পদ্ধতি
একটি স্ট্রিং ব্যবহার করে কলামগুলি অনুসন্ধান এবং নির্বাচন করার জন্য এই পদ্ধতিটি বেশ সহজ৷ এটি এসকিউএল-এর %% প্যারামিটারের মতো একইভাবে কাজ করে। মনে রাখবেন, .filter() পদ্ধতি শুধুমাত্র কলামের নাম পরিদর্শন করে কলাম নির্বাচন করে এবং প্রকৃত ডেটা মান নয়।
.filter() পদ্ধতি তিনটি প্যারামিটার সমর্থন করে যা নির্বাচন পরিচালনার জন্য ব্যবহার করা যেতে পারে।
.লাইক
.regex
.items
যেমন প্যারামিটার একটি স্ট্রিং নেয় এবং কলামের নামের কোথাও এই স্ট্রিংটি ধারণ করে এমন কলামের নামগুলি খুঁজে বের করার চেষ্টা করে৷
# "title" movies_dataset.filter(like="title").head(5)
| মূল_শিরোনাম | শিরোনাম |
---|---|---|
0 | অবতার | অবতার |
1 | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে | ক্যারিবিয়ান জলদস্যু:বিশ্বের শেষে |
2 | স্পেক্টার | স্পেক্টার |
3 | দ্য ডার্ক নাইট রাইজেস | দ্য ডার্ক নাইট রাইজেস |
4 | জন কার্টার | জন কার্টার |
.regex – নিয়মিত এক্সপ্রেশন ব্যবহার করে কলামের নাম নির্বাচন করার আরও নমনীয় উপায়
# "t"movies_dataset.filter(regex=t).head() দিয়ে শেষ হওয়া কলামগুলি নির্বাচন করুন
| বাজেট | ভোট_গণনা |
---|---|---|
0 | 237000000 | 11800 |
1 | 300000000 | 4500 |
2 | 245000000 | 4466 |
3 | 250000000 | 9106 |
4 | 260000000 | 2124 |
.items – স্ট্রিং বা তালিকা অপারেটরের কাছে কলামের নাম পাস করার ডুপ্লিকেট, KeyError ব্যতীত উত্থাপিত হবে না
ডেটা প্রকার অনুসারে ডেটাফ্রেম কলাম।
.select_dtypes পদ্ধতিটি কলাম ডেটা টাইপগুলিতে কাজ করে যদি আপনি ফিল্টার করতে এবং শুধুমাত্র নির্দিষ্ট ডেটা প্রকার ব্যবহার করতে আগ্রহী হন৷
আবার, .select_dtypes পদ্ধতি একাধিক ডেটা প্রকার (একটি তালিকা দ্বারা) বা একক ডেটা টাইপ (একটি স্ট্রিং হিসাবে) এর অন্তর্ভুক্ত বা বাদ পরামিতি গ্রহণ করে এবং শুধুমাত্র সেই প্রদত্ত ডেটা প্রকারের কলামগুলির সাথে একটি ডেটাফ্রেম প্রদান করে৷
.include প্যারামিটারে নির্দিষ্ট ডেটা টাইপ/s সহ কলাম অন্তর্ভুক্ত থাকে এবং .exclude নির্দিষ্ট ডেটা টাইপ সহ কলামগুলিকে উপেক্ষা করবে৷
আসুন প্রথমে ডেটা প্রকারগুলি এবং সেই ডেটা প্রকারগুলির সাথে কলামগুলির গণনা দেখি
movies_dataset=pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv"movies_dataset.dtypes.value_counts()
অবজেক্ট 5int64 4float64 3dtype:int64
ক) পান্ডা ডেটাফ্রেম থেকে পূর্ণসংখ্যার ডেটা প্রকারগুলি ফিল্টার করা৷
৷movies_dataset select_dtypes(include="int")head(3)
1 |
---|
0 |
|
খ)। পান্ডা ডেটাফ্রেম থেকে পূর্ণসংখ্যা এবং ভাসমান ডেটা প্রকার নির্বাচন করুন৷
৷আপনি নীচের একটি তালিকা হিসাবে একাধিক ডেটা প্রকার নির্দিষ্ট করতে পারেন৷
৷movies_dataset select_dtypes(include="int64","float"]).head(3)
| বাজেট | আইডি | জনপ্রিয়তা | রাজস্ব | রানটাইম | ভোটের_গড় | ভোট_গণনা |
---|---|---|---|---|---|---|---|
0 | 237000000 | 19995 | 150.437577 | 2787965087 | 162.0 | 7.2 | 11800 |
1 | 300000000 | 285 | 139.082615 | 961000000 | 169.0 | 6.9 | 4500 |
2 | 245000000 | 206647 | 107.376788 | 880674609 | 148.0 | 6.3 | 4466 |
গ) ঠিক আছে, আপনি যদি সব সাংখ্যিক ডেটা টাইপ চান, শুধু নম্বর নির্দিষ্ট করুন
movies_dataset select_dtypes(include="number"]).head(3)
| বাজেট | আইডি | জনপ্রিয়তা | রাজস্ব | রানটাইম | ভোটের_গড় | ভোট_গণনা |
---|---|---|---|---|---|---|---|
0 | 237000000 | 19995 | 150.437577 | 2787965087 | 162.0 | 7.2 | 11800 |
1 | 300000000 | 285 | 139.082615 | 961000000 | 169.0 | 6.9 | 4500 |
2 | 245000000 | 206647 | 107.376788 | 880674609 | 148.0 | 6.3 | 4466 |
d) পান্ডা ডেটাফ্রেম থেকে নির্দিষ্ট ডেটা প্রকারগুলি বাদ দিন৷
৷
movies_dataset select_dtypes(exclude="object"]).head(3)
| বাজেট | আইডি | জনপ্রিয়তা | রাজস্ব | রানটাইম | ভোটের_গড় | ভোট_গণনা |
---|---|---|---|---|---|---|---|
0 | 237000000 | 19995 | 150.437577 | 2787965087 | 162.0 | 7.2 | 11800 |
1 | 300000000 | 285 | 139.082615 | 961000000 | 169.0 | 6.9 | 4500 |
2 | 245000000 | 206647 | 107.376788 | 880674609 | 148.0 | 6.3 | 4466 |
দ্রষ্টব্য :- মোকাবেলা করার জন্য স্ট্রিং ডেটা টাইপ নেই, পান্ডা সেগুলিকে অবজেক্টে রূপান্তর করে, তাই আপনি যদি "TypeError:ডেটা টাইপ "স্ট্রিং" বোঝা যায় না" ব্যতিক্রমের সম্মুখীন হন, তাহলে পরিবর্তে স্ট্রিংকে অবজেক্ট দিয়ে প্রতিস্থাপন করুন।