Datetime 将数据帧和xaxis标绘为时间戳会生成空标绘

Datetime 将数据帧和xaxis标绘为时间戳会生成空标绘,datetime,pandas,matplotlib,Datetime,Pandas,Matplotlib,我有一个pandas.DataFrame(df),它由一些值和datetime组成,datetime最初是一个字符串,但我使用 df['datetime'] = pd.to_datetime(df['Time [dd.mm.yyyy hh:mm:ss.ms]'], format="%d.%m.%Y %H:%M:%S.%f") 它似乎可以工作,我可以访问新列的元素属性,比如obj.day等等。因此,结果列包含一个时间戳。当我尝试使用pyplot.plot(df['datetime',df['va

我有一个pandas.DataFrame(df),它由一些值和datetime组成,datetime最初是一个字符串,但我使用

df['datetime'] = pd.to_datetime(df['Time [dd.mm.yyyy hh:mm:ss.ms]'], format="%d.%m.%Y %H:%M:%S.%f")
它似乎可以工作,我可以访问新列的元素属性,比如obj.day等等。因此,结果列包含一个时间戳。当我尝试使用
pyplot.plot(df['datetime',df['value\u name'])
df.plot(x='datetime',y='value\u name')
绘制此图时,下面的图片就是reslut。我尝试使用
obj.将时间戳转换为\u pydatetime()
,但这并没有改变任何事情。数据帧本身由来自CSV的一些数据填充。让我困惑的是,对于某些CSV,它是有效的,但对于其他CSV则不起作用。我很确定转换成时间戳是成功的,但我可能错了。另外,我的时间窗口应该是2015-2016年,而不是1981-1700年。如果我试图从数据帧中定位最小时间戳和最大时间戳,我将分别在2015年和2016年获得正确的时间戳

编辑:
df.head()
给出:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 33270741 entries, 0 to 9140687
Data columns (total 5 columns):
Sweep                            float64
Time [dd.mm.yyyy hh:mm:ss.ms]    object
Frequency [Hz]                   float64
Voltage [V]                      float64
datetime                         datetime64[ns]
dtypes: datetime64[ns](1), float64(3), object(1)
memory usage: 1.5+ GB
扫描时间[dd.mm.yyyy hh:mm:ss.ms]频率[Hz]电压[V]
01.0111.03.2014 10:13:04.270 50.0252 230.529
1 2.0 11.03.2014 10:13:06.254 49.9515 231.842
2 3.0 11.03.2014 10:13:08.254 49.9527 231.754
3 4.0 11.03.2014 10:13:10.254 49.9490 231.678
4 5.0 11.03.2014 10:13:12.254 49.9512 231.719

日期时间
0 2014-03-11 10:13:04.270
1 2014-03-11 10:13:06.254
2 2014-03-11 10:13:08.254
3 2014-03-11 10:13:10.254
4 2014-03-11 10:13:12.254

df.info()
给出:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 33270741 entries, 0 to 9140687
Data columns (total 5 columns):
Sweep                            float64
Time [dd.mm.yyyy hh:mm:ss.ms]    object
Frequency [Hz]                   float64
Voltage [V]                      float64
datetime                         datetime64[ns]
dtypes: datetime64[ns](1), float64(3), object(1)
memory usage: 1.5+ GB

INT64索引:33270741个条目,0到9140687
数据列(共5列):
扫描浮动64
时间[dd.mm.yyyy hh:mm:ss.ms]对象
频率[Hz]64
电压[V]64
日期时间日期时间64[ns]
数据类型:datetime64[ns](1)、float64(3)、object(1)
内存使用率:1.5+GB
我正在尝试绘制“频率[Hz]”与“日期时间”。

我认为您需要并设置两个轴的格式:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

df['datetime'] = pd.to_datetime(df['Time [dd.mm.yyyy hh:mm:ss.ms]'],
                                   format="%d.%m.%Y %H:%M:%S.%f")

print (df)

df.set_index('datetime', inplace=True)

ax = df['Frequency [Hz]'].plot()

ticklabels = df.index.strftime('%Y-%m-%d')
ax.xaxis.set_major_formatter(ticker.FixedFormatter(ticklabels))
ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%.2f'))
plt.show()
在绘图之前,什么是
打印(df.head())
打印(df.info)