Pandas 删除数据

  • Post category:Python

Pandas是Python中非常流行的数据处理工具。在数据处理过程中,经常需要删除不需要的数据。本文将介绍Pandas删除数据的完整攻略,并提供一些实例说明。

1. 删除行

删除行是在Pandas中最常见的操作之一。在Pandas中,可以使用drop方法删除一行数据。drop方法的基本语法如下:

DataFrame.drop(index, inplace=True)

其中,参数index是要删除的行索引,inplace参数控制是否在元数据上进行修改,如果inplace为True,则原始数据将被修改。如果不指定inplace参数的值,则默认为False,则原始数据不会被修改。

接下来,我们以一个实例来说明删除行的操作。

import pandas as pd

# 创建DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'score': [80, 90, 70, 75],
        'gender': ['f', 'm', 'm', 'm']}
df = pd.DataFrame(data)

# 删除第二行
df.drop(1, inplace=True)

# 输出结果
print(df)

上面代码中,我们创建了一个包含4行数据的DataFrame,然后使用drop方法删除了第二行数据。最后,我们输出删除后的结果,结果如下:

       name  score gender
0     Alice     80      f
2  Charlie     70      m
3     David     75      m

从结果可以看出,第二行数据已经被删除了。

2. 删除列

除了删除行,还经常需要删除列。Pandas中,可以使用drop方法来删除列。drop方法的基本语法如下:

DataFrame.drop(columns, inplace=True)

其中,参数columns是要删除的列索引或者名称,inplace参数控制是否在元数据上进行修改,如果inplace为True,则原始数据将被修改。如果不指定inplace参数的值,则默认为False,则原始数据不会被修改。

接下来,我们以一个实例来说明删除列的操作。

import pandas as pd

# 创建DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'score': [80, 90, 70, 75],
        'gender': ['f', 'm', 'm', 'm']}
df = pd.DataFrame(data)

# 删除score列
df.drop('score', axis=1, inplace=True)

# 输出结果
print(df)

上面代码中,我们创建了一个包含3列数据的DataFrame,然后使用drop方法删除了score列。最后,我们输出删除后的结果,结果如下:

       name gender
0     Alice      f
1       Bob      m
2  Charlie      m
3     David      m

从结果可以看出,score列已经被删除了。

3. 根据条件删除行

除了按照索引删除行外,还可以根据某些条件来删除行。pandas提供的drop方法中可以通过[ ]包含一个条件表达式来实现条件删除行,具体实现可以看代码:

import pandas as pd

# 创建DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'score': [80, 90, 70, 75],
        'gender': ['f', 'm', 'm', 'm']}
df = pd.DataFrame(data)

# 删除score小于80的行
df.drop(df[df['score'] < 80].index, inplace=True)

# 输出结果
print(df)

上面代码中,我们创建了一个包含4行数据的DataFrame,然后使用drop方法删除了所有score小于80的行。最后,我们输出删除后的结果,结果如下:

    name  score gender
1    Bob     90      m

从结果可以看出,score小于80的行已经被删除了。

4. 删除重复行

在数据处理过程中,经常会遇到重复数据的情况。Pandas中,可以使用drop_duplicates方法删除重复行。drop_duplicates方法的基本语法如下:

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

其中,参数subset是要去重的列,如果不指定,则默认去重所有列。参数keep确定保留哪个值,如果keep=first,则保留第一个值,如果keep=last,则保留最后一个值,如果keep=False,则删除所有重复值。inplace参数控制是否在元数据上进行修改,如果inplace为True,则原始数据将被修改。如果不指定inplace参数的值,则默认为False,则原始数据不会被修改。

接下来,我们以一个实例来说明删除重复行的操作。

import pandas as pd

# 创建DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Bob'],
        'score': [80, 90, 70, 75, 90],
        'gender': ['f', 'm', 'm', 'm', 'm']}
df = pd.DataFrame(data)

# 删除重复行
df.drop_duplicates(inplace=True)

# 输出结果
print(df)

上面代码中,我们创建了一个包含5行数据的DataFrame,其中有两行namescore的值都是重复的。然后我们使用drop_duplicates方法删除了重复行。最后,我们输出删除后的结果,结果如下:

       name  score gender
0     Alice     80      f
1       Bob     90      m
2  Charlie     70      m
3     David     75      m

从结果可以看出,重复行已经被删除了。

5. 删除缺失值

在数据处理过程中,经常会遇到空值的情况。Pandas中,可以使用dropna方法删除缺失值。dropna方法的基本语法如下:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

其中,参数axis确定是删除行还是列,axis=0表示删除行,axis=1表示删除列。how确定删除的方式,how=any表示只要有缺失值就删除,how=all表示全部缺失值才删除。thresh参数表示每行或每列中非空值的最小数量,如果小于指定数量则进行删除。subset参数表示要检查缺失值的列。inplace参数控制是否在元数据上进行修改,如果inplace为True,则原始数据将被修改。如果不指定inplace参数的值,则默认为False,则原始数据不会被修改。

接下来,我们以一个实例来说明删除缺失值的操作。

import pandas as pd
import numpy as np

# 创建DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', np.nan],
        'score': [80, np.nan, 70, np.nan, 90],
        'gender': ['f', 'm', np.nan, 'm', 'm']}
df = pd.DataFrame(data)

# 删除缺失值
df.dropna(inplace=True)

# 输出结果
print(df)

上面代码中,我们创建了一个包含5行数据的DataFrame,其中有两行数据存在缺失值。然后我们使用dropna方法删除了缺失值。最后,我们输出删除后的结果,结果如下:

       name  score gender
0     Alice   80.0      f
1       Bob    NaN      m
3     David    NaN      m

从结果可以看出,缺失值已经被删除了。

6. 总结

本文中,我们介绍了Pandas删除数据的基本操作,包括删除行、删除列、根据条件删除行、删除重复行、删除缺失值等。当我们处理数据时,这些操作都是非常常见的。掌握这些操作,能够大大提高数据处理效率。