英伟达在过去十年的股价走势展示了其在市场上的强劲表现和显著增长。自1999年上市以来,英伟达的股价经历了多次显著的涨幅,并在2024年达到了历史新高。
从2023年6月的数据来看,英伟达的股价为386.54美元/股,市值为9548亿美元。然而,到了2024年6月,英伟达的股价已经大幅上涨, 市值达到了3.34万亿美元,成为全球第一。
这10年,英伟达是如何一步步登顶全球第一宝座的,可以通过动画视频更加直观的来展示。
在deepseek中输入提示词:
你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:
用akshare库获取英伟达(股票代码:105.NVDA) 在2014年6月19日到2024年6月19日期间的股票的收盘价数据(用后复权的收盘价);
基于后复权的收盘价数据,做一个动态股价曲线图,逐日显示英伟达股价的动态变化情况, 以mp4视频文件输出,保存到文件夹:F:\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.animation as animation
import os
import pandas as pd
# 设置matplotlib默认字体为'SimHei'
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 获取英伟达的股票数据
print("正在获取英伟达的股票数据...")
stock_data = ak.stock_us_hist(symbol='105.NVDA', period="daily", start_date="20140619", end_date="20240619", adjust="hfq")
print("数据获取成功!")
# 检查数据
print("数据预览:")
print(stock_data.head())
# 将日期列转换为日期时间类型
stock_data['日期'] = pd.to_datetime(stock_data['日期'])
# 设置视频输出文件夹
output_folder = r"F:\aivideo"
if not os.path.exists(output_folder):
os.makedirs(output_folder)
output_file = os.path.join(output_folder, "nvidia_stock_price.mp4")
# 创建绘图
fig, ax = plt.subplots(figsize=(10, 6))
# 初始化绘图
def init():
ax.clear()
ax.set_title('英伟达股价走势')
ax.set_xlabel('日期')
ax.set_ylabel('收盘价 (美元)')
# 更新绘图
def update(frame):
ax.clear()
ax.set_title('英伟达股价走势')
ax.set_xlabel('日期')
ax.set_ylabel('收盘价 (美元)')
ax.plot(stock_data['日期'][:frame], stock_data['收盘'][:frame], label='收盘价')
ax.legend()
if frame > 0:
ax.set_xlim(stock_data['日期'].iloc[0], stock_data['日期'].iloc[frame] + pd.Timedelta(days=1))
else:
ax.set_xlim(stock_data['日期'].iloc[0], stock_data['日期'].iloc[0] + pd.Timedelta(days=1))
ax.set_ylim(stock_data['收盘'].min(), stock_data['收盘'].max())
# 创建动画
ani = animation.FuncAnimation(fig, update, frames=len(stock_data), init_func=init, interval=200, repeat=False)
# 保存动画为视频文件
print("正在生成视频文件...")
writer = animation.FFMpegWriter(fps=30, bitrate=10000, extra_args=['-vcodec', 'libx264', '-pix_fmt', 'yuv420p', '-s', '1920x1080'])
ani.save(output_file, writer=writer)
print(f"视频文件已保存到: {output_file}")
plt.show()
可以看到10年的前几年,英伟达股票虽然上涨,但是涨幅很小,2017年完成了10倍之旅,最近5年则持续大幅上涨,相对于2014年股票上涨200多倍,实现惊人的市值增长。不过,虽然拉长时间看,是一直上涨,但是中间的波动也非常大,回调期间跌幅也很惊人,很少有人能10年一直拿着不动。