首页 > 解决方案 > 来自数据框的 X 轴数据

问题描述

我有一些要绘制的数据。我正在使用下面的代码:

import pandas_datareader as web

crypto_currency = 'BTC'
against_currency = 'USD'
start, end = dt.datetime(2012,1,1), dt.datetime.now()

df = web.DataReader(f'{crypto_currency}-{against_currency}', 'yahoo', start, end)
df.head()

数据框看起来像这样,

在此处输入图像描述

例如,如果我想绘制接近值,我会执行以下操作:

import seaborn as sns; sns.set(style="whitegrid")
import matplotlib.pyplot as plt

close_values = df.filter(['Close']).values

plt.figure(figsize=(20,8))
plt.plot(close_values, label=f'Close values')

plt.xlim(0, len(close_values))
plt.title(f'{crypto_currency}-{against_currency} close data')
plt.legend()
plt.show()

图表如下所示:

在此处输入图像描述

没关系,但我想在 X 轴上显示日期。我以为我只需要从索引中获取日期值并将它们添加为 X 轴,但这是错误的。我的编码是错误的还是在概念上是错误的?我知道这应该很容易,但我不知道该怎么做。

标签: pythonpandasmatplotlib

解决方案


由于您使用的是Dateas 索引,因此请立即绘制df['Close']

import seaborn as sns; sns.set(style="whitegrid")
import matplotlib.pyplot as plt

plt.figure(figsize=(20,8))
df['Close'].plot(title=f'{crypto_currency}-{against_currency} close data', label='Close values')

plt.legend(loc='upper left')
plt.xlabel('')
plt.show()

在此处输入图像描述


如果您使用Date数据作为索引,则可以按年、按月和按天进行搜索。

new_df = df['2020']
new_df

# df['2020-01':'2020-12'] --monthly
# df['2020-01-01':'2020-12-31'] --daily
plt.figure(figsize=(20,8))
new_df['Close'].plot(title=f'2020 {crypto_currency}-{against_currency} close data')

plt.xlabel('')
plt.show()

在此处输入图像描述


推荐阅读