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

     对如下数据进行清洗,求总分并分类。

    代码

    import pandas as pd
    
    # 1、读取数据并显示行列数
    df = pd.read_csv(r'rz.csv')
    print(df.shape)
    
    # 2、重复列处理
    print(df.duplicated().tail())
    print(df[df.duplicated()])
    df1 = df.drop_duplicates()
    
    # 3、空白列处理
    print(df.isnull().tail())
    # 判断存在空白的列
    print(df1.isnull().any())
    # 显示存在空白的行数据
    print(df1[df1.isnull().values])
    df2 = df1.fillna(0)
    
    # 4、字符串去空格
    df0 = df2.copy()
    for clo in df2.columns:
        if df2[clo].dtype == 'O':
            df0[clo] = df2[clo].astype(str).map(str.strip)
            print(clo)
    
    # 5、以0填充非int类型数据
    # df0.replace({'体育': '作弊', '军训': '缺考'}, 0)
    ty = list(df0.体育)
    j = 0
    for i in ty:
        if type(i) != int:
            try:
                ty[j] = int(i)
            except ValueError as a:
                ty[j] = 0
        j += 1
    df0.体育 = ty
    
    ty = list(df0.军训)
    j = 0
    for i in ty:
        if type(i) != int:
            try:
                ty[j] = int(i)
            except ValueError as a:
                ty[j] = 0
        j += 1
    df0.军训 = ty
    print(df0)
    
    # 6、求总分并分类
    df3 = df0.copy()
    df3['score'] = df3.英语 + df3.体育 + df3.军训 + df3.数分 + df3.高代 + df3.解几
    print(df3.score.describe())
    
    bins = [df3.score.min() - 1, 400, 450, df3.score.max() + 1]
    label = ["一般", "较好", "优秀"]
    df4 = pd.cut(df3.score, bins, right=False, labels=label)
    df3['类别'] = df4
    print(df3)
    
    # 7、标准化后求总分并分类
    for i in df0.columns[4:]:
        df0[i] = (df0[i] - df0[i].min()) / (df0[i].max() - df0[i].min())
    df0['score'] = df0.英语 + df0.体育 + df0.军训 + df0.数分 + df0.高代 + df0.解几
    print(df0.score.describe())
    bins = [df0.score.min() - 1, 3, 4, df0.score.max() + 1]
    label = ["一般", "较好", "优秀"]
    df4 = pd.cut(df0.score, bins, right=False, labels=label)
    df0['类别'] = df4
    print(df0)

    运行结果

    (21, 10)
    16    False
    17    False
    18    False
    19    False
    20     True
    dtype: bool
                学号        班级  姓名 性别  英语  体育  军训  数分  高代  解几
    20  2308024201  23080242  迟培  男  60  50  89  71  76  71
           学号     班级     姓名     性别     英语     体育     军训     数分     高代     解几
    16  False  False  False  False  False  False  False  False  False  False
    17  False  False  False  False  False  False  False  False  False  False
    18  False  False  False  False  False  False  False  False  False  False
    19  False  False  False  False  False  False  False  False  False  False
    20  False  False  False  False  False  False  False  False  False  False
    学号    False
    班级    False
    姓名    False
    性别    False
    英语    False
    体育    False
    军训     True
    数分    False
    高代    False
    解几    False
    dtype: bool
                学号        班级  姓名 性别  英语  体育   军训  数分  高代  解几
    14  2308024446  23080244  周路  女  76  80  NaN  61  74  80
    姓名
    性别
    体育
    军训
                学号        班级   姓名 性别  英语  体育  军训  数分  高代  解几
    0   2308024241  23080242   成龙  男  76  78  77  40  23  60
    1   2308024244  23080242   周怡  女  66  91  75  47  47  44
    2   2308024251  23080242   张波  男  85  81  75  45  45  60
    3   2308024249  23080242   朱浩  男  65  50  80  72  62  71
    4   2308024219  23080242   封印  女  73  88  92  61  47  46
    5   2308024201  23080242   迟培  男  60  50  89  71  76  71
    6   2308024347  23080243   李华  女  67  61  84  61  65  78
    7   2308024307  23080243   陈田  男  76  79  86  69  40  69
    8   2308024326  23080243   余皓  男  66  67  85  65  61  71
    9   2308024320  23080243   李嘉  女  62   0  90  60  67  77
    10  2308024342  23080243  李上初  男  76  90  84  60  66  60
    11  2308024310  23080243   郭窦  女  79  67  84  64  64  79
    12  2308024435  23080244  姜毅涛  男  77  71   0  61  73  76
    13  2308024432  23080244   赵宇  男  74  74  88  68  70  71
    14  2308024446  23080244   周路  女  76  80   0  61  74  80
    15  2308024421  23080244  林建祥  男  72  72  81  63  90  75
    16  2308024433  23080244  李大强  男  79  76  77  78  70  70
    17  2308024428  23080244  李侧通  男  64  96  91  69  60  77
    18  2308024402  23080244   王慧  女  73  74  93  70  71  75
    19  2308024422  23080244  李晓亮  男  85  60  85  72  72  83
    count     20.000000
    mean     413.250000
    std       36.230076
    min      354.000000
    25%      386.000000
    50%      416.500000
    75%      446.250000
    max      457.000000
    Name: score, dtype: float64
                学号        班级   姓名 性别  英语  体育  军训  数分  高代  解几  score  类别
    0   2308024241  23080242   成龙  男  76  78  77  40  23  60    354  一般
    1   2308024244  23080242   周怡  女  66  91  75  47  47  44    370  一般
    2   2308024251  23080242   张波  男  85  81  75  45  45  60    391  一般
    3   2308024249  23080242   朱浩  男  65  50  80  72  62  71    400  较好
    4   2308024219  23080242   封印  女  73  88  92  61  47  46    407  较好
    5   2308024201  23080242   迟培  男  60  50  89  71  76  71    417  较好
    6   2308024347  23080243   李华  女  67  61  84  61  65  78    416  较好
    7   2308024307  23080243   陈田  男  76  79  86  69  40  69    419  较好
    8   2308024326  23080243   余皓  男  66  67  85  65  61  71    415  较好
    9   2308024320  23080243   李嘉  女  62   0  90  60  67  77    356  一般
    10  2308024342  23080243  李上初  男  76  90  84  60  66  60    436  较好
    11  2308024310  23080243   郭窦  女  79  67  84  64  64  79    437  较好
    12  2308024435  23080244  姜毅涛  男  77  71   0  61  73  76    358  一般
    13  2308024432  23080244   赵宇  男  74  74  88  68  70  71    445  较好
    14  2308024446  23080244   周路  女  76  80   0  61  74  80    371  一般
    15  2308024421  23080244  林建祥  男  72  72  81  63  90  75    453  优秀
    16  2308024433  23080244  李大强  男  79  76  77  78  70  70    450  优秀
    17  2308024428  23080244  李侧通  男  64  96  91  69  60  77    457  优秀
    18  2308024402  23080244   王慧  女  73  74  93  70  71  75    456  优秀
    19  2308024422  23080244  李晓亮  男  85  60  85  72  72  83    457  优秀
    count    20.000000
    mean      3.892161
    std       0.668808
    min       2.536788
    25%       3.534346
    50%       3.823450
    75%       4.431060
    max       5.112427
    Name: score, dtype: float64
                学号        班级   姓名 性别 ...        高代        解几     score  类别
    0   2308024241  23080242   成龙  男 ...  0.000000  0.410256  2.690713  一般
    1   2308024244  23080242   周怡  女 ...  0.358209  0.000000  2.536788  一般
    2   2308024251  23080242   张波  男 ...  0.328358  0.410256  3.520395  较好
    3   2308024249  23080242   朱浩  男 ...  0.582090  0.692308  3.697551  较好
    4   2308024219  23080242   封印  女 ...  0.358209  0.051282  3.388037  较好
    5   2308024201  23080242   迟培  男 ...  0.791045  0.692308  3.776965  较好
    6   2308024347  23080243   李华  女 ...  0.626866  0.871795  3.869935  较好
    7   2308024307  23080243   陈田  男 ...  0.253731  0.641026  4.045563  优秀
    8   2308024326  23080243   余皓  男 ...  0.567164  0.692308  3.769262  较好
    9   2308024320  23080243   李嘉  女 ...  0.656716  0.846154  3.076928  较好
    10  2308024342  23080243  李上初  男 ...  0.641791  0.410256  4.059089  优秀
    11  2308024310  23080243   郭窦  女 ...  0.611940  0.897436  4.502098  优秀
    12  2308024435  23080244  姜毅涛  男 ...  0.746269  0.820513  3.538996  较好
    13  2308024432  23080244   赵宇  男 ...  0.701493  0.692308  4.407712  优秀
    14  2308024446  23080244   周路  女 ...  0.761194  0.923077  3.710236  较好
    15  2308024421  23080244  林建祥  男 ...  1.000000  0.794872  4.501103  优秀
    16  2308024433  23080244  李大强  男 ...  0.701493  0.666667  4.747783  优秀
    17  2308024428  23080244  李侧通  男 ...  0.552239  0.846154  4.300045  优秀
    18  2308024402  23080244   王慧  女 ...  0.716418  0.794872  4.591597  优秀
    19  2308024422  23080244  李晓亮  男 ...  0.731343  1.000000  5.112427  优秀
    
    [20 rows x 12 columns]
  • 相关阅读:
    聊聊LiteOS事件模块的结构体、初始化及常用操作
    有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
    开源一周岁,MindSpore新特性巨量来袭
    90后就敢当扫地僧!不服?4月24号来闯龙门阵!
    你的数仓函数结果不稳定,可能是属性指定错了
    云小课 | 不了解EIP带宽计费规则?看这里!
    腾讯 angel 3.0:高效处理模型
    深度树匹配模型(TDM)
    X-Deep Learning功能模块
    XLearning
  • 原文地址:https://www.cnblogs.com/coshaho/p/9867483.html
Copyright © 2011-2022 走看看