Как записать pandas dataframe в файлы excel
Перейти к содержимому

Как записать pandas dataframe в файлы excel

  • автор:

Как экспортировать фрейм данных Pandas в Excel

Как экспортировать фрейм данных Pandas в Excel

Часто вас может заинтересовать экспорт фрейма данных pandas в Excel. К счастью, это легко сделать с помощью функции pandas to_excel() .

Чтобы использовать эту функцию, вам нужно сначала установить openpyxl , чтобы вы могли записывать файлы в Excel:

pip install openpyxl 

В этом руководстве будет объяснено несколько примеров использования этой функции со следующим фреймом данных:

import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6 

Пример 1: базовый экспорт

В следующем коде показано, как экспортировать DataFrame по определенному пути к файлу и сохранить его как mydata.xlsx :

df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx') 

Вот как выглядит фактический файл Excel:

Пример 2: Экспорт без индекса

В следующем коде показано, как экспортировать DataFrame в определенный путь к файлу и удалить столбец индекса:

df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx', index= False ) 

Вот как выглядит фактический файл Excel:

Пример 3: Экспорт без индекса и заголовка

В следующем коде показано, как экспортировать DataFrame в определенный путь к файлу и удалить столбец индекса и строку заголовка:

df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx', index= False, header= False ) 

Вот как выглядит фактический файл Excel:

Пример 4: Экспорт и имя листа

В следующем коде показано, как экспортировать DataFrame в определенный путь к файлу и назвать рабочий лист Excel:

df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx', sheet_name='this_data') 

Вот как выглядит фактический файл Excel:

Полную документацию по функции to_excel() можно найти здесь .

Python.Pandas. Как записать в excel

введите сюда описание изображения Как записать все данные из цикла? А то при использовании met_skv_3.to_excel(‘metki1.xlsx’,sheet_name=’er’) в файл записываются последние элементы цикла: введите сюда описание изображения

Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
задан 19 окт 2016 в 8:55
Рамиль Фазлиахметов Рамиль Фазлиахметов
25 1 1 золотой знак 1 1 серебряный знак 6 6 бронзовых знаков
по-моему проще будет объединить все DataFrame’s в один и записать этот объединённый DF в Excel
19 окт 2016 в 9:50

Еще я бы не перечитывал Excel в цыкле — можно просто выбирать нужный диапазон столбцов из tab DF. Если выложите куда-нибудь свой Excel файл я мог бы набросать рабочий вариант.

19 окт 2016 в 9:58
@MaxU dropmefiles.com/KJfVT вот файл.
19 окт 2016 в 10:13

@MaxU дело в том, что задача стоит так, что данных диапазонов может быть и не 19 штук, как у меня, а может и больше. Кроме как цикла не имею понятия как делать, и желательно чтобы данные каждого из диапазонов выводились также, как и в исходном файле

19 окт 2016 в 11:11

Результат вы хотите записать в вертикальном виде (т.е. блоки по пять столбцов один под другим) — я вас правильно понимаю?

19 окт 2016 в 11:50

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вот рабочий вариант, который читает Excel файл только один раз:

