2017-08-21 21 views
0

我打算使用纳斯达克的数据做一些金融研究和学习。无法获得帮助从Python中的纳斯达克检索数据

我想要从纳斯达克数据,使得头部有以下几点:

股票代码
公司名称
上次出售
市值
IPO 年
部门
行业
最后更新

我用Python代码来获得使用“企业和股票名单”:

import pandas as pd 
import json 

PACKAGE_NAME = 'nasdaq-listings' 
PACKAGE_TITLE = 'Nasdaq Listings' 

nasdaq_listing = 'ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqlisted.txt'# Nasdaq only 


def process(): 
    nasdaq = pd.read_csv(nasdaq_listing,sep='|') 

    nasdaq = _clean_data(nasdaq) 

    # Create a few other data sets 
    nasdaq_symbols = nasdaq[['Symbol','Company Name']] # Nasdaq w/ 2 columns 

    # (dataframe, filename) datasets we will put in schema & create csv 
    datasets = [(nasdaq,'nasdaq-listed'), (nasdaq_symbols,'nasdaq-listed-symbols')] 

    for df, filename in datasets: 
     df.to_csv('data/' + filename + '.csv', index=False) 

    with open("datapackage.json", "w") as outfile: 
     json.dump(_create_datapackage(datasets), outfile, indent=4, sort_keys=True) 


def _clean_data(df): 
    # TODO: do I want to save the file creation time (last row) 
    df = df.copy() 
    # Remove test listings 
    df = df[df['Test Issue'] == 'N'] 

    # Create New Column w/ Just Company Name 
    df['Company Name'] = df['Security Name'].apply(lambda x: x.split('-')[0]) #nasdaq file uses - to separate stock type 
    #df['Company Name'] = TODO, remove stock type for otherlisted file (no separator) 

    # Move Company Name to 2nd Col 
    cols = list(df.columns) 
    cols.insert(1, cols.pop(-1)) 
    df = df.loc[:, cols] 

    return df 


def _create_file_schema(df, filename): 
    fields = [] 
    for name, dtype in zip(df.columns,df.dtypes): 
     if str(dtype) == 'object' or str(dtype) == 'boolean': # does datapackage.json use boolean type? 
      dtype = 'string' 
     else: 
      dtype = 'number' 

     fields.append({'name':name, 'description':'', 'type':dtype}) 

    return { 
      'name': filename, 
      'path': 'data/' + filename + '.csv', 
      'format':'csv', 
      'mediatype': 'text/csv', 
      'schema':{'fields':fields} 
      } 


def _create_datapackage(datasets): 
    resources = [] 
    for df, filename in datasets: 
     resources.append(_create_file_schema(df,filename)) 

    return { 
      'name': PACKAGE_NAME, 
      'title': PACKAGE_TITLE, 
      'license': '', 
      'resources': resources, 
      } 


process() 

现在对于每个符号,我希望得到其他数据(如上述)。

无论如何我可以做到这一点吗?

回答