Python数据预处理,数据清洗的全过程复习

Python数据预处理步骤:

  1. 数据导入
  2. 数据查看
  3. 数据清洗
  4. 数据提取&筛选
  5. 数据排序
  6. 数据汇总&统计
  7. 数据标准化
  8. 导入相关包数据存储

数据清洗的详细全过程(带案例思路写)

1、导入相关包

Import pandas as pd
Import numpy as np
%matplotlib inline  #jupyter notebook 一定要运行这一行代码,在 本地cell中显示图形(注释不能同行,会报错,换行)

Import glob   #读取多个文件并合成一个文件
Path= ‘    ’  #设置文件的路径

All.files=glob.glob(path+ ‘/*.csv’)   #合并多个数组
All_date=[]
For filename in all_files;
  df=pd.read_csv( filename,index_col=none,header=0)
  All_df.append(date)
Df2=pd.concat(all_df.axis=0,ignore_index=true)   #axis=0 指列,axis=1指行

2、导入数据集

df=pd.read_csv('文件路径')
df=pd.read_excel('文件路径')

df.head(2)  #查看前两行
df.tail()   #查看后几行

3、初步探索数据

df.shape   #查看数据规模(维度)
df.dtypes   #查看各变量的数据类型
df.info()    #查看数据整体信息
df.describe()    #显示数值型数据的描述统计
df.[‘origin’].unique()   #查看origin 唯一值
df.[‘origin’].values()   #查看origin 的数据


4、简单的数据处理

df.columns    #看列名 
Col =date.columns.values     #col提取信息
df.columns=[x.strip()for x in col]     #strip去除前后空格
df.columns

5、重复值的处理

df.duplicated     #返回布尔型数据,告诉重复性数据
df[date.duplicated ]    #看重复的记录
df.duplicated.sum()   看计数
删除重复值 Drop_duplicates()
df.Drop_duplicates(inplace=true)  #inplace=true 表示直接在源数据上操作
df.head()
df.shape(0) 看有多少行
df.index=range(date.shape[0])   #重新建立索引
df.drop_duplicates(subset=[‘ ’, ‘’ ],keep= ‘first’,inplace=false)   #指定变量判断   first保留第一个

6、异常值的处理

df.describe().T    #.T是行列转值
Sta=(date[“价格”]-date[“价格”].mean())/date[“价格”].sta()   #找出价格的异常值
Sta.abs()>3       #标准差大于3倍为异常
df[Sta.abs()>3]

df[date.节省>date.价格]    #找出节省的异常值

Delindex=pd.concat([date[date.节省>date.价格],date[Sta.abs()>3]]).index   #把异常值合并索引
df.drop(delindex,inplace=true)     #在源数据中删除异常值
df.shape    #查看数据规模

7、缺失值的处理

df.isnull().any(axis=0)   #查看空值 判断各变量中是否存在缺失值 
df.isnull().any(axis=1)   #判断数据行中是否存在缺失值  axis=o是列,axis=1是行。
df.loc [date.isnull().any(axis=1)]    #定位缺失值所在的行
df.isnull().sum()    #各变量值缺失的数量

df.loc[date.出发地.Isnull (),”出发地”]= [str(x)[:2]for x in df.loc[df.出发地.isnull(),”线路名”]]
date.loc[date.出发地.Isnull (),”目的地”]= str(x)for x in df.loc[df.目的地.isnull(),”线路名”][5:7

df.[“价格”].fillna(round(df.[“价格”].mean(),0),inplace=true)
df.[“节省”].fillna(round(df.[“价格”].mean(),0),inplace=true)   #mean是平均值
df.isnull().sum()

8、处理空值

Df3= date.Dropna()      #直接删除空值数据所在行
Df_null_0=date.fillna(0,inplace=false)     #定义缺失值为0  inplace=false就是不覆盖原始的数据
Df_null_value=df.fillna(values={‘horsepower’:df[‘horsepower’].mode()[0],inplace=false})       #对缺失值进行填充   mode 众数

9、数据排列:

Df.sort_values(by= ‘xx ’ )      #值排序:从小到大,一列值
Df.sort_values(by= [‘xx ’, ‘xx’] )  #值排序:两列值
Df.sort_values(by= ‘xx ’,ascending=false )  #值排序:两列值
Df.sort_index(‘index’, ascending=false)   #索引排序

10、数据标准化

[0,1]标准化   将数据压缩到0~1之间
公式
Def MaxMinNormalization(x):    #定义x函数
             X=(x-np.min(x))/(np.max(x)-np.min(x))
             Return x
    s=MaxMinNormalization(x).reset_index   #把x函数重新建群集
    s     #输出s

Z-score标准化   基于数据均值和方差的标准化方法,标准化的数据的均值为0,方差为1的正态分布。  要求原始数据的分布近似为高斯分布,否则效果会很差。

公式
Def ZescoreNormalization(x):  
         X=(x-np.mean(x))/(np.std(x))    #np.std(x) 标准差
          Return x
y=ZescoreNormalization(x).reset_index 
y

11、处理文本型数据

        ①去空格strip
        ② 处理中间有,()之类的数据:replace(',','')
        ③正则表达式

如果想要获取一系列的文本信息,可以使用正则表达式
正则表达式通常用来检查某个规则的文本

df.head(2)    
df[“酒店评分”]=date.酒店Str.exstract(“(\d\.\d)分/5分”), expand=false  
 #\d\.\d)分/5分 是提取规则 ,expand=false :返回index,  expand=true:返回dateframe 

12、数据存储

df.to_excel(‘xx路径.xls’, sheet_name= ‘xx’ )

你可能感兴趣的:(数据分析,数据清洗,python,python,数据分析,数据库)