4.pandas数据预处理(完)(数据清洗:重复值、异常值、缺失值;标准化、哑变量、离散化、无监督分箱)

笔记说明:本文是我的学习笔记,大部分内容整理自 黄红梅,张良均等.Python数据分析与应用[M].北京:人民邮电出版社,2018:133-163. 还有部分片断知识来自网络搜索补充。

0.数据来源

来源于这本书,黄红梅,张良均等.Python数据分析与应用[M].北京:人民邮电出版社,2018,的第五章附带数据。
CSDN的数据不可以免费共享,至少要一个金币,有能力的就去下载一下数据下载链接CSDN数据。不方便的,在底下头评论留言,留下邮箱号,我看到之后就会把数据发给你,或者你可以在这本书的出版社网站人民邮电出版社教育社区或者“泰迪杯数据挖掘比赛”泰迪杯数瑞思的网站上找这本书的附带资源,都是免费下载的。

0.1说明

这本书吧,第一部分是pandas和数据库MySQL的对接处理.sql数据。一般的公司的话,有专门的做数据分析的小组或者部门的,需要什么数据跟他们提需求让他们获取,拿.csv就好了。所以我就跳过了sql里面的inner join\outer join\主键合并。我的笔记直接是读取csv数据。
喔还有就是,做这行的话,sql是基础技能,一定要会基础的取数!

1.清洗数据

1.1检测与处理重复值

1.1.1记录重复

import pandas as pd
detail=pd.read_csv("D:\\codes\\python\\data\\detail.csv",  
                   index_col=0,encoding='gbk')

#方法一:定义去重函数
def delrep(list1):
    list2=[]
    for i in list1:
        if i in list1:
            if i not in list2:
                list2.append(i)
    return list2

##去重
dishes=list(detail['dishes_name'])
print('去重前菜品总数是:',len(dishes))
dish=delrep(dishes)
print('方法一去重后数据总数是:',len(dish))

#方法二:利用集合唯一性
print('去重前菜品总数为:',len(dishes))
dish_set=set(dishes)
print(len(dish_set))

这两种方法,区别在,set会将数据顺序打乱

#方法三:.drop_duplicates
pd.DataFrame(series).drop_duplicates(self,subset=None,keep='first',  
            inplace=False)
参数名字 说明
subset 接收string或sequence,表示进行去重的列,默认none,全部列
keep 接收string,表示重复时保留第几个数据
keep first:保留第一个;last:最后一个;false:只要有重复就都不保留。默认first
inplace 接收boolean,表示是否在原表上进行操作,默认false
dishes_name=detail['dishes_name'].drop_duplicates()
print(len(dishes_name))

1.1.2特征重复

这里的重复是指,特征之间的相似度=1!所以可以作为特征工程海筛特征的一步!
method参数可以是:spearman,person,kendall
注意这个不能计算分类变量的相似度。

corrdet=detail[['counts','amounts']].corr(method='spearman')
print(corrdet)

corrdet1=detail[['dishes_name','counts','amounts']].corr(method='pearson')
print(corrdet1)

分类变量的话,可以自己写一个判断特征矩阵是否完全相同的函数

 


1.2检测与处理缺失值

print('缺失值数目是:',detail.isnull().sum())
print(detail,notnull().sum())

1.2.1删除法

dropna(self, axis=0, how='any', thresh=None,   
subset=None, inplace=False)
参数 说明
asix 0/1,0是对列操作,删除记录行;1是删除列。
how 接收string,表示删除的形式,any表示只要有缺失值就会被删除,all表示当且仅当全部为缺失值时才会执行删除操作,默认any
subset 接收array,表示进行去重的行列。默认是none,表示所有行列
inplace 接收Boolean,表示是否在原表上进行操作,默认是false
print('删除之前',detail,shape)
print('之后',detail.dropna(axis=1).shape)

1.2.2替换法

pd.DataFrame.fillna(self, value=None, method=None, axis=None,  
inplace=False, limit=None, downcast=None, **kwargs)
参数 说明
value 接收scalar,dict,series,dataframe,表示用来替换缺失值,无默认
method 接收待定string。backfill或bfill表示使用下一个非缺失值来填补空缺;pad或ffill表示使用上一个非缺失值来填补,默认none
axis 轴向。1为“跨列!”这个词解释很透彻
inplace 接收Boolean,表示是否在原表上操作,默认False
limit 接收int,表示填补缺失值个数上限,默认none
detail=detail.fillna(777)
print(detail.isnull().sum())

1.2.3插值法

常用的插补法有:线性插补、多项式插补(拉格朗和牛顿)、样条插值
这里使用的是scipy包的interpolate模块

还有这个在图像领域常用的插值法是重心坐标插值,BarycentricInterpolator

from scipy.interpolate import interp1d
import numpy as np
x=np.array([1,2,3,<
  • 20
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
pandas库是一个用于数据处理和分析的Python库。它提供了一系列函数和方法,可以帮助我们进行数据清洗预处理数据清洗是指对数据进行审核、处理、处理异常重复等操作,以使数据符合分析和建模的要求。而数据预处理是指对原始数据进行转换、重命名、离散等操作,以便更好地进行数据分析和建模。 在pandas中,可以使用以下方法进行数据清洗预处理: - 处理重复:可以通过删除记录重复和特征重复来处理重复。 - 处理:可以通过删除、替换或插的方法来处理。 - 处理异常:可以使用3σ原则或箱线图分析等方法来检测和处理异常。 具体来说,在处理方面,pandas提供了删除法、替换法和插法等方法。删除法是指直接删除包含的记录或特征;替换法是指用指定的或统计量替换;插法是指根据已有数据的模式和趋势,在附近进行插计算。 在处理异常方面,可以使用3σ原则来判断是否为异常,即判断数据是否偏离平均超过3倍的标准差。另外,也可以使用箱线图分析来检测异常,箱线图通过绘制数据的分位数和四分位数范围来表示数据的分布情况,从而确定是否存在异常。 总之,pandas提供了丰富的功能和方法,可以方便地进行数据清洗预处理,帮助我们更好地分析和理解数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python_pandas_数据清洗预处理.docx](https://download.csdn.net/download/weixin_56859075/23368211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【Python】数据处理.pandas数据预处理.清洗数据](https://blog.csdn.net/qq_45797116/article/details/107858510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python 数据分析8 pandas 数据清洗&预处理](https://blog.csdn.net/weixin_38673554/article/details/104344063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值