zoukankan      html  css  js  c++  java
  • python数据清洗

    #python数据清洗操作
    #1-1 pandas进行数据缺失值的预处理
    import pandas as pd
    import numpy as np
    date=pd.date_range("20200101",periods=6)
    df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list("ABCD")) #创建一个数据框
    print(df)
    df1=df.reindex(index=date[0:4],columns=list(df.columns)+["E"])
    df1.loc[date[0]:date[1],"E"]=1
    print(df1)
    #表格数据转换为numpy二维数据
    n=np.array(df1)
    print(n)
    #删除含有缺失值的行(axis=1为删除列)
    df2=df1.dropna(how="any",axis=0)
    print(df2)
    #对缺失值进行固定值填补/中值填充
    df2=df1.fillna(value=5)
    print(df2)
    #对缺失值进行均值的填充
    df2=df1.fillna(df["A"].mean())
    print(df2)

    #1-2 小文本和字符串的处理-
    #1利用一些字符串的Python函数
    #去除空格
    char=" lo hello world "
    c=char.strip()
    print(c)
    #字符串分割函数
    char="machine,learning,is,learning"
    c=char.split(",")
    print(c)
    #拼接:列表转字符串,符号替换
    c=",".join(c)
    print(c)
    #字符串替换
    c=char.replace(","," ")
    print(c)
    print(char)
    #2使用正则表达式-re模块
    import re
    #compile函数-编译正则表达式
    #re.compile(pattern,flag=0)
    text1="lebron is a sllight good person,he is cool"
    rr=re.compile(r'w*oow*')
    print(rr.findall(text1))
    #match函数:从字符串首开始匹配
    #re.match(pattern,string,flag=0)
    print(re.match("com","com.louwill.con").group())
    #re.search字符串匹配函数
    #re.sub(pattern,repl,string,count)查找并且替换字符串
    print(re.sub("oo","hh","he is a good boy,and is cool",1))

    #招聘数据的实际数据清洗过程-零散性处理代码步骤
    import numpy as np
    import pandas as pd
    import warnings
    warnings.filterwarnings("ignore")
    data1=pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理data_analysis.csv",encoding="gbk")
    data2=pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理data_mining.csv",encoding="gbk")
    data3=pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理deep_learning.csv",encoding="gbk")
    data4=pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理machine_learning.csv",encoding="gbk")
    print(data1)
    print(data4.shape)
    #表格数据的横向合并,列对齐不变
    data=pd.concat((pd.concat((pd.concat((data1,data2)),data3)),data4)).reset_index(drop=True)
    print(data.shape)
    data.to_csv("all data.csv")
    print(data.head())
    print(data.info()) #输出数据的基本信息描述
    #首先进行缺失值的填补工作
    print(data["address"].value_counts())
    data["address"]=data["address"].fillna('["未知"]')
    print(data["address"][:5])
    #去掉字符串数据中的一些中括号符号"[]"-表格数据行列数据常见的遍历方式
    for i,j in enumerate(data["address"]):
    j=j.replace("[","").replace("]","")
    data["address"][i]=j
    print(data["address"][:5])
    for i,j in enumerate(data["industryLables"]):
    j=j.replace("[","").replace("]","")
    data["industryLables"][i]=j
    print(data["industryLables"][:5])
    for i,j in enumerate(data["label"]):
    j=j.replace("[","").replace("]","")
    data["label"][i]=j
    print(data["label"][:5])
    #先补充缺失值再进行数据的替换
    print(data["position_detail"][:5])
    data["position_detail"]=data["position_detail"].fillna('"未知"')
    for i,j in enumerate(data["position_detail"]):
    j=j.replace(" ","")
    data["position_detail"][i]=j
    print(data["position_detail"][:5])
    import string
    print(data["salary"][:11])
    print(data["salary"])
    #salary数据处理
    print(data["salary"].value_counts())
    for i,j in enumerate(data["salary"]):
    j=j.replace("k","").replace("K","").replace("以上","-0") #进行不符合实际情况数据的字符串的替换
    j=j.split("-")
    j1=int(j[0])
    j2 =int(j[1])
    j3=(j1+j2)/2
    data["salary"][i]=j3*1e3
    print(data["salary"][:5])
    #表格或者数据的各个数据含量统计
    print(data["salary"].value_counts())
    print(data["stage"].value_counts())
    print(data["work_year"].value_counts())
    for i,j in enumerate(data["position_name"]):
    if "数据分析" in j:
    j="数据分析师"
    if "数据挖掘" in j:
    j="数据挖掘工程师"
    if "机器学习" in j:
    j = "机器学习工程师"
    if "深度学习" in j:
    j="深度学习工程师"
    data["position_name"][i]=j
    print(data["position_name"][:5])
    print(data["position_name"].value_counts())

    #代码进行组合和封装
    import numpy as np
    import pandas as pd
    import warnings

    class data_clean(object):
    def __init__(self):
    pass
    #数据获取方法
    def get_data(self):
    data1 = pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理data_analysis.csv",
    encoding="gbk")
    data2 = pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理data_mining.csv", encoding="gbk")
    data3 = pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理deep_learning.csv",
    encoding="gbk")
    data4 = pd.read_csv("D:Byrbt2018StudyPython机器学习全流程项目实战精讲配套课件第四讲 数据清洗与预处理machine_learning.csv",
    encoding="gbk")
    data = pd.concat((pd.concat((pd.concat((data1, data2)), data3)), data4)).reset_index(drop=True)
    return data
    #数据清洗方法
    def clean_operation(self):
    data=self.get_data()
    data["address"] = data["address"].fillna('["未知"]')
    for i, j in enumerate(data["address"]):
    j = j.replace("[", "").replace("]", "")
    data["address"][i] = j

    for i, j in enumerate(data["industryLables"]):
    j = j.replace("[", "").replace("]", "")
    data["industryLables"][i] = j

    for i, j in enumerate(data["label"]):
    j = j.replace("[", "").replace("]", "")
    data["label"][i] = j

    # 先补充缺失值再进行数据的替换
    data["position_detail"] = data["position_detail"].fillna('"未知"')
    for i, j in enumerate(data["position_detail"]):
    j = j.replace(" ", "")
    data["position_detail"][i] = j

    # salary数据处理
    for i, j in enumerate(data["salary"]):
    j = j.replace("k", "").replace("K", "").replace("以上", "-0") # 进行不符合实际情况数据的字符串的替换
    j = j.split("-")
    j1 = int(j[0])
    j2 = int(j[1])
    j3 = (j1 + j2) / 2
    data["salary"][i] = j3 * 1e3

    for i, j in enumerate(data["position_name"]):
    if "数据分析" in j:
    j = "数据分析师"
    if "数据挖掘" in j:
    j = "数据挖掘工程师"
    if "机器学习" in j:
    j = "机器学习工程师"
    if "深度学习" in j:
    j = "深度学习工程师"
    data["position_name"][i] = j
    return data
    #实例化一个对象
    opt=data_clean()
    data=opt.clean_operation()
    print(data.head())
  • 相关阅读:
    校验参考相关备份
    API接口设计
    redis 基础配置
    Apollo 统一配置中心
    http返回状态码记录
    ngnix实战
    OAuth2三方授权
    OAuth2授权协议记录
    KMP算法
    分治法
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/12569066.html
Copyright © 2011-2022 走看看