如何同时使用 pandas/python 对来自多列的数据进行分箱?
How to bin data from multiple column using pandas/python at the same time?
我正在使用一个包含 92 列和 200000 行的数据框。我想对这些列中每一列的数据进行分类和计数,并将其放入一个新的数据框中以供进一步 plotting/analysis.
我正在使用
bins = [-800, -70, -60, -50, -40, -30, -20, -5, 0]
df['Depth.1'].value_counts(bins=bins, sort = False)
成功对数据进行分箱,但一次只能对一列进行分箱。是否可以对数据框中的多列执行此操作并将其放入新的数据框中?
谢谢
您可以使用apply
对每一列执行相同的操作。尝试
new_df = df.apply(lambda x: x.value_counts(bins=bins, sort=False))
举个例子,如果不对所有列进行分箱:
#sample data
df = pd.DataFrame({'a':[3,6,2,7,3],
'b':[2,1,5,8,9],
'c':list('abcde')})
如果您执行上述方法,您将得到一个错误,因为列是字符串类型。所以你可以定义一个列列表并执行:
list_cols = ['a','b'] #only the numerical columns
new_df = df[list_cols].apply(lambda x: x.value_counts(bins=[0,2,5,10], sort=False))
print(new_df)
a b
(-0.001, 2.0] 1 2
(2.0, 5.0] 2 1
(5.0, 10.0] 2 2
我正在使用一个包含 92 列和 200000 行的数据框。我想对这些列中每一列的数据进行分类和计数,并将其放入一个新的数据框中以供进一步 plotting/analysis.
我正在使用
bins = [-800, -70, -60, -50, -40, -30, -20, -5, 0]
df['Depth.1'].value_counts(bins=bins, sort = False)
成功对数据进行分箱,但一次只能对一列进行分箱。是否可以对数据框中的多列执行此操作并将其放入新的数据框中?
谢谢
您可以使用apply
对每一列执行相同的操作。尝试
new_df = df.apply(lambda x: x.value_counts(bins=bins, sort=False))
举个例子,如果不对所有列进行分箱:
#sample data
df = pd.DataFrame({'a':[3,6,2,7,3],
'b':[2,1,5,8,9],
'c':list('abcde')})
如果您执行上述方法,您将得到一个错误,因为列是字符串类型。所以你可以定义一个列列表并执行:
list_cols = ['a','b'] #only the numerical columns
new_df = df[list_cols].apply(lambda x: x.value_counts(bins=[0,2,5,10], sort=False))
print(new_df)
a b
(-0.001, 2.0] 1 2
(2.0, 5.0] 2 1
(5.0, 10.0] 2 2