2024-04-26 09:54:42 发布
网友
如何在python中使用pd.qut创建新的Bin/Bucket变量?
对于有经验的用户来说,这似乎是最基本的,但我对此并不十分清楚,而且在stack overflow/google上搜索也令人惊讶地不直观。一些彻底的搜索得到了这个(Assignment of qcut as new column),但它没有完全回答我的问题,因为它没有采取最后一步,把所有东西都放进垃圾箱(即1,2,…)。
在Pandas 0.15.0或更高版本中,^{}将返回一个序列,如果输入是一个序列(在您的例子中是这样的)或者如果labels=False,则返回的不是一个类别。如果您设置了labels=False,那么qcut将返回一个以容器的整数指示器为值的序列。
labels=False
qcut
为了将来证明你的代码,你可以使用
data3['bins_spd'] = pd.qcut(data3['spd_pct'], 5, labels=False)
或者,向pd.qcut传递一个NumPy数组,这样就可以得到一个Categorical作为返回值。 注意分类属性^{} is deprecated。使用codes代替:
pd.qcut
codes
data3['bins_spd'] = pd.qcut(data3['spd_pct'].values, 5).codes
编辑:以下答案仅对小于0.15.0的熊猫版本有效。如果您正在运行熊猫15或更高版本,请参见:
感谢@unutbu指出这一点。:)
假设您有一些数据要装箱,在我的例子中,选项是展开的,并且您希望创建一个新变量,其中包含与每个观察值对应的存储桶。上面提到的链接可以通过以下方式完成此操作:
print pd.qcut(data3['spd_pct'], 40) (0.087, 0.146] (0.0548, 0.087] (0.146, 0.5] (0.146, 0.5] (0.087, 0.146] (0.0548, 0.087] (0.5, 2]
它给出了对应于每个观察的bin端点。但是,如果您想要每个观测对应的箱子编号,则可以执行以下操作:
print pd.qcut(data3['spd_pct'],5).labels [2 1 3 ..., 0 1 4]
如果您想创建一个只包含箱号的新变量,那么将其放在一起就足够了:
data3['bins_spd']=pd.qcut(data3['spd_pct'],5).labels print data3.head() secid date symbol symbol_flag exdate last_date cp_flag 0 5005 1/2/1997 099F2.37 0 1/18/1997 NaN P 1 5005 1/2/1997 09B0B.1B 0 2/22/1997 12/3/1996 P 2 5005 1/2/1997 09B7C.2F 0 2/22/1997 12/11/1996 P 3 5005 1/2/1997 09EE6.6E 0 1/18/1997 12/27/1996 C 4 5005 1/2/1997 09F2F.CE 0 8/16/1997 NaN P strike_price best_bid best_offer ... close volume_y return 0 7500 2.875 3.2500 ... 4.5 99200 0.074627 1 10000 5.375 5.7500 ... 4.5 99200 0.074627 2 5000 0.625 0.8750 ... 4.5 99200 0.074627 3 5000 0.125 0.1875 ... 4.5 99200 0.074627 4 7500 3.000 3.3750 ... 4.5 99200 0.074627 cfadj_y open cfret shrout mid spd_pct bins_spd 0 1 4.5 1 57735 3.06250 0.122449 2 1 1 4.5 1 57735 5.56250 0.067416 1 2 1 4.5 1 57735 0.75000 0.333333 3 3 1 4.5 1 57735 0.15625 0.400000 3 4 1 4.5 1 57735 3.18750 0.117647 2 [5 rows x 35 columns]
希望这能帮助别人。至少现在应该更容易搜索。:)
在Pandas 0.15.0或更高版本中,^{} 将返回一个序列,如果输入是一个序列(在您的例子中是这样的)或者如果
labels=False
,则返回的不是一个类别。如果您设置了labels=False
,那么qcut
将返回一个以容器的整数指示器为值的序列。为了将来证明你的代码,你可以使用
或者,向} is deprecated 。使用
pd.qcut
传递一个NumPy数组,这样就可以得到一个Categorical作为返回值。 注意分类属性^{codes
代替:编辑:以下答案仅对小于0.15.0的熊猫版本有效。如果您正在运行熊猫15或更高版本,请参见:
感谢@unutbu指出这一点。:)
假设您有一些数据要装箱,在我的例子中,选项是展开的,并且您希望创建一个新变量,其中包含与每个观察值对应的存储桶。上面提到的链接可以通过以下方式完成此操作:
它给出了对应于每个观察的bin端点。但是,如果您想要每个观测对应的箱子编号,则可以执行以下操作:
如果您想创建一个只包含箱号的新变量,那么将其放在一起就足够了:
希望这能帮助别人。至少现在应该更容易搜索。:)
相关问题 更多 >
编程相关推荐