数据清洗入门

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

代码

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]
原文地址:https://www.cnblogs.com/coshaho/p/9867483.html