现在有来自Yahoo Finance的微软,谷歌,苹果三家公司近五年的股价情况表格,分别存在step3/MSFT.csv、step3/GOOG.csv、step3/AAPL.csv三个文件中,它们的格式都是一样的,以step3/MSFT.csv为例: Date,Open,High,Low,Close,Adj Close,Volume 2014-01-01,37.349998,37.889999,34.630001,37.840000,33.554665,930226200 ...... 2018-12-01,113.000000,113.419998,101.709999,102.889999,102.889999,428768900 第一行代表之后每一行逗号分隔的各个数据的含义,这里我们只要知道Date,Open的含义,分别代表日期,开盘价,以第一行数据为例,即:2014年1月1日的开盘价是37.349998。 在右侧编辑器中有一个函数Draw,要求在这个函数中读取并解析这三个文件的数据,并以日期为X轴,开盘价为Y轴,绘制一个折线图,并将其保存为step3/output/data.png文件。
时间: 2024-02-20 16:59:34 浏览: 94
好的,以下是一个实现上述要求的 Python 代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
def Draw():
# 读取三个csv文件
msft_df = pd.read_csv('step3/MSFT.csv')
goog_df = pd.read_csv('step3/GOOG.csv')
aapl_df = pd.read_csv('step3/AAPL.csv')
# 将日期列转换为datetime类型,并设置为索引
msft_df['Date'] = pd.to_datetime(msft_df['Date'])
goog_df['Date'] = pd.to_datetime(goog_df['Date'])
aapl_df['Date'] = pd.to_datetime(aapl_df['Date'])
msft_df.set_index('Date', inplace=True)
goog_df.set_index('Date', inplace=True)
aapl_df.set_index('Date', inplace=True)
# 绘制折线图
plt.plot(msft_df['Open'], label='Microsoft')
plt.plot(goog_df['Open'], label='Google')
plt.plot(aapl_df['Open'], label='Apple')
plt.legend()
plt.xlabel('Date')
plt.ylabel('Open Price')
# 保存图片
plt.savefig('step3/output/data.png')
```
代码解释:
1. 首先,我们使用 Pandas 库中的 `read_csv()` 函数读取三个 csv 文件,并将其分别存储在 `msft_df`、`goog_df`、`aapl_df` 三个 DataFrame 对象中。
2. 然后,我们使用 Pandas 库中的 `to_datetime()` 函数将日期列转换为 datetime 类型,并将其设置为索引。
3. 接着,我们使用 Matplotlib 库中的 `plot()` 函数绘制三条折线,分别对应于三个公司的开盘价数据,并使用 `legend()` 函数添加图例。
4. 最后,我们使用 `xlabel()` 和 `ylabel()` 函数添加 X 轴和 Y 轴标签,并使用 `savefig()` 函数将图像保存为指定的文件。
希望这个代码可以帮助到您!
阅读全文