开年以来,大盘直接从2400站上了3200,为了后续进一步分析股票数据,我想把每只股票每天的数据保存下来。
import pandas as pd
import tushare as ts
import datetime
首先导入必要的库:pandas数据处理,tushare是一个第三方库,通过它可以查到每天的实时股票数据,datetime是下面做日期标记会用到的一个库
#获取所有股票当日数据
stock = ts.get_today_all()
这是获取当前股票数据的一个命令,它返回的是当日实时的一个数据,如果是收盘或者节假日,则返回最近一个交易日的数据:
#给数据添加一个日期
stock['date'] = datetime.date.today()
我需要给数据添加一个日期,这样就可以看到数据是哪一天的数据。这里要用到的是datetime库,新增加了一个叫date的字段,日期为当前日期。
然后,就可以导出数据了:
stock.to_csv('stock_data.csv',encoding = 'utf-8',index=None)
这里我将导出CSV格式的文件,原因有两个,一是pandas处理CSV格式的文件远比Excel快,二是Excel有最大行数限制,只能有104w行数据,而CSV没有这个限制(每天的股票数据有接近4000条,以一年交易日200天算,一年下来有80W条数数据),设置index为None主要是后面需要读取它,如果不设置,read_csv读取出来就会识别为一个没有表头的字段。
stock_data = pd.read_csv('stock_data.csv',sep=',')
df = pd.concat([stock,stock_data])
df.to_csv('stock_data.csv',encoding = 'utf-8',index=None)
stock_data 相当于是累计数据,stock为今天的数据,将今天的数据和stockdata用concat拼接在一起,最后还是输出到名为stock_data的CSV文件中,覆盖掉昨天的数据。
最后,将这个脚本放在定时任务crontab里执行,就可以获得累计每一天的每只股票的数据了(比如第一天3000行,第二条6000行,第3天9000行数据,以此类推),包括开盘价、收盘价、PE、PB、换手率等。