pandas 控制检测与处理

本文详细介绍了如何利用Python的pandas库进行数据质量检测,包括缺失值检查、异常值识别和处理,以及数据类型转换等关键步骤,旨在帮助数据分析师提升数据预处理的效率和准确性。

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

import pandas as pd
import numpy as np


# 缺失值检测
# 加载数据
# data = pd.read_excel('qs.xlsx')
# print(data)
# 利用isnull进行空值判断 -->返回bool df ,如果为True, 就是空值,如果为False,就是真实值
# print(data.isnull())
# 与sum连用,统计每一列空值个数
# print(data.isnull().sum())
# 利用notnull进行空值判断 -->返回bool df ,如果为True, 就是真实值,如果为False,就是空值
# print(data.notnull())
# 与sum连用,统计每一列真实值个数
# print(data.notnull().sum())

# 缺失值处理
# 删除法
# axis = 0 ,删除行
# any 只要行里面有空值,就删除整行
# inplace = True 替换原文本
# all 只有整行整列数据全为空值就删除
# data.dropna(axis=0,how='any',inplace=True)
# print(data)

# 删除法 --》存在NA就删除----》对数据影响较大(慎用)
# 如果某一行或者某一列数据存在大量的缺失值,这个时候就可以使用删除法删除


# 填充法
# 使用fillna进行填充,需要制定填充的内容,inplace是否覆盖原来数据
# 注意填充的数值型数据,可以使用均值,众数,中位数进行填充
# 类别型数据需要使用众数进行填充
# data['门店编号'].fillna('CDNL', inplace=True)
# print(data)

# 填充值必须为单个数值,不可以为序列,众数不唯一,取下标获取单个众数
# data['类别ID'].fillna(data['类别ID'].mode()[0], inplace=True)
# print(data)

# 填充法应用
# 例如:表格中只有少量数据为缺失状态,就可以使用填充法,填充的时候需要注意,填充的结果不能对后续的分析产生不利的影响

# 插值法
# 线性插值法、多项式插值、样条插值
# 线性插值 --》拟合线性方程进行差值
# 多项式差值 --》通过拟合多项式进行差值,通常使用拉格朗日插值,牛顿插值
# 样条插值

# 导入我们的插值模块
from scipy.interpolate import interp1d  # 线性插值模块
from scipy.interpolate import lagrange  # 拉格朗日插值模块
from scipy.interpolate import spline  # 样条插值模块

x = np.array([1, 2, 3, 4, 5, 8, 9])
y1 = np.array([3, 5, 7, 9, 11, 17, 19])
y2 = np.array([2, 8, 18, 32, 50, 128, 162])

# 线性插值
# linear1 = interp1d(x, y1, kind='linear')
# linear2 = interp1d(x, y2, kind='linear')
# print(linear1([6, 7]))  #y1缺失值[13. 15.] --》[13, 15]
# print(linear2([6, 7]))  #y2 缺失值[ 76. 102.] -->[76, 98]

# 拉格朗日插值模块
# la1 = lagrange(x=x, w=y1)
# la2 = lagrange(x=x, w=y2)
# print(la1([6, 7]))  # y1缺失值[13. 15.] --》[13, 15]
# print(la2([6, 7]))  # y2 缺失值[ 76. 102.] -->[76, 98]

# 样条插值
# print(spline(xk=x, yk=y1,xnew=[6,7]))  # y1缺失值[13. 15.] --》[13, 15]
# print(spline(xk=x, yk=y2,xnew=[6,7]))  # y2 缺失值[ 76. 102.] -->[76, 98]

# 线性插值只是在线性关系里面效果较好,在非线性里面效果不好
# 多项式插值、样条插值在非线性、线性里面效果都不错

# 线性关系在现实生活中并不多见,以后遇到的插值方式选择多项式插值、样条插值
# scipy也是一种科学计算库

# NAN -->float类型
# 遇到非np.nan 类型空值 可以替换为np.nan 在进行插值
# date = data.replace('*', np.nan)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值