需要解释pandas.drop是如何在这里工作的吗

需要解释pandas.drop是如何在这里工作的吗,pandas,Pandas,我有一个数据帧,比如说xyz。我已经编写了代码来找出dataframe中每列拥有的空值的百分比。我的代码如下: round(100*(xyz.isnull().sum()/len(xyz.index)), 2) 假设我得到了以下结果: abc 26.63 def 36.58 ghi 78.46 我想删除ghi列,因为它有70%以上的空值 我使用以下代码实现了它: xyz = xyz.drop(xyz.loc[

我有一个数据帧,比如说xyz。我已经编写了代码来找出dataframe中每列拥有的空值的百分比。我的代码如下:

round(100*(xyz.isnull().sum()/len(xyz.index)), 2)
假设我得到了以下结果:

abc               26.63
def               36.58
ghi               78.46
我想删除ghi列,因为它有70%以上的空值

我使用以下代码实现了它:

xyz = xyz.drop(xyz.loc[:,round(100*(xyz.isnull().sum()/len(xyz.index)), 2)>70].columns, 1)

但是,我不明白这段代码是如何工作的,有人能解释一下吗?

如果您的代码很难理解,您可以通过thresh检查dropna,因为pandas已经介绍了这个案例

df=df.dropna(axis=1,thresh=round(len(df)*0.3))

如果您的代码很难理解,您可以用thresh检查dropna,因为pandas已经涵盖了这个案例

df=df.dropna(axis=1,thresh=round(len(df)*0.3))

代码正在执行以下操作:

xyz.drop( [...], 1)
按行或列删除给定轴的指定元素。在这个特殊的例子中,df.drop…,1意味着您正在按轴1,即列进行放置

xyz.loc[:, ... ].columns
将返回一个列表,其中包含由切片条件产生的列名

round(100*(xyz.isnull().sum()/len(xyz.index)), 2)>70
此指令计算空值的数量,将其相加并按行数进行规范化,有效地计算每列中nan的百分比。然后,将数量四舍五入到只有2个小数点位置,最后返回True,即nan的数量超过70%。因此,可以得到列和真/假数组之间的映射

将所有内容放在一起:首先生成一个布尔数组,标记哪些列的nan超过70%,然后使用.loc使用布尔索引仅查看要删除nan%>70%的列,然后使用.columns恢复此类列的名称,然后由.drop指令使用


希望这能把事情弄清楚

代码正在执行以下操作:

xyz.drop( [...], 1)
按行或列删除给定轴的指定元素。在这个特殊的例子中,df.drop…,1意味着您正在按轴1,即列进行放置

xyz.loc[:, ... ].columns
将返回一个列表,其中包含由切片条件产生的列名

round(100*(xyz.isnull().sum()/len(xyz.index)), 2)>70
此指令计算空值的数量,将其相加并按行数进行规范化,有效地计算每列中nan的百分比。然后,将数量四舍五入到只有2个小数点位置,最后返回True,即nan的数量超过70%。因此,可以得到列和真/假数组之间的映射

将所有内容放在一起:首先生成一个布尔数组,标记哪些列的nan超过70%,然后使用.loc使用布尔索引仅查看要删除nan%>70%的列,然后使用.columns恢复此类列的名称,然后由.drop指令使用


希望这能把事情弄清楚

ghi是一个列名,26.63是该列中空值的百分比。明白了,接下来的问题是:是否要从数据帧中删除该列?如果是这样的话,你可以直接做xyz=xyz.删除'ghi',axis=1如果你想动态地选择列,那么看看WeNYoBen的答案ghi是一个列名,26.63是该列中空值的百分比明白了吗,接下来的问题是:你想从数据框中删除该列吗?如果是这样,您只需执行xyz=xyz。如果您想动态选择列,请删除'ghi',axis=1,然后查看WeNYoBen的答案