• Pandas 数据清洗常见方法


    Pandas 数据清洗常见方法

    01 读取数据

    df=pd.read_csv('文件名称')
    

    02 查看数据特征

    df.info()
    

    03 查看数据量

    df.shape
    

    04 查看各数字类型的统计量

    df.describe()
    

    05 去除重复值

    df.drop_duplicates(inplace=True)
    

    06 重置索引

    data.reset_index(inplace=True,drop=True)
    

    07 查看缺失值信息

    data.loc[data['列名'].isnull()]
    

    01 每一列数据的缺失值进行统计

    data.isnull().sum()
    

    08 填充缺失值

    # 用0填充
    data=data.fina(0)
    
    # 将这一列的空值填充为平均值,类型为int类型
    df_all['列名'] = df_all.列名.fillna(int(df_all.列名.mean())).astype('int')
    

    09 查看是否还有空值

    data.isnull().any()
    

    10 对某列数据计数统计

    data['列名'].value_counts
    

    11 对某列数据计数并排序

    data['列名'].value_counts().sort_values()
    

    01 统计店名的销售额,并排序

    data.groupby('店名')['销售额'].sum().sort_values
    

    12 遍历查看数据集所有列的数据类型

    cols=df_tm.columns
    for col in cols:
    	print(col+':'+str(df_tm[col].dtype))
    

    13 转换数据类型

    df['列名']=df.列名.astype('int')
    

    01 去掉温度列后的℃,并将数据转为int类型

    df.loc[:,'bwendu']=df['bwendu'].str.replace('℃','').astype('int32')
    

    02 对某列数据转换类型

    data['列名']=data['列名'].astype(int)
    

    14 删除指定列中有空值的行

    mydf.dropna(subset=['列名'],inplace=True)
    mysf=mydf.dropna(subset=['列名'])
    

    15 过滤某列中不符合类型的数据

    data=data[`data['列名'].isin(['你好'])]
    

    16 转换时间格式

    例:20110/02/02====》202-02-02

    data['列名']=pd.to_datetime(data)['time']
    

    17 删除某列

    data.drop(['列名'],axis=1,inplace=True)
    

    18 重命名列

    rename_list={'原列名1:'新列名1',...}
    df.rename(rename_list,axis=1,inplace=True)
    

    19 提取多列数据

    df[['列1','列2','列3']]
    

    20 多表合并

    df_all=pd.merge(table1,table2,on='参照列',how='inner')
    

    21 去除空格

    a.replace('s+','',regex=True,inplace=True) 
    

    典型案例

    01 提取国家和城市,生成新列

    image-20201021111102299

    # ciy: 提取国家和城市
    def transform_country(x):
        if '中国' in x:
            return '中国'
        else:
            return x 
        
    def transform_city(x):
        if '中国' in x:
            return x[2:]
        else:
            return x 
    
    df_all['country'] = df_all.city.map(lambda x: transform_country(x))
    df_all['city'] = df_all.city.map(lambda x: transform_city(x))
    

    image-20201021111204599

    02 提取数值

    image-20201021111601709

    # height:提取数值
    df_all['height'] = df_all.height.str.extract('(d+)').astype('int')
    df_all.head(2) 
    

    image-20201021111515109

    03 提取年龄

    image-20201021111657124

    # age: 提取年龄
    df_all['age'] = df_all.age.str.extract('.*?s*((.*?)岁)').astype('float')
    df_all.head(2)
    

    image-2020102111174978004 循环遍历某列所有数据,在后面加上指定字段:

    image-20201021151124693

    data['列名'].apply(lambda x:str(x)+'天')
    

    注释:str(x) 为了将数据转换为字符类型

    image-20201021151750560

    05 提取汉字

    image-20201021151941526

    df4['name'] = df4.name.str.extract('([u4e00-u9fa5]+)')
    

    image-20201021152010672

    06 时间索引格式转换为普通列表格式

    m3 = data1['出发时间'].value_counts().sort_index()[:]
    m4 = m3['2020'].index
    n4 = m3['2020'].values.tolist()
    # 将其转化为时间格式的数组
    a1 = m4.to_pydatetime()
    # 时间转换成以下格式
    a2 = np.vectorize(lambda s: s.strftime('%Y-%m-%d'))(a1)
    
    a3 = pd.Series(a2).tolist
    

    输出m4,如下图所示

    image-20201021153522738

    输出a1,如下

    image-20201021154325579

    输出a2 ,如下

    image-20201021154420999

    输出a3,如下

    image-20201021154449245

  • 相关阅读:
    错题本
    前端常用的代码片段
    前端生成二维码 jquery.qrcode.js
    jquery获取第几个元素的方法总结
    Jquery 获取第一个子元素
    个人作品(2016.3.17更新)
    360度全景制作
    期末项目_通用教学管理系统(季远琦&庞思瑶)
    java ee 第四周作业
    Web Service和EJB的区别
  • 原文地址:https://www.cnblogs.com/James-221/p/13853032.html
Copyright © 2020-2023  润新知