3

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

我想要做的是:

  1. 使用 python 从 quandl 中提取 n 个证券的每日收盘数据
  2. 将数据存储在数据库中
  3. 检索、清理和规范化数据
  4. 对不同对运行回归
  5. 将结果写入 csv 文件

下面的伪代码简而言之显示了我想要做的事情。

我的问题是:
如何将 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))
4

2 回答 2

3

有一个MySQLdb用 Python 调用的不错的库,它可以帮助您与 MySQL 数据库进行交互。因此,要成功执行以下操作,您必须启动 python shell 和 MySQL shell。

如何在 MySQL 中存储 quandl 数据?

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,并且它是元组的形式。

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

于 2015-09-05T05:40:54.627 回答
2

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

来自 Quandl 的python 页面

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

默认情况下,Quandl 的包返回一个 pandas 数据框。您可以使用 Pandas 来操作/清理/规范您认为合适的数据,并使用 Pandas 将数据直接上传到sql 数据库

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()函数。(抱歉,我无法发布这些功能的链接;我还没有足够的声誉!)

于 2015-09-07T05:10:34.577 回答