基于tushare实现所有股票的下载和均值计算排序

本文介绍了如何使用tushare接口下载所有股票的历史数据,并将其保存为CSV文件。通过遍历股票列表,调用接口获取每日数据,然后利用pandas进行数据处理,计算收盘价的10日移动平均,最后按均值进行排序。文章还强调了使用stock_basic接口需要积分,并提供了数据保存和读取的辅助函数。
摘要由CSDN通过智能技术生成

一.简介 

在笔者的上篇文章中,已经能够简单的下载一只股票的数据以及完成导入数据库和进行数据库,实现股票数据的更新等的相关操作,在这篇博客中,笔者将实现利用接口实现所有数据的下载,并计算均值实现均值排序等。

有关tushare的一些基本操作,如果读者不太熟悉,可参考笔者的上一篇文章:

http://t.csdn.cn/MF9uL

二.下载所有股票

当我们想要下载所有的股票数据时,我们可以登录tushare的官网查看对应的接口:

 但笔者需注意这里的stock_basic接口是需要一定的积分的,如果没有积分或积分不足,需要积累一定的积分才能使用该接口。

首先我们要获取当前可获取的股票列表:

df_stockBaseData = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
stock_list = df_stockBaseData['ts_code']

stock_basic输入的参数如下: 

 当我们获取了可用的接口后,由于下载的股票数据较多(大概有6000支可获取股票),我们可以建立一个文件夹来专门放股票数据:

import os  # 创建文件夹需要导入os模块
data_folder = 'stock_data'
if not os.path.exists(data_folder):
    os.makedirs(data_folder)

这样我们就创建好了一个专门存放股票数据的文件夹

然后我们就可以利用遍历实现6000支股票的下载:

    # 遍历股票列表
    for code in stock_list:
        # 获取股票历史数据
        stock_data = pro.query('daily', ts_code=code, start_date='19800203', end_date='')
        # 如果获取到了数据,则保存到CSV文件中
        if stock_data is not None:
            file_name = f"{data_folder}/{code}.csv"
            stock_data.to_csv(file_name)
            read_write_csv(file_name)
            print(f"保存股票 {code} 数据到文件 {file_name}")

注意在笔者的代码中,笔者使用了一个转化格式的函数(read_write_csv),如果看过笔者上一篇文章的话,笔者也用了一个相同的函数,笔者在这篇文章中对这个函数做了进一步的改善,可以直接在原文件上进行转化格式:

def read_write_csv(from_file):
    feed = csvfeed.Feed("trade_date", "%Y%m%d")
    feed.addValuesFromCSV(from_file)
    file = open(from_file, "w")
    file.write("Date Time,Open,High,Low,Close,Volume,Adj Close")
    file.write("\n")
    for dateTime, value in feed:
        str_datetime = dateTime.strftime("%Y-%m-%d")
        file.write("%s,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f" % (str_datetime, value['open'], value['high'], value['low'], value['close'], value['vol'], value['close']))
        file.write("\n")
    file.close()

效果图如下:

 总代码如下:

import tushare as ts
import os
from pyalgotrade.feed import csvfeed


def read_write_csv(from_file):
    feed = csvfeed.Feed("trade_date", "%Y%m%d")
    feed.addValuesFromCSV(from_file)
    file = open(from_file, "w")
    file.write("Date Time,Open,High,Low,Close,Volume,Adj Close")
    file.write("\n")
    for dateTime, value in feed:
        str_datetime = dateTime.strftime("%Y-%m-%d")
        file.write("%s,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f" % (str_datetime, value['open'], value['high'], value['low'], value['close'], value['vol'], value['close']))
        file.write("\n")
    file.close()


if __name__ == '__main__':
    pro = ts.pro_api()
    df_stockBaseData = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
    stock_list = df_stockBaseData['ts_code']
    data_folder = 'stock_data'
    if not os.path.exists(data_folder):
        os.makedirs(data_folder)
    # 遍历股票列表
    for code in stock_list:
        # 获取股票历史数据
        stock_data = pro.query('daily', ts_code=code, start_date='19800203', end_date='')
        # 如果获取到了数据,则保存到CSV文件中
        if stock_data is not None:
            file_name = f"{data_folder}/{code}.csv"
            stock_data.to_csv(file_name)
            read_write_csv(file_name)
            print(f"保存股票 {code} 数据到文件 {file_name}")
    print("数据保存完成!")

 笔者在此再次提醒,一定要有一定的积分才能使用stock_basic这个接口。

三.股票的均值计算

 由于我们上面已经下载了对应的csv文件,并且都放在同一个文件夹当中,所以我们可以直接对文件夹中的文件进行操作:

笔者这里给出两个os库里的函数,对于遍历文件夹里的文件有帮助:

这两个函数对于操作文件,寻找到文件的路径有很大的帮助:

path = 'F:/tushare国内股票数据/The Last/stock_data'
file_dir = os.listdir(path)
for file in file_dir:
    domain = os.path.abspath(path)
    file_name = file
    file = os.path.join(domain, file)

排序的话我们可以使用pandas里的dataframe来存储每支股票的均值,进而使用sort_values函数来进行排序。

首先当我们获取文件路径后我们可以读取文件中的内容,来计算均值:

df = pd.read_csv(file, parse_dates=['Close'], index_col=['Date Time'], sep=',')
df[file_name] = df['Close'].rolling(10).mean()

