我们从网上爬取好的数据,看起来会很乱,我们需要对数据进行再次加工,筛选出我们需要的数据,此时就需要对数据进行清洗。

一点数据清洗对于后续的数据分析来说至关重要。Python中进行数据清洗的工具是Pandas。接下来我就来介绍一下如何使用Python简单地对凌乱的数据进行清洗。

首先我们需要以下从几个方面判断我们需要清洗的数据:

1、数据的完整性:检查数据是否有空值或缺失

2、数据的全面性:检查同类数据的单位是否是一致的,比如体重有Kg和g,身高有M和CM

3、数据的合法性:检查数据是否合法,如存在非ASCII码字符或者非法字符

4、数据的唯一性:检查数据是否有重复

考虑好这些问题后我们把需要清洗的内容列出一张清单,并按照清单进行清洗。

以下是实际清洗流程:

第一步,下载pandas包,可以使用pycharm->setting->python interpreter直接下载,也可以在终端输入pip3 install pandas下载

第二步,导包

import pandas as pd
from pandas import Series,DataFrame

第三步,开始清洗,示例代码如下:

import pandas as pd
from pandas import Series,DataFramedef clean():df = DataFrame(pd.read_excel('./cleantest.xlsx'))#对列进行重命名df.rename(columns={0:'姓名', 1:'性别', 2:'年龄',3:'体重',4:'身高'},inplace=True)#对整行为空值的数据进行删除df.dropna(how='all',inplace=True)#使用平均值来填充体重缺失的值df[u'体重'].fillna(int(df[u'体重'].mean()),inplace=True)#对身高列的度量做统一,我们使用df.apply方法来统一身高的度量,使用df.columns.str.upper方法将首字母统一为大写def format_height(df):if(df['身高']<3):return df['身高'] * 100else:return df['身高']df['身高'] = df.apply(format_height,axis=1)#2 姓名首字母大小写不统一,统一成首字母大写df.columns = df.columns.str.upper()#对姓名列的非法字符做过滤,我们可以使用df.replace方法,删除字母前面的空格,我们可以使用df.map方法#1、英文字母出现中文->删除非ASCLL码的字符df['姓名'].replace({r'[^\x00-\x7f]+':''},regex=True,inplace=True)#2、英文名字出现了问号->删除问号df['姓名'].replace({r'\?+':''},regex=True,inplace=True)#3、名字前出现空格->删除空格df['姓名'] = df['姓名'].map(str.lstrip)#将年龄列为负值的年龄处理为正数,我们可以使用df.apply方法:def format_sex(df):return abs(df['年龄'])df['年龄'] = df.apply(format_sex,axis=1)#删除行记录重复的数据,我们可以使用df.drop_duplicates方法:df.drop_duplicates(['姓名'],inplace=True)#我们讲清洗好的数据保存至新的excel中,我们可以使用df.to_excel方法:df.to_excel('./data02.xlsx',index=False)
if __name__ == '__main__':clean()

pandas的一些常用方法:

1)从excel中加载数据到DataFrame,pandas.read_excel('文档位置')

2)对列进行重命名,rename

def rename(self,mapper: Renamer | None = None,*,index: Renamer | None = None,columns: Renamer | None = None,axis: Axis | None = None,copy: bool = True,inplace: bool = False,level: Level | None = None,errors: str = "ignore",) -> DataFrame | None:

3)删除空值,dropna

def dropna(self,axis: Axis = 0,how: str = "any",thresh=None,subset: IndexLabel = None,inplace: bool = False,):

4)填充值,fillna

    def fillna(self,value: object | ArrayLike | None = None,method: FillnaOptions | None = None,axis=None,inplace=False,limit=None,downcast=None,) -> Series | None:return super().fillna(value=value,method=method,axis=axis,inplace=inplace,limit=limit,downcast=downcast,)

5)将首字母统一为大写,columns.str.upper

6)  过滤非法字符replace

    def replace(self,to_replace=None,value=lib.no_default,inplace=False,limit=None,regex=False,method: str | lib.NoDefault = lib.no_default,):return super().replace(to_replace=to_replace,value=value,inplace=inplace,limit=limit,regex=regex,method=method,)

7)  删除空格,map

    def map(self, arg, na_action=None) -> Series:new_values = self._map_values(arg, na_action=na_action)return self._constructor(new_values, index=self.index).__finalize__(self, method="map")

8)将正负值转换,apply

    def apply(self,func: AggFuncType,axis: Axis = 0,raw: bool = False,result_type=None,args=(),**kwargs,):from pandas.core.apply import frame_applyop = frame_apply(self,func=func,axis=axis,raw=raw,result_type=result_type,args=args,kwargs=kwargs,)return op.apply().__finalize__(self, method="apply")

