数据分析:用pandas处理金融时间序列数据的基础知识

本文介绍如何使用pandas库处理金融时间序列数据,包括数据导入、汇总统计、时间变化分析和重新采样。通过示例展示了数据分析过程,如计算描述性统计、变化率和对数回报率,强调了重新采样在金融分析中的重要性,并提醒避免预见偏差。

本文使用的是以CSV文件形式在本地存储的金融数据集形式为本地存储的CSV文件。从技术上讲,CSV文件是包含数据行结构的文本文件,其特征是以逗号分隔单个值。在导入数据之前,导入一些软件包并进行定制:

In [1]: import numpy as np
        import pandas as pd
        from pylab import mpl, plt
        plt.style.use('seaborn')
        mpl.rcParams['font.family'] = 'serif'
        %matplotlib inline
数据导入

pandas提供不同的函数和DataFrame方法,以导入不同存储格式(CSV、SQL、Excel等)的数据,并将数据导出为不同格式(详见第9章)。下面的代码通过pd.read_csv()函数导入CSV[1]文件中的时间序列数据:

In [2]: filename = '../../source/tr_eikon_eod_data.csv' ❶

In [3]: f = open(filename, 'r') ❷
        f.readlines()[:5] ❷
Out[3]: ['Date,AAPL.O,MSFT.O,INTC.O,AMZN.O,GS.N,SPY,.SPX,.VIX,EUR=,XAU=,GDX,
        ,GLD\n',
         '2010-01-01,,,,,,,,,1.4323,1096.35,,\n',
         '2010-01-04,30.57282657,30.95,20.88,133.9,173.08,113.33,1132.99,20.04,
        ,1.4411,1120.0,47.71,109.8\n',
         '2010-01-05,30.625683660000004,30.96,20.87,134.69,176.14,113.63,1136.52,
        ,19.35,1.4368,1118.65,48.17,109.7\n',
         '2010-01-06,30.138541290000003,30.77,20.8,132.25,174.26,113.71,1137.14,
        ,19.16,1.4412,1138.5,49.34,111.51\n']
In [4]: data = pd.read_csv(filename, ❸
                           index_col=0, ❹
                           parse_dates=True) ❺

In [5]: data.info() ❻
        <class 'pandas.core.frame.DataFrame'>
        DatetimeIndex: 2216 entries, 2010-01-01 to 2018-06-29
        Data columns (total 12 columns):
        AAPL.O    2138 non-null float64
        MSFT.O    2138 non-null float64
        INTC.O    2138 non-null float64
        AMZN.O    2138 non-null float64
        GS.N      2138 non-null float64
        SPY       2138 non-null float64
        .SPX      2138 non-null float64
        .VIX      2138 non-null float64
        EUR=      2216 non-null float64
        XAU=      2211 non-null float64
        GDX       2138 non-null float64
        GLD       2138 non-null float64
        dtypes: float64(12)
        memory usage: 225.1 KB

❶ 指定路径和文件名。

❷ 显示原始数据(Linux/Mac)的前5行。

❸ 传递给pd.read_scv()函数的文件名。

❹ 指定第一列作为索引处理。

❺ 指定索引值为datetime类型。

❻ 结果为DataFrame对象。

在这一阶段,金融分析师可能首先观察数据,对其进行检查或者可视化:

Uploading file...

In [6]: data.head() ❶
Out[6]:
                   AAPL.O MSFT.O INTC.O AMZN.O  GS.N   SPY   .SPX .VIX \
    Date
    2010-01-01        NaN    NaN    NaN    NaN   NaN   NaN    NaN  NaN
    2010-01-04  30.572827 30.950  20.88 133.90 173.08 113.33 1132.99 20.04
    2010-01-05  30.625684 30.960  20.87 134.69 176.14 113.63 1136.52 19.35
    2010-01-06  30.138541 30.770  20.80 132.25 174.26 113.71 1137.14 19.16
    2010-01-07  30.082827 30.452  20.60 130.00 177.67 114.19 1141.69 19.06

                  EUR=    XAU=   GDX    GLD
    Date
    2010-01-01  1.4323 1096.35   NaN    NaN
    2010-01-04  1.4411 1120.00 47.71 109.80
    2010-01-05  1.4368 1118.65 48.17 109.70
    2010-01-06  1.4412 1138.50 49.34 111.51
    2010-01-07  1.4318 1131.90 49.10 110.82

In [7]: data.tail() ❷
Out[7]:
                AAPL.O MSFT.O INTC.O  AMZN.O   GS.N    SPY   .SPX.VIX \
    Date
    2018-06-25  182.17  98.39  50.71 1663.15 221.54 271.00 2717.07 17.33
    2018-06-26  184.43  99.08  49.67 1691.09 221.58 271.60 2723.06 15.92
    2018-06-27  184.16  97.54  48.76 1660.51 220.18 269.35 2699.63 17.91
    2018-06-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值