其中df['Close']代表Close列的数据,rolling函数表示以多少天为基础,来计算移动平均,mean()函数即代表均值的计算。

最后我们再添加一个dataframe来保存各个数据

最终代码如下:

import pandas as pd
import os

if __name__ == '__main__':
    path = 'F:/tushare国内股票数据/The Last/stock_data'
    file_dir = os.listdir(path)
    data = pd.DataFrame()
    for file in file_dir:
        domain = os.path.abspath(path)
        file_name = file
        file = os.path.join(domain, file)
        df = pd.read_csv(file, parse_dates=['Close'], index_col=['Date Time'], sep=',')
        df[file_name] = df['Close'].rolling(10).mean()
        data = data.append(df[file_name].tail(1))
    data.columns = ['Close']
    data = data.sort_values(by="Close", ascending=False)
    print(data.head(10))

计算成功后,我们选取均值前十进行展示:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python是一种功能强大的编程语言,被广泛应用于股票数据分析领域。Python提供了丰富的库和工具,可用于获取、处理和分析股票数据,同时还可以进行可视化展示。 在股票数据分析中,首先需要获取股票数据。Python中有许多数据源,如Yahoo Finance、Quandl和Alpha Vantage等,可以免费获取股票基本数据以及技术分析数据等。 接着,使用Python中的Pandas库对数据进行数据预处理,如数据清洗、排序、过滤等。Pandas提供了强大的数据结构和数据操作方法,可以对大规模的股票数据进行高效处理。 在数据预处理完成后,使用Python中的Matplotlib、Seaborn等库进行数据可视化展示。通过图形化展示分析结果,可以更加清晰地了解数据特点和股票市场走向。 除此之外,Python还提供了一些量化分析工具,如Pyfolio、Zipline等。这些工具可以在股票交易策略的制定和回测中发挥重要作用。 我们可以使用Python股票数据转化为更直观和可操作的信息,进行更全面、深入的股票分析,从而制定更有效的股票交易策略,提高交易的成功率。 ### 回答2: 随着互联网金融行业的持续发展,越来越多的人开始关注股票市场,希望通过对市场数据的深入分析来获取更加科学的投资决策。而Python作为一种高效、易学易用的编程语言,可以帮助投资者轻松地进行股票数据分析。 Python对于股票分析有许多非常有用的库,其中最重要的是Pandas和NumPy库。Pandas库是Python中用于数据分析的主要库之一,它提供了丰富的数据结构和数据分析工具,使数据的处理和分析变得更加简单。Pandas拥有强大的数据读取功能,能够轻松地处理一系列格式的股票数据,如csv、Excel、JSON、SQL等数据文件格式。 NumPy库是Python中用于科学计算的主要库之一,它提供了高效的数组和矩阵运算功能。在股票分析中,NumPy库可以用来进行多维数组的数据处理和计算。 通过使用Pandas和NumPy库,可以轻松地对股票数据进行读取、处理、分析和可视化,以帮助投资者更准确地预测股票走势和做出更科学的投资决策。实际上,越来越多的金融机构正在将Python作为他们的主要编程语言,以便更好地处理数据和进行分析。 在Python之外,还有许多其他的库和工具可用于股票分析。例如,Matplotlib库可以用于图表绘制和可视化,Scikit-learn库可以用于数据挖掘和预测建模。 总之,Python作为一种通用的编程语言,能够轻松地与其他软件集成,并为股票数据分析提供丰富的库和工具。无论是日常投资者还是专业的金融分析师,都可以受益于Python股票数据分析中的应用。 ### 回答3: Python是一种流行的编程语言,适用于各种应用领域,包括股票数据分析。在股票市场上, 数据驱动投资策略已经成为了趋势,而 Python 对于股票数据的处理以及可视化具有极高的应用价值。 Python语言与众多的科学计算库的出现,大大简化了股票数据分析的工作流程,并激发了数据科学家和量化投资者的创造力。下面让我们一起探讨如何使用Python进行股票数据分析。 首先,我们需要获取股票数据。在中国,我们可以通过股票交易所和证券公司的接口获得数据。在海外,Yahoo Finance等数据服务供应商也提供了数据接口。我们还可以使用网络爬虫技术从网站抓取股票数据。这些数据可以是个股价格、财务报表等各种形式。 其次,我们需要对数据进行清洗和处理。这些数据可能来自多个来源,格式也可能不同,因此需要进行标准化处理,以便于我们进行后续的数据分析和建模。例如,对于行情数据,我们可能需要进行填补缺失值、去掉异常值等操作。 接着,我们需要对数据进行分析。 对于股票数据所涉及到的问题复杂性,数据科学家需要从多个角度来进行分析。在Python中,我们可以使用众多的数据科学库(如numpy、pandas和matplotlib等)来进行数据统计和可视化。 最后是数据建模。 在进行数据建模之前,我们需要对数据进行特征工程和建立模型。在Python中,我们可以使用不同的机器学习库(如scikit-learn等)来创建机器学习模型。 股票数据分析是一个复杂的过程,需要充分的调研、数据清洗、统计分析和模型建立等工作,但是Python提供了很多有用的工具和库,使得这个过程更加简单和高效。值得一提的是,Python还有很多贡献者开发了一些量化投资库(如backtrader等),这些库已经提供了大量的开源策略和模型,方便开发者快速实现策略并验证其可行性,提高了工作效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值