অনেক সময় পাইথন বিভিন্ন সোর্স থেকে ডেটা গ্রহণ করে যা CSV, JSON ইত্যাদি বিভিন্ন ফরম্যাটে থাকতে পারে, যেগুলিকে পাইথন লিস্ট বা ডিকশনারিতে রূপান্তর করা যায়। কিন্তু প্যান্ডাস (pandas) এর মতো প্যাকেজ ব্যবহার করে ক্যালকুলেশন বা অ্যানালাইসিস প্রয়োগ করতে হলে, এই ডেটাকে DataFrame-এ রূপান্তর করতে হয়। এই লেখায় আমরা দেখব কিভাবে একটি পাইথন লিস্ট, যার উপাদানগুলো নেস্টেড ডিকশনারি, কে একটি প্যান্ডাস DataFrame-এ রূপান্তর করা যায়।
আমরা প্রথমে নেস্টেড ডিকশনারির তালিকা নিই এবং সেখান থেকে ডেটার সারি (rows) বের করি। তারপর আমরা একটি আরেকটি for লুপ ব্যবহার করে সারিগুলিকে একটি নতুন লিস্টে যুক্ত করি যা eredetligen খালি ছিল। শেষে প্যান্ডাস লাইব্রেরির DataFrame ফাংশন প্রয়োগ করে DataFrame তৈরি করি।
উদাহরণ
import pandas as pd
# দেওয়া নেস্টেড ডিকশনারির তালিকা
data_list = [
{
"Fruit": [{"Price": 15.2, "Quality": "A"},
{"Price": 19, "Quality": "B"},
{"Price": 17.8, "Quality": "C"}],
"Name": "Orange"
},
{
"Fruit": [{"Price": 23.2, "Quality": "A"},
{"Price": 28, "Quality": "B"}],
"Name": "Grapes"
}
]
rows = []
# ডেটা থেকে সারি বের করা
for data in data_list:
data_row = data['Fruit']
n = data['Name']
for row in data_row:
row['Name'] = n
rows.append(row)
# DataFrame-এ রূপান্তর
df = pd.DataFrame(rows)
print(df)
আউটপুট
Price Quality Name 0 15.2 A Orange 1 19.0 B Orange 2 17.8 C Orange 3 23.2 A Grapes 4 28.0 B Grapes
Pivot প্রয়োগ করা
আমরা চাইলে pivot_table ফাংশন ব্যবহার করে ডেটাকে আমাদের পছন্দমতো পুনর্গঠন করতে পারি।
উদাহরণ
import pandas as pd
# নেস্টেড ডিকশনারির তালিকা আরম্ভ করা
data_list = [
{
"Fruit": [{"Price": 15.2, "Quality": "A"},
{"Price": 19, "Quality": "B"},
{"Price": 17.8, "Quality": "C"}],
"Name": "Orange"
},
{
"Fruit": [{"Price": 23.2, "Quality": "A"},
{"Price": 28, "Quality": "B"}],
"Name": "Grapes"
}
]
rows = []
# সারি যুক্ত করা
for data in data_list:
data_row = data['Fruit']
n = data['Name']
for row in data_row:
row['Name'] = n
rows.append(row)
# DataFrame ব্যবহার
df = pd.DataFrame(rows)
df = df.pivot_table(index='Name', columns=['Quality'],
values=['Price']).reset_index()
print(df)
আউটপুট
Name Price Quality A B C 0 Grapes 23.2 28.0 NaN 1 Orange 15.2 19.0 17.8