В библиотеке 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