回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在处理我的第一个机器学习问题,我正在努力清理数据集中的分类特征。我的目标是建立一个攀岩推荐系统。你知道吗</p>
<p><strong>问题1:</strong></p>
<p>我有三个相关的栏目有错误的信息:</p>
<p>现在的样子:
<img src="https://i.stack.imgur.com/8xFrn.png" alt="Example Table"/></p>
<p>我希望它看起来像:
<img src="https://i.stack.imgur.com/MjdZ7.png" alt="Would like my table to look like this..."/></p>
<p>如果按位置名称分组,则有不同的位置标识号和与该名称关联的国家/地区。然而,每一个差异都有一个明显的胜利者/明显的多数。我有一个200万个条目的数据集,给定位置名称的位置id和位置国家的模式是压倒性的,指向一个答案(例如:clear\u creek的“300”和“USA”)。你知道吗</p>
<p>使用pandas/python,如何按位置名称对数据集进行分组,根据该位置名称计算位置id和位置country的模式,然后用这些基于位置名称的模式计算替换整个id和country列以清理数据?你知道吗</p>
<p>我已经玩过groupby,replace,duplicated,但是我认为最终我需要创建一个函数来完成这个任务,我真的不知道从哪里开始。(我为我的编码幼稚提前道歉)我知道必须有一个解决方案,我只需要被指向正确的方向。你知道吗</p>
<p><strong>问题2:</strong></p>
<p>另外,有人建议在我的位置\姓名类别(42012/200万)和位置\国家(46890/200万)列中填写NaN值吗?作为未知值保存是最好的吗?我觉得基于频率填充这些特性会对我的数据集造成可怕的偏见。你知道吗</p>
<pre><code>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)
</code></pre>
<p>***寻找它的回报:</p>
<pre><code>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)
</code></pre>