• 技术文章 >常见问题 >Python常见问题

    python如何做数据清洗?

     Ly Ly2020-05-26 14:57:49原创5058

    1.数据清洗的代码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    import pandas as pd

    import numpy as np

    # 创建空的df,保存测试数据

    test_df = pd.DataFrame({'K1':['C1','C1','C2','C3','C4','C2','C1'],'K2':['A','A','B','C','D',np.NaN,np.NaN]})

    # 按K1列进行分组,组内进行unique操作(去除重复元素,返回元组或列表)

    test_df_unique = pd.DataFrame(test_df.groupby(['K1'])['K2'].agg('unique'))

    # 自定义函数判断元组中是否含有nan

    def has_nan(list):

        flag = False

        for x in list:

            if x is np.NaN:

                flag = True

                break

        return flag

    # 自定义函数判断元组中是否不含有nan

    def no_nan(list):

        flag = True

        for x in list:

            if x is np.NaN:

                flag = False

                break

        return flag

    # 获取k2列含有nan的数据

    test_df_unique_has_nan = test_df_unique[test_df_unique['K2'].apply(has_nan)]

    # 获取k2列不含有nan的数据

    test_df_unique_no_nan = test_df_unique[test_df_unique['K2'].apply(no_nan)]

    # 管理测试数据,获取源数据

    test_df_get = test_df[test_df['K1'].isin(test_df_unique_has_nan.index.tolist())]

    test_df_alone = test_df[test_df['K1'].isin(test_df_unique_no_nan.index.tolist())]

    # 去除含nan的重复数据

    test_df_get_nonan = test_df_get[~test_df_get['K2'].isna()]

    # 组合数据

    result = test_df_get_nonan.append(test_df_alone)

    # 去重,得到最终结果

    result_save = result.drop_duplicates(subset=['K1','K2'],keep='last')

    # 结果落地

    result_save.to_excel('C:/Users/zhen/Desktop/数据清洗之去重.xlsx')

    2、测试数据:

    p1.jpg

    3、结果:

    p2.jpg

    专题推荐:python
    上一篇:python入门经典好吗? 下一篇:python如何做可视化界面?

    相关文章推荐

    • 八个数据清洗的Python代码(复制即可使用)• python直方图如何显示值?• 在手机上如何写Python文本?• Python中的函数与方法该怎么区分?• python入门经典好吗?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网