提示词
1
| 一个DataFrame中包含股票的开盘价、收盘价、最高价、最低价,现在要将其绘制为K线图,请给出示例代码。
|
答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import pandas as pd import mplfinance as mpf
df = pd.read_excel('../数据/历史行情数据.xlsx')
#这次我们保留日期、开盘、收盘、最高、最低、成交量 df = df[['日期', '开盘', '收盘', '最高', '最低', '成交量']]
# 2. 列名规范化(关键步骤!) print("原始列名:", df.columns.tolist()) # 调试查看实际列名
# 去除列名首尾空格 df.columns = df.columns.str.strip()
# 统一列名映射(根据实际数据调整) column_mapping = { '日期': 'Date', '开盘': 'Open', '最高': 'High', '最低': 'Low', '收盘': 'Close', '成交量': 'Volume', # 中文常见列名 'volume': 'Volume', # 小写列名 'VOL': 'Volume' # 大写列名 } df.rename(columns=column_mapping, inplace=True)
# 3. 设置日期索引 df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True)
# 4. 检查必要列是否存在 required_cols = ['Open', 'High', 'Low', 'Close'] if 'Volume' not in df.columns: print("警告: Volume列不存在, 自动禁用成交量显示") volume_param = False else: volume_param = True
# 5. 安全绘图 s = mpf.make_mpf_style(base_mpf_style='binance', rc={'font.family': 'SimHei', 'axes.unicode_minus': 'False'}) mpf.plot( df, type='candle', volume=volume_param, # 动态设置成交量 style=s, title='K线图', ylabel='价格', figratio=(16, 9) )
|
其中
“s = mpf.make_mpf_style(base_mpf_style=’binance’, rc={‘font.family’: ‘SimHei’, ‘axes.unicode_minus’: ‘False’})”是我添加的
如果style=binnace,则中文会显示成方框,提示报错字体不存在。
mplfinance增加中文支持,即可以自定义一个style:s,然后替换掉就行。
图像:
