最近的学习

1、滑动窗口最小值

利用单调队列进行计算,

当遍历到某个元素j右侧时,若存在元素i在j左侧且lst[i] >= lst[j],则i是没有意义的,因为j元素永远比i元素更优先考虑。

维护单调队列,队列中的都是可能取得的有效值。假如范围超出,即sliding_window[0] <= i - period,则从队列左侧把元素弹出,保证在period之内。

def hdck(lst, period): # 求指定天数内滑动窗口的最小值,返回一个list
    sliding_window = deque() # 设置滑动窗口,主要使用单调队列计算
    l = len(lst)
    ret = [] # 返回值
    for i in range(l):
        while sliding_window and lst[i] <= lst[sliding_window[-1]]:
            sliding_window.pop()
        sliding_window.append(i)
        while sliding_window[0] <= i - period:
            sliding_window.popleft()
        ret.append(lst[sliding_window[0]])
    return ret

2、使用mysql.connector连接数据库,如果连接时autocommit=False,在增加、删除、修改执行数据库语句之后记得commit,commit代表提交事务,查询目前来看不用提交事务也能获得结果。可以把excute很多语句之后一起commit,提高效率,excutemany()更快。

mydb = mysql.connector.connect(
      host="127.0.0.1",
      user="***",
      passwd="***",
      database="***",
      autocommit=False
    )
    for i, code in enumerate(stock_info['code']): # 获取代码
        individual_info = ak.stock_individual_info_em(symbol = code)
        sql = "insert into mydatabase.gpxx values({},'{}','{}','{}');".format(id, code, name, industry)
        mycursor.execute(sql)
    mycursor.close()
    mydb.commit()

3、dataframe类型某几列直接存入数据库,保证键相同

engine = create_engine("mysql+mysqlconnector://username:password@127.0.0.1:3306/dbname?charset=utf8")
dataframe[['a','b']].to_sql(name = 'gp' + code, con = engine, if_exists = 'append', index= False)

4、如何计算EMA

ret = [closes[0]] # EMA的第一个值就是他自己
    for i, close in enumerate(closes[1:]):
        tmp = (2 * close)
        tmp2 = (num - 1) * ret[i]
        ret.append((tmp + tmp2) / (num + 1))

5、列表生成式,实际就是for循环倒着写

# 二维转一维
code = [[1,2],[3,4]]
ret = [item for a in codes for item in a]

6、python连接数据库游标

如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕上,你无法针对结果集做第二次编程。使用游标功能后,我们可以将得到的结果先保存起来,然后可以随意进行自己的编程,得到我们最终想要的结果集。使用fetchone()或者fetchall()获取数据。

7、好久不用数据库,熟悉了一下基本操作

sql = "create table if not exists {}(id int primary key auto_increment,日期 DATE,开盘 float,收盘 float,涨跌幅 float,成交量 int)".format(name) 

sql = "drop table if exists {}".format(name)

sql = "insert into mydatabase.gpxx values({},'{}','{}','{}');".format(id, code, name, industry)

sql = "select {} from {}".format(data, table)

8、对于千万条数据,一开始想直接存在一个数据库里,但是感觉应该太多了。于是分成5000张表,每张表2000条数据。不知道这样做对不对,再看看别人的操作或者以后操作的速度再优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值