具有不均匀时间序列索引的python pandas plot(计数均匀分布)

bbc*_*bbc 6 python matplotlib pandas

我的数据框有不均匀的时间索引.

我怎样才能找到一种绘制数据的方法,并自动将索引本地化?我在这里搜索,我知道我可以画出类似的东西

e.plot()
Run Code Online (Sandbox Code Playgroud)

即使是时间

但是时间索引(x轴)将是偶数间隔,例如每5分钟.如果我在前5分钟内需要100个数据,在第二个5分钟内需要6个数据,我如何均匀地绘制数据数量.并在x轴上找到正确的时间戳.

这里甚至算,但我不知道如何添加时间指数.

plot(e['Bid'].values)
Run Code Online (Sandbox Code Playgroud)

甚至算数

请求的数据格式示例

次,bid

2014-03-05 21:56:05:924300,1.37275

2014-03-05 21:56:05:924351,1.37272

2014-03-05 21:56:06:421906,1.37275

2014-03-05 21:56:06:421950,1.37272

2014-03-05 21:56:06:920539,1.37275

2014-03-05 21:56:06:920580,1.37272

2014-03-05 21:56:09:071981,1.37275

2014-03-05 21:56:09:072019,1.37272

这里是链接 http://code.google.com/p/eu-ats/source/browse/trunk/data/new/eur-fix.csv

这是代码,我曾经用过

import numpy as np
import pandas as pd
import datetime as dt
e = pd.read_csv("data/ecb/eur.csv", dtype={'Time':object})
e.Time = pd.to_datetime(e.Time, format='%Y-%m-%d %H:%M:%S:%f')
e.plot()

f = e.copy()
f.index = f.Time
x = [str(s)[:-7] for s in f.index]
ff = f.set_index(pd.Series(x))
ff.index.name = 'Time'
ff.plot()
Run Code Online (Sandbox Code Playgroud)

更新:

我添加了两个新的图表进行比较以澄清问题.现在我尝试使用暴力将时间戳索引转换回字符串,并将字符串绘制为x轴.格式容易搞砸了.似乎很难定制x标签的位置.

按刻度或数据点

按时间

8on*_*ne6 6

好吧,看起来你想要的是你想要在x-tick位置移动,以便每个tick之间有相同数量的点.并且您希望在这些适当定位的刻度上绘制网格.我有这个权利吗?

如果是这样:

import pandas as pd
import urllib
import matplotlib.pyplot as plt
import seaborn as sbn

content = urllib.urlopen('https://eu-ats.googlecode.com/svn/trunk/data/new/eur-fix.csv')
df = pd.read_csv(content, header=0)
df['Time'] = pd.to_datetime(df['Time'], format='%Y-%m-%d %H:%M:%S:%f')

every30 = df.loc[df.index % 30 == 0, 'Time'].values
fig, ax = plt.subplots(1, 1, figsize=(9, 5))
df.plot(x='Time', y='Bid', ax=ax)
ax.set_xticks(every30)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述