用pyecharts导入Excel数据,数据包含月收益率列、交易时间列(索引,格式为2010-06),根据这些数据绘制热力图HeatMap,要求X轴是年份,Y轴是1-12月份
时间: 2024-05-08 21:19:49 浏览: 78
好的,我明白了。对于您的问题,我可以提供以下代码:
```python
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import HeatMap
# 读取Excel数据
df = pd.read_excel("data.xlsx", index_col=0)
# 将时间列转换为年份列和月份列
df["year"] = pd.DatetimeIndex(df.index).year
df["month"] = pd.DatetimeIndex(df.index).month
# 统计每个月份的平均收益率
data = pd.pivot_table(df, values="月收益率", index="year", columns="month", aggfunc="mean")
# 绘制热力图
heatmap = (
HeatMap()
.add_xaxis(data.columns.tolist())
.add_yaxis(
"",
data.index.tolist(),
data.values.tolist(),
label_opts=opts.LabelOpts(is_show=True, position="insideRight", font_size=12),
itemstyle_opts=opts.ItemStyleOpts(
color=opts.ColorOpts(
[
"#313695",
"#4575b4",
"#74add1",
"#abd9e9",
"#e0f3f8",
"#ffffbf",
"#fee090",
"#fdae61",
"#f46d43",
"#d73027",
"#a50026",
]
)
),
)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="月收益率热力图", subtitle="数据来源:data.xlsx"),
visualmap_opts=opts.VisualMapOpts(
orient="horizontal",
pos_left="center",
min_=min(df["月收益率"]),
max_=max(df["月收益率"]),
range_text=["High", "Low"],
range_color=["#50a3ba", "#eac7b4"],
textstyle_opts=opts.TextStyleOpts(color="#fff"),
),
xaxis_opts=opts.AxisOpts(type_="category", name="月份"),
yaxis_opts=opts.AxisOpts(type_="category", name="年份"),
)
)
# 展示图表
heatmap.render("heatmap.html")
```
这段代码实现了从Excel文件中读取数据,提取月收益率和交易时间列,转换成年份列和月份列,统计每个月份的平均收益率,并用pyecharts绘制热力图HeatMap,其中X轴是月份,Y轴是年份。您可以根据自己的数据和需求修改代码中的一些参数和选项,最后将热力图保存为HTML文件以展示。希望能够解决您的问题,有任何疑问可以再问我哦!
阅读全文