Python 或 Pandas 的分箱或分组技术是什么
What binning or group technique is this of Python or Pandas
我是 Pandas 的新手,我知道处理数据通常是一种很好的做法,在其中创建虚拟变量甚至在 DataFrame 中创建新列。
但是我遇到了这些代码行并且无法理解它的作用。目的是将1个分类列的数据按年龄分组为3列。
ratings_df.loc[(ratings_df['age'] <= 40), 'age_group'] = '40 years and younger'
ratings_df.loc[(ratings_df['age'] > 40) & (ratings_df['age'] < 57), 'age_group'] = 'between 40 and 57 years'
ratings_df.loc[(ratings_df['age'] >= 57), 'age_group'] = '57 years and older'
它不会按给定名称创建新列或新数据框。但它后来被用于在具有另一个自变量的回归模型中训练数据 'beauty'
lm = ols('beauty ~ age_group', data = ratings_df).fit()
它有什么作用?
这样查看代码行可能更容易:
condition = (ratings_df['age'] <= 40)
column_name = 'age_group'
new_value = '40 years and younger'
ratings_df.loc[condition, column_name] = new_value
简而言之,名为 age_group
的列为 ratings_df['age'] <= 40
为真的每一行设置了一个新值 "40 years and younger"
。
除了@kd88 的好回答,你注意到“没有创建新列”,如果你分阶段查看代码,你可以看到 loc
在满足条件时设置一个值并设置NaN
如果为假,则分 3 个阶段构建新列:
In [98]: ratings_df = pd.DataFrame({'age': [20, 40, 41, 50, 57]})
In [99]: ratings_df.loc[(ratings_df['age'] <= 40), 'age_group'] = '40 years and younger'
In [100]: ratings_df
Out[100]:
age age_group
0 20 40 years and younger
1 40 40 years and younger
2 41 NaN
3 50 NaN
4 57 NaN
根据您要对数据执行的操作,您可以使用 query
将 view 放入行的子集(但不要尝试修改这些否则你会得到一个错误):
In [101]: ratings_df.query('age <= 40')
Out[101]:
age age_group
0 20 40 years and younger
1 40 40 years and younger
我是 Pandas 的新手,我知道处理数据通常是一种很好的做法,在其中创建虚拟变量甚至在 DataFrame 中创建新列。 但是我遇到了这些代码行并且无法理解它的作用。目的是将1个分类列的数据按年龄分组为3列。
ratings_df.loc[(ratings_df['age'] <= 40), 'age_group'] = '40 years and younger'
ratings_df.loc[(ratings_df['age'] > 40) & (ratings_df['age'] < 57), 'age_group'] = 'between 40 and 57 years'
ratings_df.loc[(ratings_df['age'] >= 57), 'age_group'] = '57 years and older'
它不会按给定名称创建新列或新数据框。但它后来被用于在具有另一个自变量的回归模型中训练数据 'beauty'
lm = ols('beauty ~ age_group', data = ratings_df).fit()
它有什么作用?
这样查看代码行可能更容易:
condition = (ratings_df['age'] <= 40)
column_name = 'age_group'
new_value = '40 years and younger'
ratings_df.loc[condition, column_name] = new_value
简而言之,名为 age_group
的列为 ratings_df['age'] <= 40
为真的每一行设置了一个新值 "40 years and younger"
。
除了@kd88 的好回答,你注意到“没有创建新列”,如果你分阶段查看代码,你可以看到 loc
在满足条件时设置一个值并设置NaN
如果为假,则分 3 个阶段构建新列:
In [98]: ratings_df = pd.DataFrame({'age': [20, 40, 41, 50, 57]})
In [99]: ratings_df.loc[(ratings_df['age'] <= 40), 'age_group'] = '40 years and younger'
In [100]: ratings_df
Out[100]:
age age_group
0 20 40 years and younger
1 40 40 years and younger
2 41 NaN
3 50 NaN
4 57 NaN
根据您要对数据执行的操作,您可以使用 query
将 view 放入行的子集(但不要尝试修改这些否则你会得到一个错误):
In [101]: ratings_df.query('age <= 40')
Out[101]:
age age_group
0 20 40 years and younger
1 40 40 years and younger