Axis 的绘图显示错误的输出

Axis's Plot Show Wrong Output

我有这个代码:

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set()
import yfinance as yf
df = yf.download('AAPL',
                 start='2001-01-01',
                 end='2005-12-31',
                 progress=False)
df.head()
df = df.reset_index()
df['Date'] = pd.to_datetime(df.Date, format='%Y%m%d')
df.dropna(how='any', inplace=True)
# Plot the returns
plt.figure(figsize=(10,6))
plt.grid(True)
plt.xlabel('Dates')
plt.ylabel('Prices')
plt.plot(df['Close'])
plt.title('Close Price', fontsize=16)
plt.show()

收盘价图的输出是

我们可以看到日期和价格没有显示正确的输出。我检查了数据框的日期类型。

df.info()

结果是

我尝试了一些方法,但没有用。如何解决这个问题?

不要重置索引。索引 Dates 已经是 datetime.

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set()
import yfinance as yf
df = yf.download('AAPL',
                 start='2001-01-01',
                 end='2005-12-31',
                 progress=False)
# df.head()
# df = df.reset_index()  # <- DON'T DO THAT
# df['Date'] = pd.to_datetime(df.Date, format='%Y%m%d')  # <- DON'T DO THAT
# df.dropna(how='any', inplace=True)
# Plot the returns
plt.figure(figsize=(10,6))
plt.grid(True)
plt.xlabel('Dates')
plt.ylabel('Prices')
plt.plot(df['Close'])
plt.title('Close Price', fontsize=16)
plt.show()

要修改日期轴,请阅读 Date tick labels matplotlib 文档。