اعتمادًا على المشروع الذي تعمل عليه، يمكن أن تأتي بياناتك بتنسيقات متعددة. لذا، من المهم أن تكون مرتاحًا في التعامل مع البيانات بتنسيقات متنوعة. JSON وCSV تنسيقان شائعان للغاية. سنوضح لك في هذه المقالة كيفية تحويل تنسيق JSON إلى CSV في بايثون.
تنسيق ملف JSON
JSON (JavaScript Object Notation) هو تنسيق ملف خفيف الوزن وسهل الفهم يستخدم لتخزين البيانات ونقلها. يمكن قراءته بواسطة الإنسان – إذا فتحت الملف في محرر نصوص، فستتمكن من فهم وتفسير بنية الملف والبيانات الموجودة فيه.
إذا كنت تعرف قواميس بايثون، فقد يبدو هيكل JSON مألوفًا. يبدو محتوى ملف JSON على هذا النحو:
{
"first_name": "Arna",
"last_name": "Gunnarsson",
"age": 38,
"email":"arna.gunnarsson@email.com",
"hobbies":["tennis", "cooking"],
"married":false
}
تحتوي ملفات JSON على أزواج اسم:قيمة. هناك العديد من أنواع البيانات المسموح بها، مثل السلاسل والأرقام والمصفوفات (قوائم مرتبة داخل أقواس مربعة) والقيم المنطقية (صواب، خطأ). كما يُسمح بالكائنات المتداخلة (أزواج اسم:قيمة) والقيم الفارغة.
تنسيق ملف CSV
تعد ملفات CSV (القيم المفصولة بفواصل) أيضًا طريقة شائعة جدًا لتخزين البيانات ونقلها. يشبه التنسيق جدول بيانات Excel؛ حيث تكون مثيلات البيانات عبارة عن صفوف في الملف، ويتم فصل القيم بفاصلة. يمكن استخدام عارض ملفات CSV عبر الإنترنت لعرض الملفات بسهولة. يمكن أيضًا عرض الملفات في محرر نصوص وتبدو مثل هذا إلى حد ما:
first_name,last_name,age,email,hobbies,married
Arna,Gunnarsson,38,arna.gunnarsson@email.com,"tennis,cooking",false
هناك قدر أقل من التوحيد مع ملفات CSV. تسمح بعض التطبيقات أو تتطلب علامات الاقتباس حول الحقول. يتطلب وجود فاصلة في بياناتك وضع علامات اقتباس حول الإدخال. قد تحتوي بعض الملفات حتى على فاصل مختلف (مثل علامة التبويب أو الفاصلة المنقوطة أو المسافة البيضاء) ولكنها لا تزال تُعطى معرّف ملف .csv
.
التحويل من JSON إلى CSV
قد تكون هناك حالات تريد فيها التحويل من JSON إلى CSV. ربما تعمل على مشروع يجمع البيانات من مصادر مختلفة ولكل مصدر تنسيق مختلف. أو ربما لديك بيانات بتنسيق JSON فقط، ولكن البرنامج النصي الذي أعطاك إياه زميلك يتطلب بيانات بتنسيق CSV. في هذه الحالة، سيتعين عليك التحويل من تنسيق إلى آخر.
فيما يلي مثال لملف JSON سنعمل معه. انسخ البيانات التالية إلى ملف نصي واحفظه بصيغة data.json
. سنعرض لك طريقتين للانتقال من ملف JSON إلى نفس البيانات بتنسيق CSV. إليك ملف JSON الذي سنستخدمه:
[
{
"first_name":"Arna",
"last_name":"Gunnarsson",
"age":38,
"email":"arna.gunnarsson@email.com"
},
{
"first_name":"Inga",
"last_name":"Hagen",
"age":32,
"email":"ihgn_91@webmail.dk"
}
]
وحدتي json وcsv
يمكن استخدام وحدة json
في بايثون لقراءة وكتابة بيانات JSON. دوالها الرئيسية هي load()
وloads()
لتحميل كائن ملف أو سلسلة وdump()
وdumps()
للكتابة في ملف JSON.
سنبدأ بالقراءة في بيانات JSON الخاصة بنا باستخدام open()
:
>>> import json
>>> with open('data.json') as f:
... json_data = json.load(f)
كائن json_data
عبارة عن قائمة قواميس؛ كل قاموس يتوافق مع صف سنكتبه في ملف CSV. للقيام بذلك، سنستفيد من وحدة csv في بايثون:
>>> import csv
>>> headers = json_data[0].keys()
>>> with open('data1.csv', 'w', newline='\n') as f:
... writer = csv.DictWriter(f, fieldnames=headers)
... writer.writeheader()
... writer.writerows(json_data)
هنا، نستخرج أولاً العناوين الرئيسية كمفاتيح للقاموس الأول في القائمة. فقط انتبه إلى أننا نفترض أن جميع القواميس في القائمة لها نفس المفاتيح. قد يكون من المفيد التحقق من ذلك صراحةً. حاول إنشاء هذه الوظيفة بنفسك.
بعد ذلك، نفتح كائن ملف باسم data1.csv
وحرف السطر الجديد (المُعرَّف باسم ‘\n
‘) حتى نتمكن من كتابة البيانات في هذا الملف. في السطر التالي، نقوم بإنشاء كائن DictWriter
، الذي يربط القواميس في صفوف الإخراج. وأخيرًا، نكتب بيانات الرأس، متبوعة بكل صف باستخدام الدالتين writeheader()
وwriterows()
.
لمزيد من المعلومات حول وحدة csv، راجع دليل وحدة csv في بايثون، وكيفية قراءة ملفات CSV في Python، وقراءة ملف CSV في قائمة في بايثون.
pandas هو صديقك
توجد طريقة لتحقيق نفس النتيجة باستخدام وحدة واحدة وعدد أقل بكثير من أسطر التعليمات البرمجية. وهذا يجعل عملية تحويل JSON إلى CSV أسهل وأكثر قابلية للقراءة وأقل عرضة للأخطاء. والسر هو مكتبة pandas:
>>> import pandas as pd
>>> df = pd.read_json('data.json')
>>> df.to_csv('data2.csv', index=False)
هنا نقوم ببساطة بقراءة البيانات مباشرةً من JSON إلى إطار بيانات pandas. ثم نحولها إلى CSV ونكتبها في ملف في سطر واحد. يضمن ضبط index=False
عدم كتابة الفهرس من إطار بيانات pandas إلى الملف data2.csv
.
بعد تجربة هاتين الطريقتين، في كلتا الحالتين يجب أن يبدو ملف CSV بهذا الشكل:
first_name,last_name,age,email
Arna,Gunnarsson,38,arna.gunnarsson@email.com
Inga,Hagen,32,ihgn_91@webmail.dk
أين نذهب بعد ذلك مع بيانات JSON وCSV؟
تعتبر وحدات json وcsv أساسية للغاية. وقد حصلت على مكانة ضمن أفضل 15 مكتبة Python لعلوم البيانات.
بمجرد إتقانك لأساسيات بايثون، من المهم الاستمرار في إضافة مهارات جديدة. اطلع على مسار معالجة البيانات باستخدام بايثون، والذي يغطي بعض الجوانب المتقدمة للعمل بالبيانات. عندما تشعر بالراحة في العمل بالبيانات في بايثون، ستحتاج إلى استخدامها لإنتاج تصورات وجداول لنقل المعلومات. يمكن أن توفر المقالة كيفية طباعة الجداول بشكل جميل في بايثون بعض الإلهام حول كيفية تقديم المعلومات بشكل أفضل للأشخاص الذين يحتاجون إليها لاتخاذ القرارات.
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.