import pandas as pd fn = r'C:\Temp\.data\primer.xlsx' cols = ['label','x','y','z','value'] df = pd.read_excel(fn, skiprows=4, header=None, parse_cols='C:XFD') dfs = [] for i in range(df.columns.size//5): lbl_col = 5*i x = df.ix[(df[lbl_col] != 0) & (df[lbl_col] != 9999), lbl_col:lbl_col+4] #x.columns = pd.MultiIndex.from_tuples(list(product([i+1], cols))) x.columns = cols dfs.append(x.reset_index(drop=True)) result = pd.concat(dfs, axis=1) #result.to_excel('c:/temp/result.xlsx', startrow=3, index=True) result.to_excel('c:/temp/result.xlsx', startrow=3, index=False) 

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

PS я хотел добавить номера пяти-столбцовых блоков (как в вашем исходном файле: 1-19), т.е. создать multilevel columns :

x.columns = pd.MultiIndex.from_tuples(list(product([i+1], cols))) 

но это пока не имплементировано:

NotImplementedError: Writing to Excel with MultiIndex columns and no index ('index'=False) is not yet implemented. 

Т.е. надо выбирать — либо многоуровневые (красивые) имена столбцов и ненужный индекс, либо нет индекса и одноуровневые имена столбцов.

PPS если нужна «шапка», то сделать это можно подобным образом

Как читать и записывать табличные данные?¶

Всегда проверяйте данные после их чтения. При отображении DataFrame по умолчанию будут отображаться первые и последние 5 строк:

In [3]: titanic Out[3]: PassengerId Survived Pclass . Fare Cabin Embarked 0 1 0 3 . 7.2500 NaN S 1 2 1 1 . 71.2833 C85 C 2 3 1 3 . 7.9250 NaN S 3 4 1 1 . 53.1000 C123 S 4 5 0 3 . 8.0500 NaN S .. . . . . . . . 886 887 0 2 . 13.0000 NaN S 887 888 1 1 . 30.0000 B42 S 888 889 0 3 . 23.4500 NaN S 889 890 1 1 . 30.0000 C148 C 890 891 0 3 . 7.7500 NaN Q [891 rows x 12 columns] 
  • Я хочу увидеть первые 8 строк DataFrame.
In [4]: titanic.head(8) Out[4]: PassengerId Survived Pclass . Fare Cabin Embarked 0 1 0 3 . 7.2500 NaN S 1 2 1 1 . 71.2833 C85 C 2 3 1 3 . 7.9250 NaN S 3 4 1 1 . 53.1000 C123 S 4 5 0 3 . 8.0500 NaN S 5 6 0 3 . 8.4583 NaN Q 6 7 0 1 . 51.8625 E46 S 7 8 0 3 . 21.0750 NaN S [8 rows x 12 columns] 

Интересуют последние N строк, а не первые? Используйте метод tail() . Например, titanic.tail(10) вернет последние 10 строк DataFrame.

Проверить, как pandas интерпретирует каждый из типов данных столбца, можно, запросив атрибут pandas dtypes :

In [5]: titanic.dtypes Out[5]: PassengerId int64 Survived int64 Pclass int64 Name object Sex object Age float64 SibSp int64 Parch int64 Ticket object Fare float64 Cabin object Embarked object dtype: object 

Для каждого столбца указывается используемый тип данных. Типы данных в этом DataFrame : целые числа ( int64 ), числа с плавающей запятой ( float64 ) и строки ( object ).

При запросе dtypes скобки не используются! dtypes является атрибутом DataFrame и Series . Атрибуты DataFrame или Series не нуждаются в скобках. Атрибуты представляют собой характеристику DataFrame и Series , тогда как метод (который требует скобок) делает что-то с DataFrame или Series , как представлено в первом уроке .

  • Мой коллега запросил данные Титаника в виде электронной таблицы.
In [6]: titanic.to_excel("titanic.xlsx", sheet_name="passengers", index=False) 

Эквивалентная функция чтения read_excel() перезагрузит данные в DataFrame :

In [7]: titanic = pd.read_excel("titanic.xlsx", sheet_name="passengers") 
In [8]: titanic.head() Out[8]: PassengerId Survived Pclass . Fare Cabin Embarked 0 1 0 3 . 7.2500 NaN S 1 2 1 1 . 71.2833 C85 C 2 3 1 3 . 7.9250 NaN S 3 4 1 1 . 53.1000 C123 S 4 5 0 3 . 8.0500 NaN S [5 rows x 12 columns] 
  • Меня интересует техническая сводка DataFrame
In [9]: titanic.info() RangeIndex: 891 entries, 0 to 890 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 PassengerId 891 non-null int64 1 Survived 891 non-null int64 2 Pclass 891 non-null int64 3 Name 891 non-null object 4 Sex 891 non-null object 5 Age 714 non-null float64 6 SibSp 891 non-null int64 7 Parch 891 non-null int64 8 Ticket 891 non-null object 9 Fare 891 non-null float64 10 Cabin 204 non-null object 11 Embarked 889 non-null object dtypes: float64(2), int64(5), object(5) memory usage: 83.7+ KB 
  • Это действительно DataFrame .
  • Имеется 891 запись, то есть 891 строка.
  • Каждая строка имеет метку строки ( index ) со значениями в диапазоне от 0 до 890.
  • В таблице 12 столбцов. Большинство столбцов имеют значения в каждой из строк (все 891 значения не non-null ). В некоторых столбцах значения отсутствуют, количество non-null менее 891.
  • Столбцы Name , Sex , Cabin и Embarked состоят из текстовых данных (строки, или object ). Другие столбцы представляют собой числовые данные, некоторые из них представляют собой целые числа ( integer ), некоторые — вещественные числа ( float ).
  • Типы данных (символы, целые числа и так далее) в разных столбцах суммируются путем перечисления dtypes .
  • Также указывается приблизительный объем оперативной памяти, используемой для хранения DataFrame.
ЗАПОМНИТЕ
  • Получение данных в pandas из файлов разных форматов или источников данных поддерживается функциями read_* .
  • Экспорт данных из pandas осуществляется разными методами to_* .
  • Методы head / tail / info и атрибут dtypes удобны для первой проверки.

В руководстве пользователя

Полный обзор возможностей ввода и вывода в pandas см. в разделе руководства пользователя о функциях чтения и записи.

Какие данные обрабатывает pandas?

Pandas Базовый №1. Создание DataFrame и запись в CSV

В этом уроке мы научимся вручную создавать объект DataFrame. Разберем 2 способа создания объекта DataFrame:

  • Из словаря списка
  • Из списка словарей

Также мы научимся записывать DataFrame в файл CSV.

Решение

Сначала нужно импортировать модули pandas и numpy.

# Импорт модулей import pandas as pd import numpy as np
Создадим DataFrame из словаря списков

Создадим списки, которые потом станут столбцами.

# Создадим списки, которые станут столбцами датафрейма name = ['Rocka Rolla', 'Sad Wings of Destiny', 'Sin After Sin', 'Stained Class', 'Killing Machine'] year = [1974, 1976, 1977, 1978, 1978]
# Создадим словарь albums_dict =

Теперь из этого словаря можно создать датафрейм.

# Создаем DataFrame albums_df = pd.DataFrame(albums_dict)
Индексация и как ее изменить

По умолчанию создается Range индекс.

# По умолчанию индексация - это диапазон чисел albums_df.index

Можно вручную изменить индекс.

# Можно задать пользовательскую индексацию albums_df.index = ['a', 'b', 'c', 'd', 'e']
Создание DataFrame из списка словарей

По умолчанию столбцы идут в алфавитном порядке. С помощью параметра columns можно указать порядок столбцов.

albums_df_2 = pd.DataFrame([, ], columns=['year', 'album'])
Запишем результат в CSV

С помощью метода to_csv можно записать датафрейм в CSV файл.

Примененные функции
  • pandas.DataFrame
  • pandas.DataFrame.to_csv
Курс Pandas Базовый
Номер урока Урок Описание
1 Pandas Базовый №1. Создание DataFrame и запись в CSV Познакомимся с объектом DataFrame. Научимся его создавать двумя разными способами и научимся записывать его в файл.
2 Pandas Базовый №2. Создание DataFrame 2 Изучим еще несколько способов создания объекта DataFrame. В этом уроке мы создадим DataFrame из массива numpy, Series, словаря Series.
3 Pandas Базовый №3. Отбор строк и столбцов, Размерность, Импорт CSV Получить информацию о размере DataFrame, отбор строк и столбцов, индексация.
4 Pandas Базовый №4. Операции со столбцами DataFrame Операции со столбцами в Pandas. Переименование столбцов, добавление новых столбцов, изменить существующий столбец, удаление столбцов.
5 Pandas Базовый №5. Операции со строками Объединение по вертикали методами append и concat, Создание строк вручную, Удаление строк методом drop, Фильтрация строк условием или срезом.
6 Pandas Базовый №6. Индексы Зачем нужны индексы, Как задать индекс, Как пользоваться индексами.
7 Pandas Базовый №7. Категории Что такое категориальные переменные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *