Функция Pandas df.to_csv()

Python 常用函数Часто используемые функции 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_bufstr, объект пути, файлоподобный объектПуть к файлу; возвращает строку, если NoneОтсутствует
sepstrРазделитель полей','
na_repstrПредставление пропущенных значений''
float_formatstrФормат чисел с плавающей запятойОтсутствует
columnslistУкажите столбцы для экспортаОтсутствует
headerbool, listЭкспортировать ли имена столбцовTrue
indexboolЭкспортировать ли индексTrue
index_labelstrИмя столбца индексаОтсутствует
modestrРежим записи: 'w' — перезапись, 'a' — добавление'w'
encodingstrКодировка файлаОтсутствует

Возвращаемое значение

  • Тип возвращаемого значения:Noneилиstr
  • Если указан путь к файлу, записывает в файл и возвращает None.
  • Когдаpath_or_buf=NoneЕсли ..., возвращает строку в формате CSV.

Примеры

С помощью следующих примеров полностью освойтеto_csv()Различные варианты использования.

Пример 1: Базовое использование — экспорт в CSV-файл

Сначала создайте DataFrame, затем используйтеto_csv()чтобы экспортировать его в CSV-файл.

Пример

import pandas as pd

# Создать пример 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-файлах могут использоваться разные разделители, а также можно настроить формат числовых значений и пропущенных значений.

Пример

import pandas as pd

# Создать 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: Обработка индекса и кодировки

Обработка индекса и кодировка файла — частые требования при экспорте.

Пример

import pandas as pd

# Создать 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()и частота его использования очень высока. Рекомендуется, чтобы читатели освоили использование различных параметров, особенно работу с кодировкой и управление индексом.


Python 常用函数Часто используемые функции Pandas

Другие расширения