怎么用pandas读取数据,Pandas可以从以下哪些文件中读取数据

  怎么用pandas读取数据,Pandas可以从以下哪些文件中读取数据

  0准备工作

  首先,使用pip方法安装Panda和pandas-datareader。安装方法非常简单。以管理员身份运行cmd。输入以下命令。

  $ pip安装熊猫

  $ pip安装pandas-datareader

  需要注意的是,安装Panda时会自动安装numpy等功能包,所以使用Panda就意味着安装了numpy功能包。以后在安装Python需要的所有功能包时,都可以使用上述方法。

  雅虎财经升级API后,可能需要安装最新开发版本的pandas-datareader(目前版本为0.5.0)来访问雅虎财经的部分数据。安装方法请参考原始git。

  pandas-datareader包中的panda _ datareader . data . datareader函数可以根据输入的证券行情、开始日期和结束日期返回包含所有历史每日价格的数据,其数据类型为DataFrame,这是panda包引入的数据类型。这里假设需要苹果公司(股票代码:AAPL)从2016年初到今天(2017年4月6日)的历史每日价格。

  在这里,打开你的Python代码编辑器,你已经完成了所有的准备工作。

  1获取股票价格数据

  这里使用的包是datetime、Panda和pandas-datareader。导入datetime的原因是我们需要使用datetime包中的datetime.datetime.today()函数来调用今天的日期。

  导入日期时间

  进口熊猫作为pd

  将pandas_datareader.data作为web导入

  ## !这里是“pandas_datareader”而不是“pandas-datareader”

  在上面的代码中,将A导入为B的作用是导入A,给A一个别名叫B,这种情况下pandas_datareader.data这个名字明显太长了,所以叫web,所以后面使用panda _ datareader . data . datareader函数时,可以使用web。DataReader直接。必须注意,这里pandas_datareader中使用了下划线 _ ,而不是pip安装中使用的连接器-。

  接下来,设置开始日期和结束日期。使用datetime.datetime函数指向给定日期,使用datetime.date.today函数指向今天的日期。运行DataReader函数,并将其保存到名为prices的变量中。

  start=datetime.datetime(2016,1,1) #或start= 2016年1月1日

  end=datetime.date.today()

  价格=网络。DataReader(AAPL ,雅虎,开始,结束)

  print prices.head() #打印价格数据的第一行

  注意,DataReader函数中的第二个参数表示数据源。DataReader支持包括雅虎和谷歌在内的十几个数据源。本说明仅关注来自雅虎财经的数据。

  查看获得的价格数据的前六行(包括列名),

  开盘高/低/收盘成交量\

  日期

  2016-01-04 102.610001 105.370003 102.000000 105.349998 67649400

  2016-01-05 105.750000 105.849998 102.410004 102.709999 55791000

  2016-01-06 100.559998 102.370003 99.870003 100.699997 68457400

  2016-01-07 98.680000 100.129997 96.430000 96.449997 81094400

  2016-01-08 98.550003 99.110001 96.760002 96.959999 70798000

  接近的

  日期

  2016-01-04 102.612183

  2016-01-05 100.040792

  2016-01-06 98.083025

  2016-01-07 93.943473

  2016-01-08 94.440222

  这个数据帧的索引是日期,总共有六列数据。通常我们只关注最后一栏,调整后收盘价,用它来计算收益率。Adj Close的优点是,在价格调整中已经考虑了权重、划分和股息分配等所有因素。

  2获取股息数据

  只要将datareader函数中的数据源参数修改为 yahoo-actions ,也可以使用Pandas-datareader包来获取股息或股票分割等数据。

  动作=web。DataReader(AAPL ,雅虎-行动,开始,结束)

  print actions.head()

  返回的操作仍然是DataFrame类型的变量,其索引是日期。观察前六行中的数据。

  动作值

  2017-02-09股息0.57

  2016-11-03股息0.57

  2016-08-04股息0.57

  2016-05-05股息0.57

  2016-02-04股息0.52

  此处的动作表示证券的操作,如股利分配、股票分割等。而值表示操作值。我们可以看到,苹果最后一次分红是在2017年2月9日,每股分红0.57美元。

  值得一提的是,如果在给定的时间段内没有证券的操作活动,DataReader函数将返回一个空的DataFrame,它既没有索引也没有列名。

  打印网页。DataReader(AAPL ,雅虎行动,datetime.datetime(2017,4,1),datetime.date.today())

  结果是,

  空数据帧

  列:[]

  索引:[]

  3合并股息和股价数据

  因为动作索引是价格索引的子集,所以我们可以直接在价格后面添加动作列。这里有两种结合股息和股价的方法。

  第一种方法很简单,它直接提取每一列actions并将其添加到prices的后面。

  DataFrame变量的一列是单独提取的,而且是Series变量,这也是pandas包中唯一的数据类型。通常,如果列名不包含空格和连接符,可以直接调用列名作为DataFrame变量的属性。例如,actions.action是actions中的action列,其类型是Series。在prices变量中,只能使用prices[adjclose]调用 Adj Close 列,因为列名包含空格。

  属性可以理解为一系列的属性、方法、函数等。包含在一个对象中(如价格、动作,甚至开始、结束等。).例如,前面使用的prices.head()是调用价格头部的属性。

  在动作列被调出后,可以分配新的价格列。

  prices[action],prices[value]=actions.action,actions.value

  打印价格

  观察合并数据中间的一些线条。

  开盘高/低/收盘成交量\

  日期

  .

  2016-02-01 96.470001 96.709999 95.400002 96.430000 40943500

  2016-02-02 95.419998 96.040001 94.279999 94.480003 37357200

  2016-02-03 95.000000 96.839996 94.080002 96.349998 45964300

  2016-02-04 95.860001 97.330002 95.190002 96.599998 46471700

  2016-02-05 96.519997 96.919998 93.690002 94.019997 46418100

  2016-02-08 93.129997 95.699997 93.040001 95.010002 54021400

  .

  调整关闭动作值

  日期

  .

  2016-02-01 93.923996楠楠

  2016-02-02 92.024676楠楠

  2016-02-03 93.846074楠楠

  2016-02-04 94.600127股息0.52

  2016-02-05 92.073538楠楠

  2016-02-08 93.043048楠楠

  .

  可以发现,对于所有没有动作和值的日期,值都将是NaN(不是数字),有效的红利数据将被添加到相应的行中。

  第二种方法是使用pandas包中的merge函数,可以按照一定的规则合并两个DataFrame变量。

  prices=pd.merge(prices,actions,how=outer ,left_index=True,right_index=True)

  打印价格

  以上,可以得到和第一种方法一样的结果。其中how=outer 意味着最终合并结果的长度将是prices和actions中较长的一个,因此将有NaN。left_index和right_index都被设置为True,也就是说,当左右数据帧的索引匹配时,它们被合并。

  4输出为CSV文件

  DataFrame类型有一个可以直接将数据导出到CSV文件的属性。例如,将合并的股票价格和股息数据保存到根目录out文件夹中,并将其命名为AAPL.csv。

  prices.to_csv(。\\out\\AAPL.csv)

  的。to_csv()方法需要一个字符参数,即需要的保存路径。在这个字符串中,.表示工作目录,一般是使用PyCharm等编译器时代码文件所在的目录。两个反斜杠表示文件夹的层次关系。使用两个反斜杠的原因是“”在字符串中有转义函数。

  请注意,在这种情况下。\out 文件夹应该提前构建。直观的方法是直接新建一个文件夹,命名为‘out’。也可以用Python的os包来实现。

  导入操作系统

  os.mkdir(。\ \ out’)

  将价格导出为CSV文件后,您可以打开它进行查看。也可以用EXCEL来操作。

  日期,开盘,盘高,盘低,收盘,成交量,调整收盘,动作,数值

  .

  2016-02-01,96.470001,96.709999,95.400002,96.43,40943500,93.923996,

  2016-02-02,95.419998,96.040001,94.279999,94.480003,37357200,92.024676,

  2016-02-03,95.0,96.839996,94.080002,96.349998,45964300,93.846074,

  2016-02-04,95.860001,97.330002,95.190002,96.599998,46471700,94.600127,分红,0.52

  2016-02-05,96.519997,96.919998,93.690002,94.019997,46418100,92.073538,

  2016-02-08,93.129997,95.699997,93.040001,95.010002,54021400,93.043048,

  .

  Python可以方便的操作财务数据,具体做法我会在以后的笔记中讨论。如果您发现任何问题或有任何疑问,请纠正我或讨论。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: