Python数据分析之pandas数据清洗(数据查看、空值的处理)!

Python数据分析之pandas数据清洗(数据查看、空值的处理)!

u11205239411114135359fm253fmtautoapp138fJPEG

 

文章目录

    • 一、准备工作(导入数据)
    • 二、数据查看
      • 1、查看数据表的基本信息
      • 2、空值的与缺失值概念(NAN、NAT)
      • 3、查看所有值是否为空值
      • 4、判断是否存在空值
      • 5、唯一值查看
    • 三、数据清洗
      • 1、空值的处理
      • 2、格式转换
      • 3、更改列名即字段名
      • 4、保留一个重复值
      • 5、数据替换

 

一、准备工作(导入数据)

#导入必备数据分析库
import pandas as pd
import numpy as np

#导入excel数据文件
df = pd.DataFrame(pd.read_excel("TMao.xlsx")) 
#导入csv数据文件
# df = pd.DataFrame(pd.read_csv("Attributes.csv",header=1,sep=','))  #表示第一行为字段名

注意

  • 需要安装openpyxl库才可以读取xlsx文件,使用pip install openpyxl
  • 以上导入文件的语句用一句即可。

二、数据查看

1、查看数据表的基本信息

(根据需要对数据进行总体上的查看,建议不要全部执行,而是一条一条依次执行查看效果)

#维度查看:返回几行几列,注意不要加()
df.shape

#查看列名称:类似于SQL中的desc
df.columns

#数据表基本信息(维度、列名称、数据格式、所占空间等)
df.info

#查看每一列数据的格式
df.dtypes
#某一列数据的格式
df['订单付款时间'].dtype
df['订单金额'].dtype

查看列名df.columns:
9203346c3b9d4e54926a55b1ac504bf8

2、空值的与缺失值概念(NAN、NAT)

空值:在pandas中的空值是"",也叫空字符串;

缺失值:在dataframe中为NAN或者NAT(缺失时间),在series中为none或者nan

3、查看所有值是否为空值

(所有值全部列出来,不实用的操作,这里简单介绍一下用法)

#查看是否为空值
df.isnull()
#某一列的空值
df["订单付款时间"].isnull()

4、判断是否存在空值

# 查看所有值中是否存在空值
df.isnull().any()

# 判断某列是否存在空值
df["订单付款时间"].isnull().any()  #或者.values

# 打印空值行的数据
if df["订单付款时间"].isnull().any():
     print(df[df.isnull().values==True])
     print(df[df.isna().values==True])

5、唯一值查看

#查看某一列的唯一值
df["订单金额"].unique()

#查看数据表的值
df.values

#查看前几行/后几行的数据
df.head()  #默认前5行
df.tail(10)  #指定数值10,查看后10行的数据

三、数据清洗

1、空值的处理

1)删除含有空值的行或列:用dropna()时可以同时剔除Nan和NaT

# 准备工作
df.isnull().any()  #查看哪一列有空值,发现是<订单付款时间>列
print(df[df['订单付款时间'].isna().values==True])  #输出<订单付款时间>列存在空值的行

#清洗空值
df2 = df.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)  #删除含有空值的行或列 
df2['订单付款时间'].isna().any()  #查看是否还存在空值

#再次查看
df2.shape

axis:维度,axis=0表示index行,axis=1表示columns列,默认为0

how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列

thresh:一行或一列中至少出现了thresh个才删除。

subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)

inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。

2)若发现dropna()后仍然存在空值,则有可能其中并不是空值,而是空字符串,这里就可以将空字符串替换成空值再进行dropna()操作

df.replace(to_replace=r'^s*$',value=np.nan,regex=True,inplace=True)
df['订单付款时间'].dropna()

3)填充含有空值的行或列(ffill / bfill)

df.isna().any()  #查看原数据表是否存在空值
df3 = df.fillna(method='ffill',axis=0,inplace=False,limit=None,downcast=None)
df3.isna().any()  #查看填充后的数据表是否存在空值

#用均值填充空值(mean方法)
df['订单金额'].fillna(df[订单金额].mean())

value:需要用什么值去填充缺失值

axis:确定填充维度,从行开始或是从列开始

method:ffill:用缺失值前面的一个值代替缺失值,如果axis=1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。backfill/bfill,缺失值后面的一个值代替前面的缺失值。注意这个参数不能与value同时出现

limit:确定填充的个数,如果limit=2,则只填充两个缺失值。

2、格式转换

1)清除空格字符strip
调用map函数对str对象进行空格去除,若去除逗号可以用map(str.strip(‘,’))

df['收货地址']=df['收货地址'].map(str.strip())

2)大小写转换lower/upper

df['编码']=df['编码'].strip().lower()  #大写同理,upper()

3)更改数据格式astype

df['订单金额'].astype('int')  #int整数类型,同理float浮点型

3、更改列名即字段名

df.rename(columns={'实付金额':'实付'})  #把实付金额,改成 实付

4、保留一个重复值

df['收货地址'].drop_duplicates()  #删除列中后出现的值
df['收货地址'].drop_duplicates(keep='last')  #删除列中先出现的值,即保留最后一个值

5、数据替换

把收货地址中的 四川 改为 四川省

df['收货地址'].replace('四川', '四川省')

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

2022021703525891-28

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>