phi*_*ox2 3 datetime matplotlib pandas
我有一个pandas.DataFrame(df),它由一些值和一个datetime组成,datetime首先是一个字符串,但是我将其转换为Timestamp
df['datetime'] = pd.to_datetime(df['Time [dd.mm.yyyy hh:mm:ss.ms]'], format="%d.%m.%Y %H:%M:%S.%f")
Run Code Online (Sandbox Code Playgroud)
看来可行,我可以访问obj.day等新列元素的属性。因此,结果列包含时间戳记。当我尝试使用pyplot.plot(df['datetime'],df['value_name'])
或进行绘制时df.plot(x='datetime',y='value_name')
,下图为结果。我尝试使用转换时间戳,obj.to_pydatetime()
但没有任何改变。数据帧本身由来自csvs的一些数据填充。令我感到困惑的是,对于某些csv,它可以工作,而对其他csv,则不能。我很确定转换为时间戳是成功的,但我可能是错的。我的时间范围也应该是2015-2016年,而不是1981-1700年。如果尝试从DataFrame中找到最小和最大时间戳,则分别在2015年和2016年可获得正确的时间戳。
编辑:
df.head()
给出:
扫描时间[dd.mm.yyyy hh:mm:ss.ms]频率[Hz]电压[V]
0 1.0 11.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
datetime
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
Run Code Online (Sandbox Code Playgroud)
我正在尝试绘制“频率[Hz]”对“日期时间”。
我认为您需要set_index
然后设置两个轴的格式:
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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6734 次 |
最近记录: |