使用datetime索引格式化数据图

2024-09-30 06:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想绘制一个名为vslr(414行,2列)的pandas数据帧,但是我得到的图形不可用

我用于打印的命令:

plt.plot(vslr['Price'],vslr['Date'])

图表: enter image description here

我的数据:

print(vslr.head)
                 Date   Price
0    2020-01-31 15:30:00  8.1653
1    2020-01-31 14:30:00  8.2087
2    2020-01-31 13:30:00  8.1753
3    2020-01-31 12:30:00  8.1551
4    2020-01-31 11:30:00  8.0903
..                   ...     ...
409  2019-11-05 13:30:00  6.8452
410  2019-11-05 12:30:00  6.8050
411  2019-11-05 11:30:00  6.7600
412  2019-11-05 10:30:00  6.7553
413  2019-11-05 09:30:00  6.6502

vslr.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 414 entries, 0 to 413
Data columns (total 2 columns):
Date     414 non-null object
Price    414 non-null object
dtypes: object(2)
memory usage: 6.6+ KB

感谢您的帮助:)


Tags: columns数据命令图形pandasdateobjectplot
2条回答

IIUC,您得到的是一个“无用”的图形,因为您选择了绘制日期的轴,通常您会在x-axis上绘制日期,在y-axis上绘制价格,然后检查您的图形。 在Matplotlib.plot()中,第一个参数绘制在x轴上,第二个参数绘制在y轴上

对于此用途,您可能需要按日期以及升序对数据帧进行排序:

vslr.sort_values(by='Date', ascending=True, inplace=True)
plt.plot(vslr['Date'],vslr['Price'])

注意,由于这是一个DateTime时间列,因此丢失的日期也将得到它们的刻度。 您的主要目标似乎是绘制价格与日期的关系图,以便您也可以从Date列中提取它们

vslr['Date']=pd.to_datetime(vslr['Date'])
vslr['Date']=vslr['date'].dt.date

如果将索引设置为datetime,matplotlib将为您处理x轴。这里有一个例子

import pandas as pd
import matplotlib.pyplot as plt

date_time = ["2011-09-01", "2011-08-01", "2011-07-01", "2011-06-01", "2011-05-01"]
date_time = pd.to_datetime(date_time)
temp = [2, 4, 6, 4, 6]

DF = pd.DataFrame()
DF['temp'] = temp
DF = DF.set_index(date_time)

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.3)
plt.xticks(rotation=90)
plt.plot(DF)

df索引设置为datetime序列允许matplotlib处理时间序列数据上的x-axis,也可以查看此link来处理x轴上的间距

正如我所观察到的,您正在处理时间序列数据,如果您只想在不进行任何预处理的情况下绘制它(将其划分为几个月,可能是每年),请遵循本文here

但是让我们假设您想将数据集划分为段,您可以使用dateproperties执行以下操作,然后在该轴上绘制它

 vslr['date']=pd.to_datetime(vslr['date'])
 vslr['month']=vslr['date'].dt.month
 vslr.groupby('month').aggregate({'Price':'sum'}).reset_index()

相关问题 更多 >

    热门问题