文章目录
*
– 一、准备工作(导入数据)
– 二、数据查看
–
+ 1、查看数据表的基本信息
+ 2、空值的与缺失值概念(NAN、NAT)
+ 3、查看所有值是否为空值
+ 4、判断是否存在空值
+ 5、唯一值查看
– 三、数据清洗
–
+ 1、空值的处理
+ 2、格式转换
+ 3、更改列名即字段名
+ 4、保留一个重复值
+ 5、数据替换
一、准备工作(导入数据)
import pandas as pd
import numpy as np
df = pd.DataFrame(pd.read_excel("TMao.xlsx"))
注意:
- 需要安装openpyxl库才可以读取xlsx文件,使用
pip install openpyxl
- 以上导入文件的语句用一句即可。
二、数据查看
1、查看数据表的基本信息
(根据需要对数据进行总体上的查看,建议不要全部执行,而是一条一条依次执行查看效果)
df.shape
df.columns
df.info
df.dtypes
df['订单付款时间'].dtype
df['订单金额'].dtype
查看列名df.columns:
2、空值的与缺失值概念(NAN、NAT)
空值:在pandas中的空值是””,也叫空字符串;
缺失值:在dataframe中为NAN或者NAT(缺失时间),在series中为none或者nan
3、查看所有值是否为空值
(所有值全部列出来,不实用的操作,这里简单介绍一下用法)
df.isnull()
df["订单付款时间"].isnull()
4、判断是否存在空值
df.isnull().any()
df["订单付款时间"].isnull().any()
if df["订单付款时间"].isnull().any():
print(df[df.isnull().values==True])
print(df[df.isna().values==True])
5、唯一值查看
df["订单金额"].unique()
df.values
df.head()
df.tail(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()
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()
3)更改数据格式astype
df['订单金额'].astype('int')
3、更改列名即字段名
df.rename(columns={'实付金额':'实付'})
4、保留一个重复值
df['收货地址'].drop_duplicates()
df['收货地址'].drop_duplicates(keep='last')
5、数据替换
把收货地址中的 四川 改为 四川省
df['收货地址'].replace('四川', '四川省')
Original: https://blog.csdn.net/Viewinfinitely/article/details/124728721
Author: Chung丶无际鹰
Title: python数据分析之pandas数据清洗(数据查看、空值的处理)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/730811/
转载文章受原作者版权保护。转载请注明原作者出处!