运用python 1.编写程序求日收益,并存入变量 2.编写程序分别求每支股票的日收益变量从2015年1月6日到2021年7月7日的最大子数组。将结果保存到变量 3.利用matplotlib绘制每只股票原始价格的图线(注意:不是日收益曲线,只需画原始数据曲线)
时间: 2024-09-19 17:10:44 浏览: 34
Python基于time模块求程序运行时间的方法
5星 · 资源好评率100%
好的,我会解释如何在Python中完成这三个任务。
1. **求日收益并存入变量**:
假设我们有一个包含每日股票价格的数据列表,你可以按以下步骤计算日收益率:
```python
# 假设stock_prices是一个日期和对应收盘价的字典列表
daily_returns = []
for i in range(1, len(stock_prices)):
price_diff = stock_prices[i][1] - stock_prices[i-1][1]
daily_return = price_diff / stock_prices[i-1][1]
daily_returns.append(daily_return)
```
`daily_returns`就是日收益的变量。
2. **求最大子数组的日收益**:
可以使用numpy库的`cumsum()`和`argpartition()`函数找出最大子数组:
```python
import numpy as np
max_subarray_returns = [daily_returns[i:j].sum() for i, j in zip(*np.argpartition(np.array(daily_returns) - np.max(daily_returns), -2)[:2:-1])]
```
`max_subarray_returns`包含了每支股票的最大子数组日收益。
3. **绘制原始价格曲线**:
使用matplotlib,首先加载数据,然后创建图表:
```python
import matplotlib.pyplot as plt
import pandas as pd
# 假设stock_prices_df是一个包含日期和价格的Pandas DataFrame
df = pd.DataFrame(stock_prices, columns=['date', 'price'])
plt.figure(figsize=(10,6))
df['price'].plot(kind='line')
plt.title('Original Stock Prices')
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()
```
这会显示每支股票原始价格的折线图。
阅读全文