В Python словари обычно используются для хранения пар ключ-значение. Преобразование словаря в файл CSV может быть полезно для анализа и хранения данных. В этой статье мы рассмотрим шесть различных методов преобразования словаря в файл CSV, где ключи словаря будут представлены в виде строк, а подразделы — в виде столбцов. Для лучшего понимания каждый метод будет сопровождаться примером кода.
Метод 1. Использование модуля csv
import csv
def dict_to_csv(dictionary):
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Keys'] + list(dictionary.keys()))
for subkey in set().union(*dictionary.values()):
writer.writerow([subkey] + [dictionary.get(key, {}).get(subkey, '') for key in dictionary.keys()])
Метод 2. Использование панд
import pandas as pd
def dict_to_csv(dictionary):
df = pd.DataFrame.from_dict(dictionary, orient='index').transpose()
df.to_csv('output.csv', index=False)
Метод 3. Использование библиотеки таблиц
from tabulate import tabulate
import csv
def dict_to_csv(dictionary):
transposed_dict = {k: {subkey: dictionary[subkey][k] for subkey in dictionary} for k in dictionary[next(iter(dictionary))]}
table = tabulate(transposed_dict, headers="keys", tablefmt="csv")
with open('output.csv', 'w', newline='') as file:
file.write(table)
Метод 4. Использование класса csv.DictWriter
import csv
def dict_to_csv(dictionary):
subkeys = list({subkey for values in dictionary.values() for subkey in values})
with open('output.csv', 'w', newline='') as file:
fieldnames = ['Keys'] + subkeys
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for key in dictionary.keys():
row = {'Keys': key}
row.update({subkey: dictionary[key].get(subkey, '') for subkey in subkeys})
writer.writerow(row)
Метод 5. Использование библиотеки csvkit
from csvkit import DictWriter
def dict_to_csv(dictionary):
subkeys = list({subkey for values in dictionary.values() for subkey in values})
with open('output.csv', 'w', newline='') as file:
writer = DictWriter(file, ['Keys'] + subkeys)
writer.writeheader()
for key in dictionary.keys():
row = {'Keys': key}
row.update({subkey: dictionary[key].get(subkey, '') for subkey in subkeys})
writer.writerow(row)
Метод 6. Использование библиотеки numpy
import numpy as np
def dict_to_csv(dictionary):
subkeys = list({subkey for values in dictionary.values() for subkey in values})
keys = list(dictionary.keys())
data = np.array([[dictionary[key].get(subkey, '') for subkey in subkeys] for key in keys])
np.savetxt('output.csv', data, delimiter=',', fmt='%s', header='Keys,' + ','.join(subkeys), comments='')
В этой статье мы рассмотрели шесть различных методов преобразования словаря в файл CSV с ключами в виде строк и подразделами в виде столбцов. Каждый метод предлагает уникальный подход, что позволяет вам выбрать тот, который лучше всего соответствует вашим потребностям. Предпочитаете ли вы использовать стандартные модули, такие как csv, популярные библиотеки, такие как pandas, или специализированные инструменты, такие как csvkit, теперь в вашем распоряжении есть несколько вариантов.