jupyternoterbook,读取excel文件,文件有日期,品名,最高价和最低价,现在筛选出某一品名的数据,利用其最低价最高价绘制k线图,x轴是每天的日期,即图中既要有折线图,还要有箱线图
时间: 2024-09-19 10:01:15 浏览: 33
在 Jupyter Notebook 中,你可以使用 pandas 库来读取 Excel 文件,并操作数据。对于日期、品名、最高价和最低价的数据,首先需要加载数据,然后进行数据清洗和筛选,最后使用 matplotlib 库中的 `plot` 函数画折线图,`axvline` 函数添加分割线表示最低价和最高价,以及 `boxplot` 函数创建箱线图。
以下是大致的步骤:
1. **导入所需库**:
```python
import pandas as pd
import matplotlib.pyplot as plt
```
2. **读取 Excel 文件**:
```python
df = pd.read_excel('your_file.xlsx') # 替换 'your_file.xlsx' 为你实际的文件路径
```
3. **数据清洗与筛选**:
- 检查日期列是否为日期类型,如果不是,则转换:
```python
if not df['日期'].dtype == 'datetime64[ns]':
df['日期'] = pd.to_datetime(df['日期'])
```
- 筛选特定品名的数据:
```python
specific_product = '品名1' # 替换为你要筛选的品名
filtered_df = df[df['品名'] == specific_product]
```
4. **创建折线图**:
```python
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
ax1.plot(filtered_df['日期'], filtered_df['最低价'], label='最低价')
ax1.plot(filtered_df['日期'], filtered_df['最高价'], label='最高价', color='tab:red')
ax1.set_ylabel('价格')
ax1.legend()
5. **添加分割线**:
```python
for price, line_color in zip(['最低价', '最高价'], ['blue', 'red']):
ax1.axvline(x=filtered_df[price].idxmax(), ymin=0, ymax=1, color=line_color, linestyle='--')
ax1.axvline(x=filtered_df[price].idxmin(), ymin=0, ymax=1, color=line_color, linestyle='--')
```
6. **创建箱线图**:
```python
ax2.boxplot(filtered_df[['最低价', '最高价']], positions=[0, 1], labels=['最低价', '最高价'])
ax2.set_ylabel('价格范围')
ax2.yaxis.grid(True)
```
7. **整体调整**:
```python
plt.xlabel('日期')
plt.title(f'{specific_product} 数据 K 线图与箱线图')
fig.autofmt_xdate()
plt.tight_layout()
```
8. **显示图形**:
```python
plt.show()
```
完成以上步骤后,你应该能看到包含折线图和箱线图的K线图。
阅读全文