gpt4 book ai didi

python - 我想使用 matplotlib 从数据框中绘制多个变量,但最终的图看起来很奇怪

转载 作者:行者123 更新时间:2023-12-04 15:10:48 25 4
gpt4 key购买 nike

我有一个数据框,其中包含多家公司的股票和一个日期列。我想在同一图中的 y 轴上绘制这些股票值,在 x 轴上绘制日期。

每只股票的起始价不同(例如亚马逊从 3103 美元起,而苹果从 112 美元起)

当我这样做时,我的情节看起来像这样

plot image

这是我的剧情代码:

import matplotlib.pyplot as plt

%matplotlib inline
fig2 = plt.figure()
ax2 = fig2.add_subplot('111')
ax2.plot(plot_stocks['Amazon High'])
ax2.plot(plot_stocks['Apple High'])
ax2.plot(plot_stocks['Facebook High'])
ax2.plot(plot_stocks['Microsoft High'])

这是数据示例:

Date  Amazon High  Apple High Facebook High Microsoft High
0 2020-12-04 $3198.21 $122.8608 $283.46 $215.38
1 2020-12-03 $3228.64 $123.78 $286.65 $216.3757
2 2020-12-02 $3232 $123.37 $291.78 $215.47
3 2020-12-01 $3248.95 $123.4693 $289.3 $217.32
4 2020-11-30 $3228.39 $120.97 $277.7 $214.76
5 2020-11-27 $3216.19 $117.49 $279.13 $216.27
6 2020-11-25 $3198 $116.75 $280.18 $215.29
7 2020-11-24 $3134.25 $115.85 $277.8199 $214.25
8 2020-11-23 $3139.745 $117.6202 $270.9471 $212.29
9 2020-11-20 $3132.89 $118.77 $273 $213.285

有一件事我忘了提到,High 列是字符串,即使我这样做了之后我也无法更改它们:

plot_stocks['Amazon High'] = plot_stocks['Amazon High'].replace(r'$', '')

最佳答案

您可以通过使用 pd.MultiIndex.from_tuples() 创建多索引来操作您的数据:

这使得 plot 自动为您提供您正在寻找的输出:

Pandas 设置:

plot_stocks['Date'] = pd.to_datetime(plot_stocks['Date'])
plot_stocks = plot_stocks.replace('\$', '', regex=True)
plot_stocks.iloc[:,1:] = plot_stocks.iloc[:,1:].astype(float)
plot_stocks = plot_stocks.set_index('Date')
plot_stocks.columns = pd.MultiIndex.from_tuples([(col.split()[1], col.split()[0])
for col in plot_stocks.columns])
plot_stocks
Out[1]:
High
Amazon Apple Facebook Microsoft
Date
2020-12-04 3198.210 122.8608 283.4600 215.3800
2020-12-03 3228.640 123.7800 286.6500 216.3757
2020-12-02 3232.000 123.3700 291.7800 215.4700
2020-12-01 3248.950 123.4693 289.3000 217.3200
2020-11-30 3228.390 120.9700 277.7000 214.7600
2020-11-27 3216.190 117.4900 279.1300 216.2700
2020-11-25 3198.000 116.7500 280.1800 215.2900
2020-11-24 3134.250 115.8500 277.8199 214.2500
2020-11-23 3139.745 117.6202 270.9471 212.2900
2020-11-20 3132.890 118.7700 273.0000 213.2850

Matplotlib 代码:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
company_list = [col[1] for col in plot_stocks.columns]
plot_stocks.plot(ax=ax, title=f'Daily Stock Prices ({(", ").join(company_list)})')
ax.legend(title='Companies', labels=company_list)
ax.set_ylabel('Stock Prices')
plt.show()

enter image description here

关于python - 我想使用 matplotlib 从数据框中绘制多个变量,但最终的图看起来很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65243986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com