Функция Pandas df.to_csv()
Часто используемые функции Pandas
to_csv()Это метод DataFrame, используемый для экспорта данных в файл CSV (значения, разделённые запятыми).
CSV — один из самых распространённых форматов экспорта данных. Он хранит табличные данные в виде простого текста, обладает высокой совместимостью, и его могут читать почти все инструменты анализа данных.to_csv()Он обладает широкими возможностями, поддерживает такие опции, как настраиваемые разделители, методы кодирования и обработку индекса, и может удовлетворить различные потребности экспорта.
Базовый синтаксис и параметры
Формат синтаксиса
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None,
columns=None, header=True, index=True, index_label=None,
mode='w', encoding=None, quoting=None, quotechar='"',
line_terminator=None, chunksize=None, date_format=None,
doublequote=True, escapechar=None, ...)
Описание параметра
| Параметр | Type | Описание | Значение по умолчанию |
|---|---|---|---|
| path_or_buf | str, объект пути, файлоподобный объект | Путь к файлу; возвращает строку, если None | Отсутствует |
| sep | str | Разделитель полей | ',' |
| na_rep | str | Представление пропущенных значений | '' |
| float_format | str | Формат чисел с плавающей запятой | Отсутствует |
| columns | list | Укажите столбцы для экспорта | Отсутствует |
| header | bool, list | Экспортировать ли имена столбцов | True |
| index | bool | Экспортировать ли индекс | True |
| index_label | str | Имя столбца индекса | Отсутствует |
| mode | str | Режим записи: 'w' — перезапись, 'a' — добавление | 'w' |
| encoding | str | Кодировка файла | Отсутствует |
Возвращаемое значение
- Тип возвращаемого значения:
Noneилиstr - Если указан путь к файлу, записывает в файл и возвращает None.
- Когда
path_or_buf=NoneЕсли ..., возвращает строку в формате CSV.
Примеры
С помощью следующих примеров полностью освойтеto_csv()Различные варианты использования.
Пример 1: Базовое использование — экспорт в CSV-файл
Сначала создайте DataFrame, затем используйтеto_csv()чтобы экспортировать его в CSV-файл.
Пример
# Создать пример DataFrame
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Пекин', 'Шанхай', 'Гуанчжоу', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df = pd.DataFrame(data)
# Пример 1a: Самый простой экспорт
# path_or_buf: путь к файлу (обязательный параметр — путь к файлу; если здесь задать None, возвращается строка)
csv_string = df.to_csv() # Путь не указан, возвращается строка
print("Возвращённая CSV-строка:")
print(csv_string)
print()
# Экспорт в файл
# По умолчанию индекс и имена столбцов включаются
df.to_csv('output_basic.csv', index=False) # index=False не экспортирует индекс
print("Экспортировано в output_basic.csv")
# Прочитать для проверки
df_check = pd.read_csv('output_basic.csv')
print("nПроверка чтения:")
print(df_check)
Ожидаемый вывод:
返回的 CSV 字符串:
,name,age,city,salary
0,Tom,28,Beijing,8000
1,Jerry,35,Shanghai,12000
2,Mike,42,Guangzhou,15000
3,Lucy,26,Shenzhen,7000
已导出到 output_basic.csv
验证读取:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 保存 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
Анализ кода:
to_csv()По умолчанию экспортируются индекс (первый столбец без имени столбца) и имена столбцов.- Настройка
index=Falseможно не экспортировать индекс, что делает импорт более удобным. - Если путь не указан, возвращается строка в формате CSV.
Пример 2: Пользовательские разделители и форматы
В CSV-файлах могут использоваться разные разделители, а также можно настроить формат числовых значений и пропущенных значений.
Пример
# Создать DataFrame, содержащий пропущенные значения и числа с плавающей точкой
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, None], # Пропущенное значение
'score': [85.5, 92.3, 78.9, 95.0],
'city': ['Beijing', 'Shanghai', None, 'Shenzhen']
}
df = pd.DataFrame(data)
# Пример 2a: Использование точки с запятой в качестве разделителя
df.to_csv('output_semicolon.csv', sep=';', index=False)
print("Экспорт с использованием точки с запятой в качестве разделителя:")
with open('output_semicolon.csv', 'r') as f:
print(f.read())
print()
# Пример 2b: Настройка представления пропущенных значений
df.to_csv('output_na.csv', index=False, na_rep='N/A')
print("Настраиваемое представление пропущенных значений:")
with open('output_na.csv', 'r') as f:
print(f.read())
print()
# Пример 2c: Форматирование чисел с плавающей точкой
# float_format использует строки формата Python
df.to_csv('output_float.csv', index=False, float_format='%.2f')
print("Форматированные числа с плавающей запятой:")
with open('output_float.csv', 'r') as f:
print(f.read())
print()
# Пример 2d: экспорт выбранных столбцов
df.to_csv('output_columns.csv', index=False, columns=['name', 'score'])
print("Экспорт указанных столбцов:")
with open('output_columns.csv', 'r') as f:
print(f.read())
Ожидаемый вывод:
使用分号分隔符导出:
name;age;score;city
Tom;28;85.5;Beijing
Jerry;35;92.3;Shanghai
Mike;42;78.9;Guangzhou
Lucy;;95;Shenzhen
自定义缺失值表示:
name,age,score,city
Tom,28,85.5,Beijing
Jerry,35,92.3,Shanghai
Mike,42,78.9,Guangzhou
Lucy,N/A,95.0,N/A
格式化浮点数:
name,age,score,c列
Tom,28,85.50,Beijing
Jerry,35,92.30,Shanghai
Mike,42,78.90,encoding
Lucy,,95.00,Shenzhen
导出指定列:
name,score
Tom,85.5
Jerry,92.3
自定义分隔符 78.9
Lucy,95.0
Анализ кода:
sepПараметр может задавать любой разделитель, например точку с запятой, табуляцию и т. д.na_repПараметр настраивает строковое представление пропущенных значений; по умолчанию используется пустая строка.float_formatПараметр использует синтаксис строк формата Python.columnsПараметр экспортирует только указанные столбцы.
Пример 3: Обработка индекса и кодировки
Обработка индекса и кодировка файла — частые требования при экспорте.
Пример
# Создать DataFrame с индексом
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Пекин', 'Шанхай', 'Гуанчжоу', 'Shenzhen']
}
df = pd.DataFrame(data)
df.index = ['A001', 'A002', 'A003', 'A004'] # Установить индекс
# Пример 3a: Экспортировать индекс и указать имя столбца индекса
df.to_csv('output_index.csv', index=True, index_label='user_id')
print("С индексом и именем столбца индекса:")
with open('output_index.csv', 'r') as f:
print(f.read())
print()
# Пример 3b: Не экспортировать имена столбцов
df.to_csv('output_no_header.csv', header=False, index=False)
print("Без названий столбцов:")
with open('output_no_header.csv', 'r') as f:
print(f.read())
print()
# Пример 3c: Использование кодировки UTF-8 (поддерживает китайские символы)
df_cn = pd.DataFrame({
'Имя': ['Чжан Сань', 'Ли Сы', 'Ван У'],
'Age': [28, 35, 42],
'Город': ['Пекин', 'Шанхай', 'Гуанчжоу']
})
df_cn.to_csv('output_utf8.csv', index=False, encoding='utf-8-sig') # utf-8-sig поддерживает открытие в Excel
print("Кодировка UTF-8 (с китайскими символами):")
with open('output_utf8.csv', 'r', encoding='utf-8-sig') as f:
print(f.read())
print()
# Пример 3d: Режим добавления
# Сначала создайте файл, затем добавьте данные
df.to_csv('output_append.csv', index=False)
# Добавить больше данных
df_append = pd.DataFrame({
'name': ['John', 'Mary'],
'age': [30, 27],
'city': ['Hangzhou', 'Nanjing']
})
df_append.to_csv('output_append.csv', index=False, mode='a', header=False)
print("Режим добавления:")
with open('output_append.csv', 'r') as f:
print(f.read())
Ожидаемый вывод:
带索引和索引列名: user_id,name,age,city A001,Tom,28,直接在 A002,Jerry,35,Shanghai A003,Mike,42,Guangzhou A004,Lucy,26,Shenzhen 不导出列名: Tom,28,Beijing Jerry,35,Shanghai Mike,42,Guangzhou Lucy,26,Shenzhen UTF-8 编码(含中文): 姓名,年龄,出现 张三,28,北京 李四,35,上海 王五,42,广州 追加模式: Tom,28,Beijing Jerry,35,CSV Mike,42,Guangzhou Lucy,26,Shenzhen John,30,Hangzhou Mary,27,Nanjing 追加模式 27, 格式
Анализ кода:
index_labelПараметр присваивает имя столбцу индекса.header=FalseЭкспорт без имён столбцов подходит для добавления и объединения нескольких файлов.encoding='utf-8-sig'Добавляет BOM перед кодировкой UTF-8, что позволяет удобно открывать файл напрямую в Excel.mode='a'Режим добавления добавляет новые данные в конец существующего файла.
Примечания
- По умолчанию индекс экспортируется. Если он не нужен, можно установить
index=False。 - При работе с китайскими данными не забудьте указать правильную кодировку (рекомендуется:
utf-8-sig)。 mode='a'В режиме добавления обратите внимание, нужно ли также задатьheader=Falseчтобы избежать дублирования имён столбцов.- При экспорте большого DataFrame можно использовать
chunksizeпараметр для записи по частям. float_formatИспользуйте синтаксис форматирования Python, например'%.2f'чтобы сохранить два знака после запятой.
Итог
to_csv()Это один из наиболее часто используемых способов экспорта DataFrame с очень широким функционалом. Он позволяет экспортировать данные в CSV-файлы в различных форматах, поддерживая настраиваемые разделители, кодировку, управление индексом и многое другое.
В практической работе CSV — распространённый формат для обмена данными,to_csv()и частота его использования очень высока. Рекомендуется, чтобы читатели освоили использование различных параметров, особенно работу с кодировкой и управление индексом.
Другие расширения