用Python如何获取所有股票的历史数据并保存到Excel文件?

作者:大叔叔链接:https://www.zhihu.com/question/56899161/answer/316455718

来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
# -*- coding: utf-8 -*-
"""
Created on Sat Feb 10 18:44:25 2018

@author: Sheng
"""
#导入两个模块
import tushare as ts
import pandas as pd

# 首先通过ts.get_stock_basics()命令获得股票代码的一些基本数据 ,然后通过to_excel()命令保存。
    # 以下是本人保存的路径
source_date=r'D:\\Users\\Sheng\\Desktop\\Financetranscript\\stocklist.xlsx'

# 我们需要提取股票代码,用于后面的for循环,首先读取之前下载好的文件,将第一列的股票代码进行字符串转化。
df=pd.read_excel(source_date,converters={'code':lambda x:str(x)})

# 将提取出来的股票代码列表化赋值与 stockcode 这个变量。
stockcode=list(map(str,df['code']))

# 开始进行循环下载。。
for i in stockcode:
    print('开始下载{}股票数据.....'.format(i))

#设定每个文件的文件名和存储地址。
    file_address=r'D:\\Users\\Sheng\\Desktop\\Financetranscript\\bigdata\\{}.xlsx'.format(i)

#提取单个股票的历史数据。
    stock_data=ts.get_hist_data(i)

#导出到之前设定的好的文件地址。
    stock_data.to_excel(file_address)

#由于导出的每个股票的历史数据中并没有包含股票代码,所以我把股票代码加入到Excel中,
    #在日期的后一列加入股票代码,方便以后所有数据整合后可以进行股票筛选。
    #如果不需要,可以删除下面三行代码。
    dw_data=pd.read_excel(file_address)
    dw_data.insert(loc=1,column='code',value=i)
    dw_data.to_excel(file_address)

# 打印出下载进程,方便观察。。。
    print('{}/{} has been downloaded,{}股票数据下载完毕'
          .format(stockcode.index(i)+1,len(stockcode),i))
    print('-----------------------------------------------------')

作者:大叔叔链接:https://www.zhihu.com/question/56899161/answer/316455718来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一共3500个股票,慢慢下吧。。。睡了!晚安
-------------------------------------------------------------------------------------------------------{分割线}
更新下代码,运用了多线程,下载速度提高N倍,原来1个多小时的活现在只要5分钟。简单粗暴, 以下是代码。文件保存地址换一下就可以用了。
import pandas as pd
import tushare as ts
import os
from datetime import datetime
from datetime import timedelta
from multiprocessing.dummy import Pool as ThreadPool
import time

class stock_data:
    def __init__(self):
        self.file_path_basic = r'D:\PycharmProjects\Trade\Final_Project_A_Stock\Stock_data\basics.h5'
        self.file_dir_daily = r'D:\PycharmProjects\Trade\Final_Project_A_Stock\Stock_data\Daily'
        self.current_date_key_path = datetime.today().strftime('%d_%m_%Y')
        self.latest_basic_key_path = '/Basics_Data/Stock_Basics_{}'.format(self.current_date_key_path)
        self.whole_files_list_daily = os.listdir(self.file_dir_daily)
        self.start_date = '2014-01-01' # 选择开始时间

def update_stock_basic(self): # 更新股票基本面数据
        hdf = pd.HDFStore(self.file_path_basic)
        if self.latest_basic_key_path in hdf.keys():
            print("基本面数据已经更新到最新至{}".format(self.current_date_key_path))

else:
            print("开始更新股票基本面至{}".format(self.current_date_key_path))
            df = ts.get_stock_basics()
            hdf.put(self.latest_basic_key_path, df, format='t', data_columns=True, append=False)
            print("股票基本面更新完毕最新至{}".format(self.current_date_key_path))
        latest_stock_basics = hdf.get(hdf.keys()[-1])
        hdf.close()
        return latest_stock_basics

def update_daily_data(self, code):
        try:
            df = ts.get_k_data(code, self.start_date, ktype='d', autype='qfq') 
            df.set_index('date', inplace=True)
            df.to_csv(self.file_dir_daily + '\\' + '{}.csv'.format(code), mode='wt')
            process = round((stock_code.index(code)/len(stock_code))*100, 2)
            print('{}%'.format(process))
        except:
            print('没有数据')

st = stock_data()
stock_basics = st.update_stock_basic()
stock_basics = stock_basics[~stock_basics['name'].str.contains('ST')] # 把ST股票去掉
stock_code = list(map(str, stock_basics.index))

def daily_update():
    start1 = time.time()
    pool = ThreadPool(400) 
    try:
        pool.map(st.update_daily_data, stock_code)
    except:
        pool.map(st.update_daily_data, stock_code)
    pool.close()
    pool.join()

end1 = time.time()
    diff2 = end1 - start1
    print(diff2) #计算花费时间

if __name__ == '__main__':
    daily_update()

