我正在处理我的第一个机器学习问题,我正在努力清理数据集中的分类特征。我的目标是建立一个攀岩推荐系统。你知道吗
问题1:
我有三个相关的栏目有错误的信息:
现在的样子:
我希望它看起来像:
如果按位置名称分组,则有不同的位置标识号和与该名称关联的国家/地区。然而,每一个差异都有一个明显的胜利者/明显的多数。我有一个200万个条目的数据集,给定位置名称的位置id和位置国家的模式是压倒性的,指向一个答案(例如:clear\u creek的“300”和“USA”)。你知道吗
使用pandas/python,如何按位置名称对数据集进行分组,根据该位置名称计算位置id和位置country的模式,然后用这些基于位置名称的模式计算替换整个id和country列以清理数据?你知道吗
我已经玩过groupby,replace,duplicated,但是我认为最终我需要创建一个函数来完成这个任务,我真的不知道从哪里开始。(我为我的编码幼稚提前道歉)我知道必须有一个解决方案,我只需要被指向正确的方向。你知道吗
问题2:
另外,有人建议在我的位置\姓名类别(42012/200万)和位置\国家(46890/200万)列中填写NaN值吗?作为未知值保存是最好的吗?我觉得基于频率填充这些特性会对我的数据集造成可怕的偏见。你知道吗
data = {'index': [1,2,3,4,5,6,7,8,9],
'location_name': ['kalaymous', 'kalaymous', 'kalaymous', 'kalaymous',
'clear_creek', 'clear_creek', 'clear_creek',
'clear_creek', 'clear_creek'],
'location_id': [100,100,0,100,300,625,300,300,300],
'location_country': ['GRC', 'GRC', 'ESP', 'GRC', 'USA', 'IRE',
'USA', 'USA', 'USA']}
df = pd.DataFrame.from_dict(data)
***寻找它的回报:
improved_data = {'index': [1,2,3,4,5,6,7,8,9],
'location_name': ['kalaymous', 'kalaymous', 'kalaymous', 'kalaymous',
'clear_creek', 'clear_creek', 'clear_creek',
'clear_creek', 'clear_creek'],
'location_id': [100,100,100,100,300,300,300,300,300],
'location_country': ['GRC', 'GRC', 'GRC', 'GRC', 'USA', 'USA',
'USA', 'USA', 'USA']}
new_df = pd.DataFrame.from_dict(improved_data)
我们可以将^{} 与^{} 结合使用,并使用^{} 将其转换回您的数据帧:
正如Erfan提到的,对第一个问题的预期结果有一个看法是很有帮助的。你知道吗
对于第二个,pandas有一个fillna方法。可以使用此方法填充NaN值。例如,要用“UNKNOWN\u LOCATION”填充值,可以执行以下操作:
请参阅第一个问题的潜在解决方案:
您可以通过使用^{} 计算模式来使用
transform
:相关问题 更多 >
编程相关推荐