IO Tools (Текст, CSV, HDF5, ...)
API pandas I/O — это набор основных reader функций, к которым обращаются как pd.read_csv(), которые обычно возвращают pandas объект. Соответствующие writer функции являются методами объекта, к которым обращаются как df.to_csv()
| Тип формата | Описание данных | Чтение | Запись |
|---|---|---|---|
| текст | 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 |
| двоичный | Формат 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 |
Здесь представлено неформальное сравнение производительности для некоторых из этих методов IO.
Примечание
Для примеров, использующих класс StringIO, убедитесь, что вы импортировали его в соответствии с вашей версией Python, т.е. from StringIO import StringIO для Python 2 и from io import StringIO для Python 3.
CSV & Текстовые файлы
Две наиболее часто используемые функции для чтения текстовых файлов (также известных как плоские файлы) — это read_csv() и read_table(). Оба они используют один и тот же код анализа для интеллектуального преобразования табличных данных в объект DataFrame. Смотрите пособие для некоторых расширенных стратегий.
Параметры анализа
read_csv() и read_table() принимают следующие аргументы:
Основные
-
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, чтобы заменить существующие имена.Заголовок может быть списком целых чисел, которые указывают расположение строки для многоуровневого индекса по столбцам, например,
[0,1,3]. Промежуточные строки, которые не указаны, будут пропущены (например, 2 в данном примере пропускается). Обратите внимание, что этот параметр игнорирует строки с комментариями и пустые строки, еслиskip_blank_lines=True, поэтому header=0 обозначает первую строку данных, а не первую строку файла. -
names : array-like, default None -
Список имен столбцов для использования. Если файл не содержит строки заголовка, то вы должны явно передать
предупреждениеheader=None. Повторения в этом списке вызовутUserWarning. -
index_col : int or sequence or False, default None - Столбец, используемый в качестве меток строк DataFrame. Если задана последовательность, используется MultiIndex. Если у вас есть неправильно сформированный файл с разделителями в конце каждой строки, можно рассмотреть
index_col=Falseдля принудительного отказа pandas от использования первого столбца в качестве индекса (имен строк). -
usecols : array-like or callable, default None -
Возвращает подмножество столбцов. Если это массив, все элементы должны быть либо позиционными (т.е. целочисленные индексы в столбцах документа), либо строками, соответствующими именам столбцов, предоставленным пользователем в
namesили выведенными из строки заголовка(ов) документа. Например, допустимым массивоподобным значением параметраusecolsбудет [0, 1, 2] или [‘foo’, ‘bar’, ‘baz’].Если это вызываемый объект, вызываемый объект будет оцениваться по именам столбцов, возвращая имена, где вызываемый объект принимает значение True:
In [1]: data = 'col1,col2,col3\na,b,1\na,b,2\nc,d,3' In [2]: pd.read_csv(StringIO(data)) Out[2]: col1 col2 col3 0 a b 1 1 a b 2 2 c d 3 In [3]: 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.21.1/io.html