9)删除行记录重复的数据,drop_duplicates

    def drop_duplicates(self,subset: Hashable | Sequence[Hashable] | None = None,keep: Literal["first"] | Literal["last"] | Literal[False] = "first",inplace: bool = False,ignore_index: bool = False,) -> DataFrame | None:if self.empty:return self.copy()inplace = validate_bool_kwarg(inplace, "inplace")ignore_index = validate_bool_kwarg(ignore_index, "ignore_index")duplicated = self.duplicated(subset, keep=keep)result = self[-duplicated]if ignore_index:result.index = default_index(len(result))if inplace:self._update_inplace(result)return Noneelse:return result

10)清洗好的数据保存至新的excel中,to_excel

第四步,去新的excel中查看数据是否清洗完成。

简单地数据清洗就介绍到这里了,经过清洗后的数据更加方便我们进行数据分析。

Python简单数据清洗相关推荐

  1. 别再说Python简单!

    之前在知乎上看到这样一条动态: 这位乎友觉得,只要是高考600分以上的人,一天之内必然学会Python. 我很惊讶,就算再简单的语言,一天学会,是不是太梦幻. 他说Python简单? 不知道各位有没有 ...

  2. python使用-使用python进行数据清洗

    数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节.有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此.数据清洗的目的有两个 ...

  3. 基于Python的数据清洗常用工具

    基于Python的数据清洗常用工具 Python数据清洗实战入门之数据清洗的常用工具 一.数组运算库Numpy Numpy常用数据结构 创建一维数组 通过嵌套列表创建二维数组 使用Numpy的迭代器生 ...

  4. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  5. (一)python简单应用

    (一)python简单应用 自学之后运用循环语句和判断语句所解决的几个简单问题: 1.实现1到10的和: x = 1 he = 0 while x < 11:if x == 7:passelse ...

  6. python 简单图像处理(13) 二值图腐蚀和膨胀,开运算、闭运算

    原文:http://www.cnblogs.com/xianglan/archive/2010/12/29/1921211.html python 简单图像处理(13) 二值图腐蚀和膨胀,开运算.闭运 ...

  7. python好学-所有人都说Python 简单易学,为何你觉得难?

    记得刚学Python的时候,几乎所有人都说Python 简单易学,而对于编程零基础,只掌握Word和Excel的人来说,感觉真的好难. 学习之前网上的教材看了,Python的书也看了,包括<核心 ...

  8. python基础代码事例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  9. python程序实例教程基础-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  10. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

最新文章

  1. 我们希望读者能从这个BLOG获得什么?
  2. 1、MySQL 8.0.20最新版本在Linux上安装
  3. 继续送假期干货——响应式图片工具smartImg
  4. 分布式精华问答 | 如何实现分布式系统的高可用性?
  5. Android 圆形进度条控件
  6. 计算机毕业设计ssm汽车租赁管理系统mfobv系统+程序+源码+lw+远程部署
  7. 小麦颗粒数目matlab,求关于matlab中rice.png图像中的米粒数目的算法
  8. Java 计算月份天数
  9. 苹果手机计算机怎么放桌面,苹果手机桌面图标怎么随意摆放 iPhone桌面图标随意摆放教程 (全文)...
  10. 唐魏巍,天冷了,你妈妈叫你回家加衣服
  11. 并行计算 Blog 02 —— SLIC代码的计算热点分析
  12. 魔兽DOTA高玩的自述
  13. Python脚本代理设置
  14. leetcode21 合并两个有序链表
  15. 物联网---网络通信协议
  16. 点云3d检测SA-SSD
  17. 正确开展Scrum评审会议
  18. 异次元发卡系统源码荔枝发卡V3.0
  19. 数学上的整数拆分问题
  20. Java Web应用开发——作业五

热门文章

  1. 全球(全国)土地利用数据集获取大全/植被类型分布/NDVI数据/NPP数据/径流量数据/降雨量气温气象数据/蒸散量数据/太阳辐射数据
  2. 飞鸽传书——空号检测
  3. python窗口显示表格_python窗体表格
  4. 2018第九届蓝桥杯JavaB组省赛真题详解
  5. 使用word代码域自动为图表 标号
  6. 自然语言处理——基于预训练模型的方法——第4章 自然语言处理中的神经网络基础
  7. L73.linux命令每日一练 -- 第十章 Linux网络管理命令 -- dig和host
  8. UNP编程:15---UDP之(recvfrom、sendto函数)
  9. Hydra暴力破解smb协议(Windows用户名和密码)
  10. 联想g510拆键盘的简单方法_联想G510重点笔记本拆机教程.doc