zoukankan      html  css  js  c++  java
  • 使用pandas,numpy进行数据分析建模的一些常用命令

    1、读取文件为pandas格式:

    import pandas as pd  
    import numpy as np  
    dataset = pd.read_csv("C:/Users/Administrator/Desktop/test.csv",encoding='gbk') 

    这样就读取了一个csv文件作为dataframe格式的文件,结果如下:

    2、查看读取数据的概况和维度使用如下命令:

    dataset.head()      # 若括号不填写任何信息,默认查看df的前五行,当然也可以填写数字,填写几就查看前几行的数据
    dataset.shape       # 查看数据的维度信息,即df数据有几行几列

    3、获取所需字段:

    X = dataset.loc[:,['CLASS_LEVEL','COMBINE_TAG_LEN','TAG_POS','SIMI']]

    这里loc默认是[a,b]这种格式,a代表需要获取行的名称,b代表需要获取列的名称,假如a用:表示意味着获取所有的行,列也同理;上述代码代表就是获取

    CLASS_LEVEL,COMBINE_TAG_LEN等所在列的所有行的数据;
    4、随机抽取数据:
    data_0_random = data_0.sample(n=854)

    上述代码表示对data_0用sample函数随机抽取了854条数据

    5、数据合并:

    aa = [data_1,data_0_random]
    dataset = pd.concat(aa)
    这里也可以用append来代替concat:
    data_1_random = data_1.sample(n=86)
    data_new = data_0.append(data_1_random)
    new_train_data_X = pd.concat([X3,class_id1_df,class_id2_df,class_id3_df],axis =1)

    上述代码表示对data_1和data_0_random进行合并,也就是相当于在data_1的最后一行下将data_0_random都复制过来

    第6行代表将list =[X3,class_id1_df,class_id2_df,class_id3_df]这些列进行合并,这里可以看到axis=1就是代表列的意思;

    6、将list转换为numpy中的array格式:

    import numpy as np
    class_names1 = np.array(['0','1'])

    7、删除df中一列的内容:

    X = dataset.drop('Class', axis=1)

    代表将dataset这个文件中的class列删除,注意axis=1,代表删除列;

    8、数据量太多,但是还是想要显示所有行进行查看:

    import pandas as pd  
    import numpy as np 
    np.set_printoptions(threshold=np.inf)
    pd.set_option('display.max_columns', None)
    pd.set_option('display.max_rows', None)

    在代码最前端输入上述三行代码,即可在进行数据分析时候显示所有的读取数据

    9、对字符数据进行one-hot编码:

    1 import pandas as pd  
    2 import numpy as np 
    3 dataset = pd.read_csv(open("C:/Users/Administrator/Desktop/test.csv",'r',encoding='gbk')) 
    4 X = dataset.loc[:,['CLASS_ID1','TAG_POS1','TAG_SIMI1','CLASS_ID2','TAG_POS2','TAG_SIMI2','CLASS_ID3','TAG_POS3','TAG_SIMI3']]
    5 class_id1_df = pd.DataFrame()
    6 class_id1_df = pd.get_dummies(X['CLASS_ID1'],prefix = 'CLASS_ID1')

    这里选取class_id1进行one-hot编码,即将字符变为[0,1,1,10]类似这种形式的数字编码,从而方便后期进行建模;

    核心编码就两行,第5行代表初始化一个编码结果的空表,第6行代表对class_id1进行one-hot编码,其中prefix代表需要编码的那一列;

    10、数据映射:

    from pandas import Series
    data  = [[0,1,0,0,0,0],[0,0,1,0,0,0]]
    sl = Series(data,index = ['A01','A02'])
    sl
    输出:
    A01    [0, 1, 0, 0, 0, 0]
    A02    [0, 0, 1, 0, 0, 0]
    dtype: object

    11、选取一列等于某个值的数据,类似SQL中的select。。。where语句

    data_0 = dataset.loc[dataset['MARK_RESULT']==0]             # 选取mark=1的值
    data_1 = dataset.loc[dataset['MARK_RESULT']==1]             # 选取mark=1的值

    12、查看相关系数矩阵:

    dataset_corr = data_new.corr()
    dataset_corr['MARK_RESULT'].sort_values(ascending = False)

    在进行数据分析的时候往往要查看所有的自变量中哪两个属性的相关系数较大,从而选取一些典型的特征属性来建模,效果才会更好,可以用corr()方法来进行相关系数计算,并且还

    可以对某个属性按照相关系数大小进行排列,从而找到与某个属性最相关的其他属性;

    13、获取df某些列的数据,并且按照array格式进行查看:

    data = dataset.loc[:, ['CLASS_LEVEL', 'COMBINE_TAG_LEN', 'TAG_POS','TAG_ORDER_POS', 'SIMI']].values 
    data
    输出:
    array([[3.  , 2.  , 0.95, 3.  , 0.65],
           [5.  , 5.  , 0.95, 3.  , 0.65],
           [2.  , 2.  , 0.95, 1.  , 0.95],
           ...,
           [4.  , 2.  , 0.95, 1.  , 0.55],
           [4.  , 3.  , 0.95, 3.  , 0.75],
           [3.  , 2.  , 0.95, 1.  , 0.95]])

    只需要用values方法即可;

    14、df中新添加一列,并且该列为其他两列之和:

    dataset['plus']=dataset['A']+dataset['B']
    dataset

    在dataset中新增加一列plus,并且该列为A列和B列的和;

  • 相关阅读:
    (转)A*算法详解及习题
    BZOJ1444[Jsoi2009]有趣的游戏——AC自动机+概率DP+矩阵乘法
    交通——set+dsu on tree
    [Codeforces1132G]Greedy Subsequences——线段树+单调栈
    BZOJ4482[Jsoi2015]套娃——贪心+set
    BZOJ4477[Jsoi2015]字符串树——可持久化trie树
    BZOJ4475[Jsoi2015]子集选取——递推(结论题)
    [UOJ86]mx的组合数——NTT+数位DP+原根与指标+卢卡斯定理
    BZOJ2428[HAOI2006]均分数据——模拟退火
    BZOJ4712洪水——动态DP+树链剖分+线段树
  • 原文地址:https://www.cnblogs.com/zxyza/p/10118654.html
Copyright © 2011-2022 走看看