• 【python数据分析基础】—对列操作:获取DataFrame不同的类型columns



    前言

    在DataFrame进行数据分析时,我们时常会想对DataFrame的所有列进行数据清洗操作,比如转换不同字段的数据类型,但如果DataFrame字段比较多,一列列数据引用进行数据处理显现效率比较低,使用DataFrame.columns方法获取的结果可以观察到列名和数据类型,但是无法直接对得到的结果进行操作。因此本文主要介绍返回DataFrame的列名的不同类型,我们对此进行操作。


    一、生成不同类型的列名

    创建DataFrame

    import pandas as pd 
    df=pd.DataFrame([1,2,3],[4,5,6],[7,8,9],columns=['ABC'])
    df
    
    • 1
    • 2
    • 3

    最常用方法

    df.columns
    print(type(df.columns))
    
    • 1
    • 2

    在这里插入图片描述

    这种方法获取的结果是可以观察到列名和数据类型,但是无法直接对得到的结果进行操作。

    1.获取数组类型的结果

    df.columns.values
    
    • 1

    在这里插入图片描述

    2.获取list类型的结果

    df.columns.values.tolist()
    df.columns.tolist()
    [columns for column in df]
    list(df.columns.values)
    list(df)
    list(df.columns)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述


    二、实际应用

    导入数据

    import os 
    import pandas as pd
    import numpy as np
    
    def read_file(filepath):
        os.chdir(os.path.dirname(filepath))
        return pd.read_csv(os.path.basename(filepath),encoding='utf-8')
    
    file_pos="F:\\python_machine_learing_work\\501_model\\data\\第一次建模用的样本数据\\训练集\\v1_6_feature.csv"
    
    data_pos=read_file(file_pos)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    查看数据情况

    data_pos.shape
    data_pos.dtypes
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    数据预处理:删除无关变量及字段类型转化。对所有列进行操作,使用"for key in list(data.columns):"。

    #删除无关变量
    data_pos_1=data_pos.drop(['billing_nbr','start_date','channel_type_desc'],axis = 1)
    
    def category_continuous_resolution(data,variable_category):
        for key in list(data.columns):
            if key not in variable_category:
                variable_continuous.append(key)
            else:
                continue
        return variable_continuous
    
    #字段类型转化
    def feature_type_change(data,variable_category):
        '''
        字段类型转化
        '''
        for col_key in list(data.columns):
            if col_key in variable_category:
                data[col_key]=data[col_key].astype(eval('object'),copy=False)
            else:
                data[col_key]=data[col_key].astype(eval('float'),copy=False)
        return data
    
    
    #字段按照类型拆分
    variable_category=['channel_type_desc_1','payment_method_name_1','data_source'] #分类变量
    variable_continuous = [] #连续变量
    
    variable_continuous = category_continuous_resolution(data_pos_1,variable_category)
    data_pos_2=feature_type_change(data_pos_1,variable_category)
    data_pos_2.dtypes
    
    • 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

    在这里插入图片描述


    参考文章:
    https://zhuanlan.zhihu.com/p/110185625

  • 相关阅读:
    软件项目测试指南
    1024程序员节主题征文 | 35种语言输出1024
    算法训练---Day2
    从裸机开始安装ubuntu系统到安装NVIDIA驱动
    QString::fromLocal8Bit
    Vue组件化
    代码随想录算法训练营第六十三天 |84.柱状图中最大的矩形
    HTML
    Pandas 操作数据(二)
    互联网加竞赛 机器视觉目标检测 - opencv 深度学习
  • 原文地址:https://blog.csdn.net/sodaloveer/article/details/133086171