Инструменты ввода-вывода (текст, CSV, HDF5, …)
API ввода-вывода pandas — это набор функций верхнего уровня reader , к которым обращаются как к pandas.read_csv(), которые обычно возвращают объект pandas. Соответствующие writer функции — это методы объектов, к которым обращаются как к DataFrame.to_csv(). Ниже приведена таблица доступных readers и writers.
| Тип формата | Описание данных | Читатель | Записыватель |
|---|---|---|---|
| текст | CSV | read_csv | to_csv |
| текст | JSON | read_json | to_json |
| текст | HTML | read_html | to_html |
| текст | Буфер обмена | read_clipboard | to_clipboard |
| бинарный | MS Excel | read_excel | to_excel |
| бинарный | OpenDocument | read_excel | |
| бинарный | Формат HDF5 | read_hdf | to_hdf |
| бинарный | Формат Feather | read_feather | to_feather |
| бинарный | Формат Parquet | read_parquet | to_parquet |
| бинарный | Msgpack | read_msgpack | to_msgpack |
| бинарный | Stata | read_stata | to_stata |
| бинарный | SAS | read_sas | |
| бинарный | Формат Python Pickle | read_pickle | to_pickle |
| SQL | SQL | read_sql | to_sql |
| SQL | Google Big Query | read_gbq | to_gbq |
Здесь представлено сравнение производительности некоторых из этих методов ввода-вывода.
Примечание
Для примеров, использующих класс StringIO, убедитесь, что вы импортировали его в соответствии с вашей версией Python, т.е. from StringIO import StringIO для Python 2 и from io import StringIO для Python 3.
CSV и текстовые файлы
Функцией по умолчанию для чтения текстовых файлов (также называемых плоскими файлами) является read_csv(). См. кулинарную книгу для некоторых продвинутых стратегий.
Параметры разбора
read_csv() принимает следующие стандартные аргументы:
Основные
-
filepath_or_buffer : various - Путь к файлу (строка
str,pathlib.Path, илиpy._path.local.LocalPath), URL (включая http, ftp и расположения S3) или любой объект с методомread()(например, открытый файл илиStringIO). -
sep : str, defaults to ',' for read_csv(), \t for read_table() - Разделитель, используемый. Если sep равно
None, движок C не может автоматически определить разделитель, но движок Python может, что означает, что последний будет использован и автоматически определит разделитель с помощью встроенного инструмента анализа Python,csv.Sniffer. Кроме того, разделители, длина которых больше 1 символа и отличные от'\s+', будут интерпретированы как регулярные выражения и также заставят использовать движок Python. Обратите внимание, что разделители, являющиеся регулярными выражениями, склонны игнорировать цитируемые данные. Пример регулярного выражения:'\\r\\t'. -
delimiter : str, default None - Альтернативное имя аргумента для sep.
-
delim_whitespace : boolean, default False -
Указывает, будет ли пробел (например,
' 'или'\t') использоваться в качестве разделителя. Эквивалентно установлениюsep='\s+'. Если этот параметр установлен вTrue, для параметраdelimiterничего не должно передаваться.В версии 0.18.1: поддержка парсера Python.
Расположения и имена столбцов и индексов
-
header : int or list of ints, default 'infer' -
Номер(а) строки(ок), используемых в качестве имен столбцов и начала данных. По умолчанию имена столбцов определяются автоматически: если имена не заданы, поведение идентично
header=0, и имена столбцов выводятся из первой строки файла; если имена столбцов явно заданы, поведение идентичноheader=None. Явно задайтеheader=0для возможности замены существующих имен.Заголовок может быть списком целых чисел, которые указывают расположения строк для MultiIndex столбцов, например,
[0,1,3]. Промежуточные строки, которые не указаны, будут пропущены (например, 2 в этом примере пропущены). Обратите внимание, что этот параметр игнорирует комментированные и пустые строки, еслиskip_blank_lines=True, поэтому header=0 обозначает первую строку данных, а не первую строку файла. -
names : array-like, default None - Список имен столбцов для использования. Если файл не содержит строки заголовка, вы должны явно указать
header=None. Повторения в этом списке запрещены. -
index_col : int, str, sequence of int / str, or False, default None -
Столбец(ы) для использования в качестве меток строк DataFrame, заданные либо строковым именем, либо индексом столбца. Если задана последовательность int/str, используется MultiIndex.
Примечание:
index_col=Falseможет быть использован для того, чтобы заставить pandas не использовать первый столбец в качестве индекса, например, когда у вас есть повреждённый файл с разделителями в конце каждой строки. -
usecols : list-like or callable, default None -
Возвращает подмножество столбцов. Если список, все элементы должны быть либо позиционными (т. е. целочисленными индексами в столбцах документа), либо строками, соответствующими именам столбцов, предоставленными пользователем в
namesили полученными из строки(ок) заголовка документа. Например, допустимым списком-аргументом для параметраusecolsбыл бы[0, 1, 2]или['foo', 'bar', 'baz']. Порядок элементов игнорируется, поэтомуusecols=[0, 1]эквивалентно[1, 0]. Чтобы создать DataFrame изdataс сохранением порядка элементов, используйтеpd.read_csv(data, usecols=['foo', 'bar'])[['foo', 'bar']]для столбцов в порядке['foo', 'bar']илиpd.read_csv(data, usecols=['foo', 'bar'])[['bar', 'foo']]для порядка['bar', 'foo']. Если функция вызывается, функция вызова будет оцениваться по отношению к именам столбцов, возвращая имена, где функция вызова возвращает True:In [1]: from io import StringIO, BytesIO In [2]: data = ('col1,col2,col3\n' ...: 'a,b,1\n' ...: 'a,b,2\n' ...: 'c,d,3') ...: In [3]: pd.read_csv(StringIO(data)) Out[3]: col1 col2 col3 0 a b 1 1 a b 2 2 c d 3 In [4]: pd.read_csv(StringIO(data), usecols=lambda x: x.upper() in ['COL1', 'COL3'])
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/user_guide/io.html