- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有一个数据框:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.normal(0,1,[100,50]))
看起来像:
0 1 2 3 4 5 6 \
0 -0.141305 2.158252 1.006520 -1.004185 -0.213160 0.648904 -0.089369
1 -1.373167 -1.100959 1.007023 0.699591 -1.667834 1.422182 0.940912
2 -0.212014 1.967436 0.401133 -0.996298 -1.696490 -0.857453 -0.686584
3 -0.351902 0.413816 -0.494869 0.448740 0.146897 -0.798095 -0.546489
4 0.416376 -0.689577 -0.967050 -1.667480 1.223966 -1.382113 -0.812368
7 8 9 ... 40 41 42 \
0 0.282299 0.627085 1.111637 ... 1.354044 0.335316 -1.817465
1 -0.540302 -1.276811 -0.077210 ... 0.556072 0.642445 0.313477
2 0.601571 -0.989826 0.942893 ... 0.803984 0.286897 -0.507413
3 -0.277153 -1.068749 1.720561 ... 0.317774 0.744266 -1.671273
4 0.391501 0.703358 0.972910 ... -0.251225 -0.918734 0.226089
43 44 45 46 47 48 49
0 -2.088606 -1.297459 -1.135577 -0.579162 -0.538286 1.223049 -0.577341
1 2.307270 0.381122 0.970177 0.011552 -0.704012 -1.759955 0.649379
2 0.139226 1.287651 0.335977 0.832819 -0.701925 1.656187 0.218177
3 0.621638 -2.893360 -1.349287 2.160106 0.977205 -0.550635 -0.473224
4 -0.646419 2.197215 -0.483294 -1.141479 0.706850 2.686787 0.054517
以下代码可以满足我的需要,但效率非常低:
lbound_ = float(pd.DataFrame(np.ravel(df.iloc[0:10,:].values)).quantile(0.))
ubound_ = float(pd.DataFrame(np.ravel(df.iloc[0:10,:].values)).quantile(0.1))
df[(df>=lbound_) & (df<ubound_)]
我想根据在任何列中观察到的任何数据,在每个时间点对我的数据进行十分位数/分位数存储。
以上仅针对第一个存储桶[0,.1)
执行0:10
。
一个非常缓慢的实现看起来像:
def get_quantile(df,q):
return np.percentile(df.ravel(),q)
df.expanding().apply(get_quantile,args=(.1,))
我如何概括这一点并有效地完成它?
这里有点难住,希望得到指导。
谢谢
最佳答案
对于任何偶然发现这个问题的人,以下是我的回答。可能有更快的解决方案,所以如果您有更好的想法,请发布。
谢谢
def standardize_block(df_standardize_arg):
df_standardize_arg = df_standardize_arg.copy()
ix_ = df_standardize_arg.index
prior_data = np.array([])
output = []
for i in range(0, len(ix_)):
data = np.array(df_standardize_arg.loc[ix_[i]].values.ravel())
data = data[~np.isnan(data)]
prior_data = np.concatenate((prior_data, data), axis=0)
#this date piece may be specific to my use case.
output.append({'date': ix_[i],
'mean': prior_data.mean(),
'std': prior_data.std()})
df_output = pd.DataFrame(output)
del df_standardize_arg #my data is quite large, so I delete it here.
df_output.index = df_output['date']
del df_output['date']
return df_output.copy()
关于python - 基于所有列扩展窗口的Pandas qcut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52600059/
假设我有一个数据框: import numpy as np import pandas as pd df = pd.DataFrame(np.random.normal(0,1,[100,50]))
我想将 pandas qcut 应用于滚动窗口。我不知道该怎么做...想法是在过去 20 天中,找到属于上四分位数的值,找到上四分位数中的值的平均值。并返回该滚动时间序列的平均值。 如果我有 s =
这是一个简单的数据样本系列: sample Out[2]: 0 0.047515 1 0.026392 2 0.024652 3 0.022854 4 0.020397
我创建了一个分类变量,我想为其他变量的特定值创建一个新类别 我有一个带有变量 Score 的数据框,其值介于 0-100 之间。我做了十分之一,但我想为特定值创建一个新类别 df['Score_pr'
考虑以下数据: s = pd.Series([1, 1, 1, 2]) pd.qcut(s, 2, labels=False) 我想要等概率组,即 [0, 0, 1, 1]。相反,qcut 可以引发异
在此处的 Pandas 笔记本上 http://nbviewer.ipython.org/urls/raw.github.com/carljv/Will_it_Python/master/ARM/ch
我有一个数据框,我可以从中选择一个列(系列),如下所示: df: value_rank 275488 90 275490 35 275491
Pandas docs关于 qcut 函数有这样的说法: Discretize variable into equal-sized buckets based on rank or based on
我使用 pandas.qcut 将数据分为 5 组,并希望根据 qcut 的最小和最大分数来标记每个组。 例如,我尝试使用数据框列中的“年龄”数据。 df['age group'] = pd.qcut
我正在慢慢地从 R 转向 python + pandas,我面临着一个我无法解决的问题...... 我需要离散化一列中的值,方法是将它们分配给 bin,并将具有这些 bin 名称的列添加到原始 Dat
假设我有一个列表: a = [3, 5, 1, 1, 3, 2, 4, 1, 6, 4, 8] 和一个子列表: b = [5, 2, 6, 8] 我想通过 pd.qcut(a,2) 获取 bin 并计
有没有一种方法可以构造 Pandas groupby 和 qcut 命令以返回具有嵌套图 block 的一列?具体来说,假设我有 2 组数据,我希望将 qcut 应用于每组,然后将输出返回到一列。这类
我的问题和上一个一样: Binning with zero values in pandas 但是,我仍然想在分位数中包含 0 值。有没有办法做到这一点?换句话说,如果我有 600 个值,其中 50%
有两个 ndarray: import pandas as pd import numpy as np a = np.arange(0,100, 10) b = np.random.random_in
我对 groupby 结果应用 qcut,以下是我的问题的简化版本: a = pd.DataFrame({'A':[1,1,1,1,2,2,2,2], 'B': [
我正在做 Recency-Frequency-Monetary 分析,虽然我有一个在 Python 中工作的模型,但由于生产代码主要是 PHP(Oracle 12c fwiw 或者也可以在 postg
我在名为example 的对象的列中有很多分数。我想将这些分数分成十分位数,并为每一行分配相应的十分位数间隔。我尝试了以下方法: import random import pandas as pd r
更新:从版本 0.20.0 开始,pandas cut/qcut 确实可以处理日期字段。参见 What's New了解更多。 pd.cut and pd.qcut now support dateti
我正在使用 pandas qcut 将一些数据分成 20 个 bin,作为数据准备的一部分,用于训练二进制分类模型,如下所示: data['VAR_BIN'] = pd.qcut(cc_data[va
我有一个包含 499 条记录的埃博拉数据集。我试图根据概率(概率变量)找到每个五分位数中的观察次数。观察次数应分为 0-20%、20-40% 等类别。我认为这样做的代码是, test = pd.qcu
我是一名优秀的程序员,十分优秀!