如何在python

时间:2015-09-04 21:05:57

标签: python database quandl

我一直在寻找我的问题的答案,但没有找到明确的答案。我是python,mysql和数据科学的新手,所以任何建议都赞赏为

我希望能做的是:

  1. 使用python从quandl获取n个证券的每日关闭数据
  2. 将数据存储在数据库中
  3. 检索,清理和规范化数据
  4. 对不同的对进行回归
  5. 将结果写入csv文件
  6. 下面的伪代码概括地说明了我希望能做什么。

    我的问题是:
    如何将quandl数据存储在MySQL中? 如何从MySQL检索数据?我是否将其存储到列表中并使用statsmodels?

    tickers = [AAPL, FB, GOOG, YHOO, XRAY, CSCO]
    qCodes = [x + 'WIKI/' for x in tickers]
    for i in range(0, len(qCodes)):
        ADD TO MYSQLDB->Quandl.get(qCodes[i], collapse='daily', start_date=start, end_date=end)
    
    for x in range(0, len(qCodes)-1):
        for y in range(x+1, len(qCodes)):
            //GET FROM MYSQLDB-> x, y 
            //clean(x,y)
            //normalize(x,y)
            //write to csv file->(regression(x,y))
    

2 个答案:

答案 0 :(得分:2)

Python中有一个名为MySQLdb的好库,它可以帮助您与MySQL数据库进行交互。因此,为了成功执行以下操作,您必须启动python shell并启动MySQL shell。

如何将quandl数据存储在MySQL中?

import MySQLdb

#Setting up connection
db = MySQLdb.connect("localhost", user_name, password, db_name)

cursor = db.cursor()

#Inserting records into the employee table
sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES('Steven', "Karpinski", "50", "M", "43290")"""

try:
   cursor.execute(sql)
   db.commit()
except:
   db.rollback()
db.close()

我是为自定义值做的。因此,对于quandl数据,以类似的方式创建模式,并通过执行循环来存储它们。

如何从MySQL检索数据?我是否将其存储到列表中并使用statsmodels?

对于数据检索,执行以下命令,类似于上面的命令。

sql2 = """SELECT * FROM EMPLOYEE;
        """
try:
   cursor.execute(sql2)
   db.commit()
except:
   db.rollback()

result = cursor.fetchall()

result变量现在包含sql2变量内的查询结果,并且它是元组的形式。

因此,现在您可以将这些元组转换为您选择的数据结构。

答案 1 :(得分:1)

Quandl有一个python包,使得与网站的交互变得微不足道。

来自Quandl' python page

import Quandl
mydata = Quandl.get("WIKI/AAPL")

默认情况下,Quandl的软件包会返回一个pandas数据帧。您可以根据需要使用Pandas来操作/清理/规范化数据,并使用Pandas将数据直接上传到sql database

import sqlalchemy as sql
engine = sql.create_engine('mysql://name:blah@location/testdb')
mydata.to_sql('db_table_name', engine, if_exists='append')

要从数据库中恢复数据,您还可以使用Pandas:

import pandas as pd
import sqlalchemy as sql
engine = sql.create_engine('mysql://name:blah@location/testdb')
query = sql.text('''select * from quandltable''')
mydata = pd.read_sql_query(engine, query)

使用statsmodels运行分析后,您可以使用pandas' df.to_csv()方法或numpy的savetxt()函数。 (对不起,我无法发布这些功能的链接;我还没有足够的声誉!)