В Python мы можем сохранить или преобразовать словарь Python в CSV, используя csv.DictWriter(), pandas.DataFrame.to_csv(), file.write(byte) и другие.
В Python существует несколько способов конвертировать или сохранять словарь Python в CSV. Давайте обсудим каждый из этих методов более подробно.
- С помощью DictWriter()
- Используя цикл for
- С помощью Pandas
- С использованием writerows()
- Сохранить словарь в CSV с заголовком
С помощью DictWriter()
Основная задача преобразования словаря Python в файл CSV — чтение данных словаря:
- А класс DictWriter(), который является частью модуля csv, помогает читать и записывать данные словаря в строки.
- После этого мы можем использовать метод writerows() для записи данных словаря в файл csv.
Давайте на примере и проверим, как преобразовать словарь в файл CSV.
Исходный код:
import csv employee_info = ['emp_id', 'emp_name', 'skills'] new_dict = [ {'emp_id': 456, 'emp_name': 'George', 'skills': 'Python'}, {'emp_id': 892, 'emp_name': 'Adam', 'skills': 'Java'}, {'emp_id': 178, 'emp_name': 'Gilchrist', 'skills': 'Mongo db'}, {'emp_id': 155, 'emp_name': 'Elon', 'skills': 'Sql'}, {'emp_id': 299, 'emp_name': 'Mask', 'skills': 'Ruby'}, ] with open('test4.csv', 'w') as csvfile: writer = csv.DictWriter(csvfile, fieldnames = employee_info) writer.writeheader() writer.writerows(new_dict)
- Здесь мы можем определить список «employee_info», и этот список будет использоваться в качестве имен столбцов.
- Теперь, если мы хотим открыть файл в режиме записи, мы можем использовать функцию open(). А чтобы записать первую строку в CSV-файл, мы используем метод writeheader().
- В этом примере метод writerows() предназначен для записи аргумента строки в файловый объект средства записи.
Используя цикл for
Далее давайте обсудим другой способ сохранить словарь Python в CSV с использованием цикла For в Python.
Вот пример, в котором мы преобразуем словарь my_dictionary в файл test6.csv.
import csv my_dictionary = {'values': 678, 'values2': 167, 'values6': 998} with open('test6.csv', 'w') as f: for key in my_dictionary.keys(): f.write("%s, %s\n" %(key, my_dictionary[key]))
В приведенном выше коде сначала мы определим словарь и воспользуемся функцией open() для открытия файла. А чтобы записать данные CSV в файл, мы можем использовать концепцию dict.keys().
С помощью Pandas
- Давайте посмотрим, как преобразовать словарь Python в CSV с помощью модуля pandas.
- В этом примере мы объявим словарь и преобразуем его в фрейм данных, после чего преобразуем его в файл CSV с помощью функции to_csv().
Исходный код:
import pandas as pd new_my_dict = [ {'a': 15, 'n': 81, 'p': 177}, {'a': 18, 'n': 24, 'p': 190}, {'a': 19, 'n': 20, 'p': 156}, ] df = pd.DataFrame.from_dict(new_my_dict) df.to_csv(r'test8.csv', index=False, header=True)
- В приведенном выше коде нам нужно импортировать модуль pandas, а затем создать словарь new_my_dict.
- Здесь мы также конвертируем словарь в DataFrame, используя pd.DataFrame.from_dict().
- Далее мы можем использовать метод to_csv() и передать индекс и заголовок в качестве параметра. Однако эти параметры являются необязательными и передают индекс как «ложь», а заголовок — как «истина».
С использованием writerows()
Сначала в этом методе мы создадим CSV-файл, используя метод open() в Python. После этого мы определяем словарь и используем цикл for для перебора пары ключ-значение словаря и записи ее в CSV-файл с помощью writerows().
Исходный код:
import csv new_path = open("mytest.csv", "w") file_dictionary = {"oliva":199,"james":145,"potter":187} z = csv.writer(new_path) for new_k, new_v in file_dictionary.items(): z.writerow([new_k, new_v]) new_path.close()
Примечание. В переменной «new_path» вам необходимо сохранить свой собственный файл CSV.
Сохранить словарь в CSV с заголовком
В этом разделе мы поймем, как преобразовать словарь в CSV с заголовком. Для этой задачи мы будем использовать метод DictWriter(), который используется для вставки данных в файл CSV.
Пример:
import csv new_dictionary = { "Australia" : 456, "Germany" : 2678, "China" : 1890,"Japan":1667} with open('maintest.csv', 'w', newline='') as csvfile: header_key = ['Country', 'Value'] new_val = csv.DictWriter(csvfile, fieldnames=header_key) new_val.writeheader() for new_k in new_dictionary: new_val.writerow({'Country': new_k, 'Value': new_dictionary[new_k]})
- В этом примере мы определим словарь с именем new_dictionary, который будет использоваться в качестве значений.
- А для раздела заголовка мы определили список header_key.
- После этого мы используем функцию open(), чтобы открыть файл, и использовали концепцию метода dictwriterheader() для передачи ключевого слова имени поля в качестве аргумента.