pandas 如何替换csv文件中一列中最高的10个值?

neekobn8  于 2022-12-17  发布在  其他
关注(0)|答案(2)|浏览(136)

数据集:https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv
编辑:使用@Maow建议的变更更新代码。
我目前正在做一个项目,需要我分析葡萄酒的数据。我在csv文件的每一列都发现了一些极端的异常值。简而言之,我决定每一列的最高10个值必须用该列的中值替换。我在一篇文章的帮助下尝试了以下方法(Pandas Replace certain values in each column),我修改了它,如下所示,但不幸的是,这是我第一次使用python,我不知道是什么导致了这个错误。

import pandas as pd
import numpy as np
df = pd.read_csv('C:/Users/hello/Downloads/winequality-red-ori.csv')

 def cut(column):
     condition = column > np.percentile(column,99.26470588) //Top 10 rows out of 1360 rows          
     replacewith = np.median(column) //replace with median
     np.select(condition.values.reshape(-1, 1), column.values, replacewith) //input changes

df.set_index(["citric acid", "quality"], inplace=True) //exclude citric acid and quality
df = df.apply(lambda x: cut(x)).reset_index()
df.to_csv('C:/Users/hello/Downloads/new.csv')

我已经尝试研究是什么原因造成的错误,包括在csv文件中的缺失值,但我没有。我也不确定如果上面的代码将帮助我实现我的目标,即使没有这个错误。任何帮助表示感谢。

mftmpeh8

mftmpeh81#

出现此错误是因为您使用np.select错误。它需要条件数组、选择数组和默认值,顺序为。
它可以和

np.select(condition.values.reshape(-1, 1), column.values, replacewith)

1.你在panda对象上使用了一个numpy函数。这可能会起作用,但是访问底层的np.array是一个很好的习惯。
1.另外,np.select并没有做你认为它做的事情,它的目的是根据条件列表中的第一个匹配项从数组中选择一个元素,所以你基本上选择了属于最大的10个元素的第一个值。
最后注意:通过调用set_index两次,基本上可以使citric acid再次成为一个值。

df.set_index(["citric acid", "quality"], inplace=True)  # exclude citric acid and quality

编辑:np.select函数需要一个list of bool ndarrays,也就是一个2d的数据结构。如果你看condition,它看起来像这样。

In [35]: condition
Out[35]: array([False, False, False, ..., False, False, False])

.reshape将更改数组的形状。-1是保持行数不变的快捷方式,而1表示您创建了每行只有一个元素的冗余数组。

In [36]: condition.reshape(-1, 1)
Out[36]: 
array([[False],
       [False],
       [False],
       ...,
       [False],
       [False],
       [False]])

这是为了匹配预期签名。

mkshixfv

mkshixfv2#

想出了一个算法:

condition = column > np.percentile(column,99.26470588)         
    replacewith = np.median(column) #replace with median
    return np.where(condition,replacewith,column.values)

相关问题