利用python进行数据分析学习笔记1(数据清洗和准备)

本文介绍了使用Python进行数据分析时的数据清洗和准备技巧,包括处理缺失数据(dropna、fillna等)、数据转换(如移除重复数据、利用映射进行转换、替换值)、离散化和面元划分、异常值检测与过滤,以及字符串和正则表达式的操作。通过实例展示了pandas库在数据处理中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理缺失数据

创建一个含缺失值的Series

string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])
string_data.isnull()

通过isnull方法返回一个布尔型Series,缺失值显示为True。


通过索引可以将非缺失值设置为缺失值

string_data[0] = None

处理缺失数据的函数

dropna,除去缺失数据

fillna,用指定值填充缺失值

isnull,返回布尔型对象,缺失值显示True,其他显示False

notnull,isnull的否定式


滤除缺失数据

from numpy import nan as NA    #从numpy模块中可以引入缺失值。
data = pd.Series([1,NA,3.5,NA,7])    #创建含缺失值的Series
data.dropna()    #去除Series中的缺失值

data[data.notnull()]    #与data.dropna()等价

对DataFrame对象,dropna方法默认丢弃所有含有缺失值的行。

data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
                    [NA, NA, NA], [NA, 6.5, 3.]])
cleaned = data.dropna()

传入参数how='all'则只除去整行都是NA的行。

cleaned = data.dropna(how='all')

传入参数axis=1或者axis='columns'则会改为逐列删除。

data = pd.DataFrame([[1., NA, 3.], [1., NA, NA],
                    [2, NA, NA], [3, NA, 3.]])
cleaned = data.dropna(axis=1)
cleaned2 = data.dropna(axis=1,how='all')


dropna的thresh参数,如设置thresh=2,表示如果某行至少有2个非缺失值时将该行保留下来

df = pd.DataFrame(np.random.randn(7,3))    #创建一个7行3列的DataFrame
df.iloc[:4,1] = NA    #将数据框列1的前四行设置为缺失值
df.iloc[:2,2] = NA    #将数据框列2的前两行设置为缺失值

df.dropna(thresh=2)   #行数据有两个及以上非缺失值时将保留该行

df.dropna(thresh=3)   #行数据有三个及以上非缺失值时将保留该行


填充缺失数据

Series和DataFrame都有fillna方法可以填充缺失数据

df.fillna(0)

fillna()方法可以传入字典,实现对不同列的缺失值用不同的值进行填充

df.fillna({1:0.5,2:0})    #列1的缺失值用0.5来填充,列2的缺失值用0来填充

若传入inplace=True参数,则可以实现就地修改(慎用)

df.fillna(0,inplace=True)

fillna传入method='ffill'参数,缺失值会以上方非缺失值为参数进行填充。

df = pd.DataFrame(np.random.randn(6, 3))
df.iloc[2:, 1] = NA
df.iloc[4:, 2] = NA
df.fillna(method='ffill')

传入limit参数可以限制填充缺失值数量。

df.fillna(method='ffill',limit=2)    #限制一列只能填充两个缺失值

可以利用fillna实现许多别的功能,如用平均值来填充缺失值。

data = pd.Series([1,NA,3.5,NA,7])
data.fillna(data.mean())

fillna的参数:value、method、axis、inplace、limit

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值