如何在Pandas中处理空值,包括识别、删除空值,以及如何指定特定列来删除空值。下面详细解释每个代码块的作用和意义:
识别空值
import pandas as pd
missing_values = ["n/a", "na", "--"]
df = pd.read_csv('property-data.csv', na_values=missing_values)
print(df['NUM_BEDROOMS'])
print(df['NUM_BEDROOMS'].isnull())
这段代码首先定义了一个列表missing_values
,包含了应该被视为空值的字符串。然后,使用pd.read_csv()
函数读取CSV文件时,通过na_values
参数指定这些字符串应该被替换为Pandas的空值标记(即NaN
)。这样,当我们使用isnull()
函数检查NUM_BEDROOMS
列时,所有出现的"n/a"、"na"、"--"都会被识别为True
,表示这些位置是空值。
删除包含空值的行
import pandas as pd
df = pd.read_csv('property-data.csv')
new_df = df.dropna()
print(new_df.to_string())
这段代码读取CSV文件到DataFrame df
,然后使用dropna()
函数删除任何包含空值的行,结果存储在新的DataFrame new_df
中。dropna()
默认删除任何包含至少一个空值的行。这个操作不会修改原始的df
DataFrame,因为inplace=False
是默认值。
修改源数据
import pandas as pd
df = pd.read_csv('property-data.csv')
df.dropna(inplace=True)
print(df.to_string())
这段代码与上一个类似,但是通过设置inplace=True
,dropna()
函数会直接在原始的df
DataFrame上进行修改,删除所有包含空值的行。这意味着df
中的数据将被永久改变,不再包含任何空值行。
删除指定列包含空值的行
import pandas as pd
df = pd.read_csv('property-data.csv')
df.dropna(subset=['ST_NUM'], inplace=True)
print(df.to_string())
这段代码展示了如何删除特定列(在这个例子中是ST_NUM
列)包含空值的行。通过subset
参数,我们指定了只考虑ST_NUM
列中的空值。如果这一列中有空值,那么整行将被删除。同样,inplace=True
参数确保了修改直接在原始的df
DataFrame上进行。