获取所有股票历史数据存到Excel相关推荐

  1. 如何把股票数据导出excel?导出股票历史数据到Excel的方法

    共享一个可以把股票数据导出Excel的方法,是一个在线下载股票历史数据,目前可以下载A股.港股.美股所有个股的历史数据,数据是Excel的方便分析查看.做表,最主要是免费... 只要两步就能下载: 填 ...

  2. 获取页眉值vba_VBA抓取股票历史数据的整体表处理

    大家好,我们今日讲解"VBA抓取股票历史数据的整体表处理",这节内容是"VBA信息获取与处理"教程中第六个专题"VBA中利用XMLHTTP完成网抓数据 ...

  3. 量化经济学:手把手教你如何使用EXCEL分析股票历史数据

    1.数据来源获取 数据集的下载来源为Yahoo Finance.Yahoo Finance是雅虎公司金融媒体领域的一个相关网站.它提供财经新闻.数据和评论,包括股票报价.新闻稿.财务报告和原创内容.它 ...

  4. python获取股票历史数据

    各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想做更复杂的分析,例如回归分析.关联分析等就有点捉襟见肘,所以最好能够获取股票历史及实时数 ...

  5. Python获取股票历史数据和收盘数据的代码实现

    http://casey.blog.51cto.com/9994043/1707905 各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想 ...

  6. 通过VBA在excel中实现股票历史数据查询和K线趋势图绘制(完整的excel原件可以在我的资源中下载)

    原始文件下载地址:股票历史数据和K线图趋势线的绘制-VB文档类资源-CSDN下载 文章目录 前言 一.目标 二.方法 三.界面和使用说明 四.代码说明 1.查询历史数据 2.绘制K线图和趋势线 3.清 ...

  7. python 大智慧股票行情数据_Python获取股票历史数据和收盘数据的代码实现

    各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想做更复杂的分析,例如回归分析.关联分析等就有点捉襟见肘,所以最好能够获取股票历史及实时数 ...

  8. python数据采集 爬虫 生意宝_Python爬虫实战 :批量采集股票数据,并保存到Excel中...

    小编说:通过本文,读者可以掌握分析网页的技巧.Python编写网络程序的方法.Excel的操作,以及正则表达式的使用.这些都是爬虫项目中必备的知识和技能.本文选自<Python带我起飞>. ...

  9. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发2 获取股票历史数据

    这里选用tushare平台获取股票历史数据 所用包 tushare .pandas.datetime import tushare as ts import pandas as pd import d ...

  10. tushare pro 版本获取股票历史数据

    最近研究程序化交易,需要使用股票历史数据.由于保存了所有股票历史数据,但是是截至到2018-12-28日,所以开始研究时对数据实时性要求不高,能实现功能即可. 经过近一个月的研究后, 即在 最基础表( ...

最新文章

  1. pycharm test 右键run
  2. 【Android RTMP】x264 图像数据编码 ( Camera 图像数据采集 | NV21 图像数据传到 Native 处理 | JNI 传输字节数组 | 局部引用变量处理 | 线程互斥 )
  3. Linux Centos7安装Oracle12c第二版本
  4. SAP UI5 应用开发教程之二十五 - 使用代理服务器解决 SAP UI5 应用访问远端 OData 服务的跨域问题
  5. html文字如何排布成圆形,css多个扇形怎么拼凑成圆?
  6. 对PHP输入输出流学习和认识
  7. 谈谈Virtual DOM
  8. python中options类_Python的OptionParser模块
  9. c++小学期大作业攻略(二)整体思路+主界面
  10. EF架构~看看下面这代码,你还敢用它的延时加载吗?
  11. linux多线程编程 实验,linux操作系统-实验五-linux 多线程编程.docx
  12. JavaWeb框架学习文章索引
  13. ImportError: Missing required dependencies [‘pytz‘]
  14. Revel 企业级 Go 应用开发框架
  15. uni-app APP支付 uni.requestPayment APP微信支付
  16. zblog php wordpress,ZblogPHP转换WordPress教程
  17. ClientDisconnectionReason(客户端断开原因)_羊豆豆_新浪博客
  18. 应急响应—常见应急响应处置思路
  19. 从零开始搭建博客Hexo-Node-Git搭建博客
  20. Error 1718. File was rejected by digital signature policy错误,文件的数字签名被你的本地软件策略给拒绝了,来看看解决方法

热门文章

  1. 牛顿迭代法的matlab程序,牛顿迭代法matlab程序
  2. PHP在线教育直播平台源码 网课小程序源码 在线学习系统源码(PC+小程序+H5 )
  3. MobaXterm连接Linux教程
  4. Cadence Orcad Capture 高亮整个网络的方法图文视频教程
  5. BTC:关键阻力的突破会带来持续的积极情绪
  6. 网页内嵌多媒体 IE,Mozilla、Firefox、NetScape、Opera
  7. unity 编辑器存档_Unity编辑器扩展之存储数据
  8. 文献解读:结构方程模型SEM基础,小白看这个就基本够了
  9. Matlab2017b 安装教程
  10. 非常经典的java编程题全集-共50题(11-30)