跟书友汇德天学python,用时5小时一网打尽csv+pandas数据清洗

在这里插入图片描述

今天德天和大家一起玩转数据清洗

学以致用,是大家一致认同的观点,因为这样做的好处很多,一则可以检验学习效果,二则可以拓宽学习思路,三则可以更加灵活多变的应用所学,今天就让我们系统化的通过python中的两个库,一个是CSV,另一个是PANDAS
话不多说:上干货!

1、建立一个数据源CSV

import csv
path= 'c:\\Users\\Administrator\\pandas_csv\\qingxi_data.csv'
with open(path,"w",newline="")as f:
          write = csv.writer(f)
          row1=["102QS-25","200mm",300,"20","600w",40]
          row2=["200QS-35","100mm",150,"15","500w",30]
          row3=["170QS-15","80m",120,"10","500w",20]
          row4=["180QS-10","220mm",320,"35","800w",45]
          row5=["195QS-20","250m",350,"40","1000w",50]
          
          write.writerows((row1,row2,row3))
  1. 正常情况我们是应用已知数据进行数据操作,但是这里我们还是自造数据,毕竟这样我们可以进一步熟练其它库的命令操作
    知识索引:
  2. import csv,#导入库
  3. path="…\qingxi_data.csv" #建立路径
  4. with open(path,“w”,newline="") as f: with open-----+参数w:建立写文件,f 文件新名字
  5. csv.writer(f) 使文件可写,write----是写文件的实例
  6. write.writerows((row1,row2,row3))------实例write,方法writerows,完成写入内容操作。
    至此一个自建的源文件CSV,就制作完成了!(小开心,对不对?)

2、导入新库,读入数据源

开讲前言:
这一次我们是要把第1步,建好的文件读取出来,这里要用到另一个库pandas,同时我们要把系统中无标题的源文件换成阿拉伯数字,需要在读取中添加参数head=None,制造了一个缺失文件头的源,然后我们把它的文件头是:
清洗头:[“型号”,“出水口径”,“流量”,“扬程”,“功率”,“颗粒度”]
添加到,导入文件中,从而完成清洗第1步。

3、开洗!

导入文件

import pandas as pd
pf = pd.read_csv(path,header=None)
pf.head()

在这里插入图片描述
增加头名称

import pandas as pd
column_names=["型号","出水口径","流量","扬程","功率","颗粒度"]
pf = pd.read_csv(path,names=column_names)
pf.head()

知识索引

  1. import pandas as pd #导入pandas 库 ,用as 另命名pd
  2. column_names=[“型号”,“出水口径”,“流量”,“扬程”,“功率”,“颗粒度”] #建立清洗头列表
  3. pd.read_csv() #读取路径文件path,增加清洗头names=column_names 把头补全完整

在这里插入图片描述

4、清洗替换

大家看一下出水口径这里,其中2行,4行,分别有两个单位不小心写错了,我们要替换成正确的结果

pf["出水口径"] = pf["出水口径"].str.replace("80m","80mm")
pf.head()  

pf["出水口径"] = pf["出水口径"].str.replace("250m","250mm")
pf.head()    
 

知识索引:

  1. 错误的数据源:位置"出水口径",80m,250m ,修改单位m—改成:mm
  2. .str.replace()利用字符模块下的替换命令完成修改
    替换后的结果

5、单列拆分

问题:
大家看到型号这里是两个部分组成,中间为空格,我们希望把这部分数据分割成两列,名字分别为“型号”,“批次”,该如何处理呢?
在这里插入图片描述

#拆分后变成型号和批次
pf[["型号","批次"]] = pf["型号"].str.split(expand=True)

知识索引:

  1. 通过上面str.split(expand=True),完成了按空格拆分,同时把新列自动添加到最后一列的位置

在这里插入图片描述

6、知识回顾:按升序排列

顺便和大家复习一下,如何借助相关命令进行数据的排序,如果忘记可以
点链接查看-数据分析5-3
在这里插入图片描述

7、知识拓展:利用DataFrame访问内容

处理好的数据,我们常常需要对他们灵活的操作,pandas 给我们提供了一个很好用的命令loc,但是我们想要使用这个命令,需要做一步操作,把现有的文件,加入DataFrame中,成为可访问对象。
知识索引:

  1. 如何使用DataFrame()命令
  2. 如何使用loc函数,
    2-1 pf1.loc[0:3] 表示从上到下取四行数据进行访问loc为竖直方向,取行的范围。
    2-2 pf1.loc[2] 表示仅取第3行数据,结果见下图。
    2-3 pf1.loc[::-1] 按照行的索引反向排列
pf1 = pd.DataFrame(pf)
pf2 = pf1.loc[0:3]
pf2.head()

2-1:输出结果
在这里插入图片描述

pf1 = pd.DataFrame(pf)
pf2 = pf1.loc[2]
pf2.head()

2-2:输出结果
在这里插入图片描述

pf1 = pd.DataFrame(pf)
pf2 = pf1.loc[::-1]
pf2.head()

2-3:输出结果
在这里插入图片描述

文章未完,待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值