zoukankan      html  css  js  c++  java
  • 统计一段时期内股票的涨幅情况

    # -*- coding: utf-8 -*-
    '''加载模块'''
    import sqlalchemy
    import pandas
    '''连接数据库'''
    engine = sqlalchemy.create_engine('mssql+pyodbc://sa:123456@XiTongDSN')
    connection = engine.connect()
    '''股票代码列表'''
    codelist = pandas.read_sql('codelist', engine)
    '''给每个股票算涨幅'''
    rise = []
    for i in range(0, len(codelist) - 1):
        data = pandas.read_sql(codelist['code'][i], engine)
        '''这个 a b 的 0 赋值不能省,由于有些股票会停牌,期间无数据会调用上个股票的 a 值,报错'''
        a = 0
        b = 0
        for j in range(0, len(data) - 1):
            '''由于数据库内的数据日期是由大到小排的,懒的调了,就这样也行'''
            if data['date'][j] == '2016-03-31':
                a = data['close'][j]
            if data['date'][j] == '2016-03-01':
                b = data['close'][j]
                if not (a == 0 or b == 0):
                    c = (a - b) / b
                    break
                else:
                    c = 0
                    break
        rise.append((codelist['code'][i], c, '2016-03-31', '2016-03-01'))
    ''' list 转 dataframe '''
    rise = pandas.DataFrame(rise)
    '''修改列名'''
    rise.columns = ['code', 'rise', 'date_to', 'date_from']
    '''按涨幅排序'''
    rise = rise.sort_values(by = 'rise', ascending = False)
    '''写库'''
    rise.to_sql('rise', engine, if_exists = 'replace', index = False)
    print('ok')

    360截图20160527205806932

    跟通达信股软的涨跌幅排名(相同条件,如不复权,日期一致等)比较了一下,有些出入,我换了普通计算器手工算了一下,还是跟通达信的有出入,真是不知道通达信的公式是什么

  • 相关阅读:
    (转)很简短,但读完你会感触良多!
    (转)让 win8 快速通过认证的5个提示
    WPF 资源路径解析
    47、SimpleOrientationSensor
    45、SplashScreen
    让IE6也支持position:fixed
    utf8编码引起js输出中文乱码的解决办法(实用)
    javascript的currying函数
    sicily 1036. Crypto Columns
    sicily 6774. Buying Mortadella
  • 原文地址:https://www.cnblogs.com/blog-3123958139/p/5533268.html
Copyright © 2011-2022 走看看