我有一只大熊猫 DataFrame
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 3425100 entries, 2011-12-01 00:00:00 to 2011-12-31 23:59:59
Data columns:
sig_qual 3425100 non-null values
heave 3425100 non-null values
north 3425099 non-null values
west 3425097 non-null values
dtypes: float64(4)
Run Code Online (Sandbox Code Playgroud)
我选择使用的子集,然后DataFrame将其.ix[start_datetime:end_datetime]传递给peakdetect函数,该函数返回两个单独列表中的局部最大值和最小值的索引和值.我提取了最大值的索引位置,并使用DataFrame.index我获得的Pandas TimeStamps列表.
然后我尝试通过传递TimeStamps列表来提取大型DataFrame的相关子集,.ix[]但它似乎总是返回一个空的DataFrame.我可以循环遍历TimeStamps列表并从中获取相关的行,DataFrame但这是一个漫长的过程,我认为ix[]应该接受根据文档的值列表?
(虽然我看到,熊猫0.7的示例使用numpy.ndarray的numpy.datetime64)
更新: 下面选择了一个8秒的DataFrame子集,#lines显示了一些值:
y = raw_disp['heave'].ix[datetime(2011,12,30,0,0,0):datetime(2011,12,30,0,0,8)]
#csv representation of y time-series
2011-12-30 00:00:00,-310.0
2011-12-30 00:00:01,-238.0
2011-12-30 00:00:01.500000,-114.0
2011-12-30 00:00:02.500000,60.0
2011-12-30 00:00:03,185.0 …Run Code Online (Sandbox Code Playgroud) 我有一个数据集,格式为
频率,方向,归一化功率谱密度,扩展,偏度,峰度
我可以使用scipy中偏斜正态分布中的顶部答案中的代码来可视化特定记录的分布,但是我不确定如何将峰度值应用于分布?
from scipy import linspace
from scipy import pi,sqrt,exp
from scipy.special import erf
from pylab import plot,show
def pdf(factor, x):
return (100*factor)/sqrt(2*pi) * exp(-x**2/2)
def cdf(x):
return (1 + erf(x/sqrt(2))) / 2
def skew(x,e=0,w=1,a=0, norm_psd=1):
t = (x-e) / w
return 2 / w * pdf(norm_psd, t) * cdf(a*t)
n = 540
e = 341.9 # direction
w = 59.3 # spread
a = 3.3 # skew
k = 4.27 # kurtosis …Run Code Online (Sandbox Code Playgroud) 如果你有一只熊猫DataFrame({'a':[1,2,3,4,5,6,7,8,9]}),有一种简单的方法可以将它分成3组或任意数字吗?
我知道这可以通过添加一个包含允许分组的值的额外列来完成,例如,您可以将上面的DataFrame连接到[1,1,1,2,2,2,3,3,3]添加的列并将其分组.但似乎没有必要为此操作添加额外的列.
此外,我可以创建一个索引数组np.linspace(0,9,4)并使用它们作为DataFrame.ix []的参数循环数组值,但对于大型DataFrame来说似乎并不快.
我错过了一个更简单的方法吗?
== ==解决方案
从下面我的首选解决方案的答案是使用numpy.array_split(如果一个不平等分工不同numpy.split使它不会引发异常),你也可以通过索引数组来分割上,而不是产生的数件想要的.使用下面的行,您可以将DataFrame(df)拆分为x行的较小DataFrame
split_df = np.array_split(df, np.arange(0, len(df),x))
Run Code Online (Sandbox Code Playgroud)
split_df是一个列表,其中第一个对象是空的numpy数组,以下对象是拆分的DataFrame.