В библиотеке pandas реализованы функции чтения табличных данных в
объект DataFrame. В таблице pandas:rwdata:tbl:1 представлены
некоторые из таких функций.
Таблица 7. Функции чтения данных
| Функция | Описание |
read_csv | Загружает разделенные значения из файла или файлоподобного объекта; в качестве разделителя по умолчанию используется запятая |
read_table | Загружает разделенные значения из файла или файлоподобного объекта; в качестве разделителя по умолчанию используется табуляция ('\t') |
read_fwf | Читает данные в формате со столбцами фиксированной длины (без разделителей) |
read_clipboard | Версия функции read_table, которая читает данные из буфера обмена |
read_excel | Читает данные из файлов формата .xls или .xlsx |
read_hdf | Читает файлы вормата HDF5, записанные с помощью библиотеки pandas |
read_html | Читает все таблицы из заданного документа HTML |
read_json | Читает данные из JSON (JavsScript Object Notation) |
read_msgpack | Читает данные pandas закодированные с помощью двоичного формата MessagePack |
read_pickle | Читает любой объект, сохраненный в формате Python pickle |
read_sas | Читает набор данных SAS, хранящийся в одном из пользовательских форматов хранения системы SAS |
read_sql | Читает результат запроса SQL (используя SQLAlchemy) как объект DataFrame |
Библиотека pandas поддерживает нативную работу со многими
реляционными БД.
Можно не только загружать данные из локальных файлов, но и из Интернета — достаточно вместо адреса на локальном компьютере указать прямю ссылку на файл.
Также существует дополнительный пакет, который называется
pandas_datareader. Если он не установлен, его можно установить через
conda или pip. Он загружает данные из некоторых
источников. Загрузим с помощью pandas_datareader некоторые данные
для некоторых биржевых тикеров:
import pandas_datareader.data as web
all_data = {ticker: web.get_data_yahoo(ticker)
for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
price = pd.DataFrame({ticker: data['Adj Close']
for ticker, data in all_data.items()})
volume = pd.DataFrame({ticker: data['Volume']
for ticker, data in all_data.items()})
Вычислим изменение процентные изменения цен:
In [199]: returns = price.pct_change()
In [200]: returns.tail()
Out[200]:
AAPL IBM MSFT GOOG
Date
2020-03-23 -0.021244 -0.006500 -0.009975 -0.014641
2020-03-24 0.100325 0.113011 0.090896 0.073669
2020-03-25 -0.005509 0.003508 -0.009573 -0.028181
2020-03-26 0.052623 0.066509 0.062551 0.053751
2020-03-27 -0.041402 -0.043051 -0.041061 -0.043934
Метод corr объекта Series вычисляет корреляцию перекрывающихся,
выровненных по индексу значений в двух объектах
Series. Соответственно cov вычисляет ковариацию:
In [202]: returns['MSFT'].corr(returns['IBM'])
Out[202]: 0.5840961357368786
In [203]: returns['MSFT'].cov(returns['IBM'])
Out[203]: 0.00015025941925307093
Поскольку MSFT является допустимым атрибутом Python, мы также можем
выбрать эти столбцы, используя более краткий синтаксис
In [204]: returns.MSFT.corr(returns.IBM)
Out[204]: 0.5840961357368786
Методы corr и cov объекта DataFrame возвращают полные матрицы
корреляции или ковариации:
In [205]: returns.corr()
Out[205]:
AAPL IBM MSFT GOOG
AAPL 1.000000 0.520795 0.688470 0.627134
IBM 0.520795 1.000000 0.584096 0.513872
MSFT 0.688470 0.584096 1.000000 0.738942
GOOG 0.627134 0.513872 0.738942 1.000000
In [206]: returns.cov()
Out[206]:
AAPL IBM MSFT GOOG
AAPL 0.000315 0.000140 0.000208 0.000185
IBM 0.000140 0.000229 0.000150 0.000129
MSFT 0.000208 0.000150 0.000290 0.000209
GOOG 0.000185 0.000129 0.000209 0.000275
Используя метод corrwith объекта DataFrame, можно вычислять попарные
корреляции между столбцами или строками DataFrame с другими
объектами Series или DataFrame. Передача в качестве аргумента ряда
возвращает ряд со значением корреляции, вычисленным для каждого
столбца:
In [207]: returns.corrwith(returns.IBM)
Out[207]:
AAPL 0.520795
IBM 1.000000
MSFT 0.584096
GOOG 0.513872
dtype: float64