赞
踩
用akshare库获取英伟达(股票代码:105.NVDA) 在2014年6月19日到2024年6月19日期间的股票的收盘价数据(用后复权的收盘价);
基于后复权的收盘价数据,做一个动态股价曲线图,逐日显示英伟达股价的动态变化情况, 以mp4视频文件输出,保存到文件夹:E:\aivideo;
在大模型中使用如下提示词:
你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:
用akshare库获取英伟达(股票代码:105.NVDA) 在2014年6月19日到2024年6月19日期间的股票的收盘价数据(用后复权的收盘价);
基于后复权的收盘价数据,做一个动态股价曲线图,逐日显示英伟达股价的动态变化情况, 以mp4视频文件输出,保存到文件夹:E:\aivideo;
注意:
每一步都要输出信息到屏幕上
日期格式是YYYYMMDD
设置matplotlib默认字体为'SimHei',文件路径为:C:\Windows\Fonts\simhei.ttf
mp4视频的分辨率1080p,码率10Mbps以内,视频时长控制在5分钟以内,格式为MP4格式;
stock_data['日期'] 列的数据类型是字符串,而不是日期时间类型。我们需要先将这一列转换为日期时间类型,然后再进行操作
历史行情数据-东财
接口: stock_us_hist
目标地址: https://quote.eastmoney.com/us/ENTX.html#fullScreenChart
描述: 东方财富网-行情-美股-每日行情
限量: 单次返回指定上市公司的指定 adjust 后的所有历史行情数据
输入参数
名称类型描述
symbolstr美股代码, 可以通过 ak.stock_us_spot_em() 函数返回所有的 pandas.DataFrame 里面的 代码 字段获取
periodstrperiod='daily'; choice of {'daily', 'weekly', 'monthly'}
start_datestrstart_date="20210101"
end_datestrend_date="20210601"
adjuststr默认 adjust="", 则返回未复权的数据; adjust="qfq" 则返回前复权的数据, adjust="hfq" 则返回后复权的数据
输出参数
名称类型描述
日期object-
开盘float64注意单位: 美元
收盘float64注意单位: 美元
最高float64注意单位: 美元
最低float64注意单位: 美元
成交量int32注意单位: 股
成交额float64注意单位: 美元
振幅float64注意单位: %
涨跌幅float64注意单位: %
涨跌额float64注意单位: 美元
换手率float64注意单位: %
接口示例
import akshare as ak
stock_us_hist_df = ak.stock_us_hist(symbol='106.TTE', period="daily", start_date="20200101", end_date="20240214", adjust="qfq")
print(stock_us_hist_df)
根据大模型给出的代码,排除错误后结果如下:
- import akshare as ak
- import matplotlib.pyplot as plt
- import matplotlib.dates as mdates
- import pandas as pd
- import os
- from matplotlib.animation import FuncAnimation, FFMpegWriter
- import matplotlib
- matplotlib.rcParams['animation.ffmpeg_path'] = r'D:\Shotcut\ffmpeg.exe'
- # 设置matplotlib默认字体为'SimHei'
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
-
- # 获取英伟达股票数据
- def get_stock_data():
- print("正在获取英伟达股票数据...")
- stock_data = ak.stock_us_hist(symbol='105.NVDA', period="daily", start_date="20140619", end_date="20240619", adjust="hfq")
- print("数据获取完成。")
- return stock_data
-
- # 转换日期格式
- def convert_date_format(stock_data):
- print("正在转换日期格式...")
- stock_data['日期'] = pd.to_datetime(stock_data['日期'], format='%Y-%m-%d')
- print("日期格式转换完成。")
- return stock_data
-
- # 创建动态股价曲线图
- def create_animation(stock_data):
- print("正在创建动态股价曲线图...")
- fig, ax = plt.subplots(figsize=(19.2, 10.8))
- ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
- ax.xaxis.set_major_locator(mdates.YearLocator())
- line, = ax.plot([], [], lw=2)
-
- def init():
- ax.set_xlim(stock_data['日期'].iloc[0], stock_data['日期'].iloc[-1])
- ax.set_ylim(stock_data['收盘'].min(), stock_data['收盘'].max())
- return line,
-
- def update(frame):
- line.set_data(stock_data['日期'].iloc[:frame], stock_data['收盘'].iloc[:frame])
- ax.relim()
- ax.autoscale_view()
- return line,
-
- ani = FuncAnimation(fig, update, frames=len(stock_data), init_func=init, blit=True)
- print("动态股价曲线图创建完成。")
- return ani
-
- # 保存视频
- def save_video(ani):
- print("正在保存视频...")
- if not os.path.exists(r'E:\aivideo'):
- os.makedirs(r'E:\aivideo')
- writer = FFMpegWriter(fps=30, metadata=dict(artist='Me'), bitrate=10000)
- ani.save(r'E:\aivideo\nvidia_stock_price.mp4', writer=writer)
- print("视频保存完成。")
-
- # 主函数
- def main():
- stock_data = get_stock_data()
- stock_data = convert_date_format(stock_data)
- ani = create_animation(stock_data)
- save_video(ani)
-
- if __name__ == "__main__":
- main()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。