2017-08-21 5 views
0

NASDAQのデータを使用して、いくつかの財務調査と学習を計画しています。Nasdaqから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() 

は、私が(上記のように)他のデータを取得したいです。

私はこれを行うことができますか?

答えて

関連する問題