dataframe删除数据的方法

(1)删除数据

# 删除数据 DataFrame.drop()
import pandas as pd
 
df = pd.DataFrame([['x','x',1],['x','x',1],['z','x',2]], columns = ['A','B','C'])

(2)直接删除指定的行或列

ret = df.drop(
    labels=['group', 'age'],  # 要删除的行或者列的名称列表
    axis=1,  
# 删除的是列 axis=1
# 删除的是行 axis = 0
    inplace=False,  
# 如果为True,直接删除,对原df进行操作;
# 如果为False,返回一个结果,不对原df操作
)
print('df:\n', df)
print('ret:\n', ret)

df.drop(
    labels=['stu0', 'stu1'],
    axis=0,
    inplace=True
)
print('df:\n', df)

(3) 根据条件删除行或列

1.删除符合条件的数据对象

# 删除 group为 1
msk = df['group'] == 1
print('msk:\n', msk)
print("*"*20)

# 获取满足条件的索引
drop_labels = df.loc[msk, :].index
print('drop_labels:\n', drop_labels)
print("*"*20)

# 删除
df.drop(
    labels=drop_labels,
    axis=0,
    inplace=True
)
print('df:\n', df)


# 删除满足多个条件所在的行
df_clear = df.drop(df[(df['x']<0.01) | (df['x']>10)].index) #删除x小于0.01或大于10的行

2.保留不符合条件的数据对象

# 要删除 group 1 ---->保留非 group 1 
msk = df['group'] != 1

# 取出非group 1 成员
df = df.loc[msk, :]
print('df:\n', df)

(4)数据清洗

1、删除重复值

#drop_duplicates()    
#把数据结构中行相同的数据去除(保留其中的一行)
newDF=df.drop_duplicates()
newDF

2、缺失值处理

# dropna() 去除数据结构中值为空的数据行
newDF=df.dropna()
newDF
# df.fillna() 用其他数值替代NaN
df = read_excel('e://rz2.xlsx')
df.fillna('?')
#df.fillna(method=‘pad’) 用前一个数据值替代NaN
df = read_excel('e://rz2.xlsx')
df.fillna(method='pad')        
#df.fillna(method=‘bfill’) 用后一个数据值替代NaN
df = read_excel('e://rz2.xlsx')
df.fillna(method='bfill')
#df.fillna(df.mean()) 用平均数或者其他描述性统计量来代替NaN
df = read_excel('e://rz2_0.xlsx')
df
df.fillna(df.mean())
#df.fillna(df.mean()[math: physical]) 可以选择列进行缺失值的处理
df = read_excel('e://rz2_0.xlsx')
df.fillna(df.mean()['math':'physical'])
#strip():清除字符型数据左右(首尾)指定的字符,默认为空格,中间的不清除
df = read_excel('e://rz2.xlsx')
newDF=df['IP'].str.strip()    #因为IP是一个对象,所以先转为str。
newDF

3、特定值替换:replace(‘缺考’, 0)

df11 = df11.replace(np.nan,'[正常]')
df11 = df11.replace('none',np.nan)
df11 = df11.replace(' ― ',np.nan)

你可能感兴趣的:(python,pandas,数据分析)