Python Pandas ( сохранение данных )

Появилась такая проблема: есть данные в pandas.DataFrame, как их сохранить в файл, чтобы они не "потеряли вид" как в DataFrame.

Надо, чтобы получилось так, только в Excele

pandas.DataFrame

С моим кодом получается так:

введите сюда описание изображения

from collections import Counter
import pandas as pd


with open('text.txt') as file:
    words1 = str(file.read()).split()
    words1 = dict(Counter(words1).most_common())

word_dict = {
     'Слова': list(words1),
    'Количество': list(words1.values())
}

x = pd.DataFrame(word_dict, index=range(len(words1)))
print(x)

with open('info.csv', 'w') as f_csv:
    x.to_csv(f_csv)

Ответы (4 шт):

Автор решения: Stepan_78

x.to_excel(result_file, index=False)

→ Ссылка
Автор решения: MarianD

Как я уже написал в комментарии к вашему вопросу, ваш CSV файл (почти) в порядке, только вы его открыли в Excel непригодным способом.

(Вы можете проверить ваш .csv файл тоже например на сайте Online CSV Editor and Viewer.)

Вы делаете это слишком сложно. Здесь упрощенная версия вашей программы с какими-то добавками:

from collections import Counter
import pandas as pd


with open('text.txt') as file:
    words1 = file.read().split()

words1 = Counter(words1).most_common()

x = pd.DataFrame(words1, columns=['Слова', 'Количество'])
print(x)

x.to_csv(f_csv, index=True)

Объяснения:

Команду

words1 = str(file.read()).split()

я упростил на

words1 = file.read().split()

т. к. file.read() уже является строкой.


Часть

word_dict = {
     'Слова': list(words1),
    'Количество': list(words1.values())
}

я просто удалил; вместо word_dict я в конструкторе pd.DataFrame() использовал прямо список парей words1 (т.к. метод .most_common() возвращает список парей (слово, частота)), и имена столбцов 'Слова' и 'Количество' использовал прямо в нем.


Вместо

x = pd.DataFrame(word_dict, index=range(len(words1)))

я использовал

x = pd.DataFrame(words1, columns=['Слова', 'Количество'])

потому что индекс будет стандартно таким, как вы хотели, но я добавил имя столбцов.


Вместо вашего

with open('info.csv', 'w') as f_csv:
    x.to_csv(f_csv)

я использовал просто

x.to_csv('info.csv', index=True)        # вы хотите сохранить тоже index
→ Ссылка
Автор решения: DimitriBolt

Самый постой и быстрый способ сохранять DataFrame - это использовать его родной формат pickle:

yourDataFrame.to_pickle("yourDataFrameFile.pkl")  # Save DataFrame to pickle file
yourDataFrame = read_pickle("yourDataFrameFile.pkl")  # Load DataFrame from pickle file
→ Ссылка
Автор решения: RAMe0

Я пользуюсь XlsxWriter.

pip install XlsxWriter
import pandas as pd

# ...
# ...
# ...

writer = pd.ExcelWriter('filename.xlsx', engine='xlsxwriter')

df.to_excel(writer, 'Data', index=False)

writer.close()
→ Ссылка