zoukankan      html  css  js  c++  java
  • numpy和pandas 各种比较常见的用法总结

    numpy和pandas 各种比较常见的用法总结

    一、总结

    一句话总结:

    numpy的结构是纯粹的ndarray,而pandas的是Series(单维)和DataFrame(多维)

    1、numpy库中创建数组方法array和asarray的区别?

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,【array仍然会copy出一个副本,占用新的内存,但asarray不会】

    意思是对数据源进行重新赋值的话,array转化后的数据不变,asarray转化后的数据也会跟着数据源重新被赋值。

    二、numpy和pandas 各种比较常见的用法总结

    转自或参考:numpy和pandas 各种比较常见的用法总结 - 编程小虾米 - 博客园
    https://www.cnblogs.com/lmcltj/p/10960686.html

    一、numpy

    1、numpy中reshape的用法

    经常会遇到np.reshape(a,-1) 或者np.reshape(-1,a) 这样的情况(a=1,2,3,4,5),-1是一个比较神奇的功能,意思是我只要确定需要分成a行后者a列,剩下的数据你随便分,反正结果都一样。

    例:

    arr =np.array([1,2,3,4,5,6,7,8,9,10,11,12])一个一维的ndarry数组,长度为9

    如果我想把它变成3x3的矩阵,可以直接arr.reshape(3,4),也可以用以上方法arr.reshape(3,-1) 或者arr.reshape(-1,4) ,最终的结果都一样

     

    2、numpy中zeros_like的用法

    numpy.zeros_like(a,dtype=Noneorder='K'subok=True)

    该行代码会返回形状和数据类型和a相同且元素都为0的数组

    3、array和asarray的区别

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会,意思是对数据源进行重新赋值的话,array转化后的数据不变,asarray转化后的数据也会跟着数据源重新被赋值。

    二、pandas

    1、DataFrame

     取出DataFrame的所有标签名:

    columns = data.columns

    对DataFrame中的缺失值进行统计:

    null_counts = data.isnull().sum()   # 统计所有有缺失值列的缺失值个数,要统计某一列直接进行指定即可,比如data['target'].isnull().sum() 

    去掉缺失值最多的列:

    data= data.drop('target',axis=1)  # 去掉缺失值最多的列,以target为例

    去掉有缺失值的样本:

    data= data.dropna(axis=0)  # 去掉有缺失值的样本

    对缺失值进行填充:

    notnull_feature = data.fillna(np.mean(0))  # 这里填充的是每一列的平均值,也可以直接填0

    统计数据类型以及筛选:

    dtypes = data.dtypes.value_counts()

    object_columns = data.select_dtypes(include=['object'])   #有字符型的数据会被选出来分析

    转换数据类型astype():

    data = data.astype('float')   #. type 获取数据类型 ;dtype 获取数组元素的类型

    将数据中的文本转化为数字:

    data = pd.get_dummies(data,dummy_na=True)

    一般数据比较大的时候,我们可以先读取第一行,观察数据结构,或者直接打印前五行

    data_0 = data.iloc[0]  # 第一行

    data_5 = data.head  # 前五行

    data_info = data.info() #显示数据综合信息,个数、类型。。。

    DataFrame数据结构非常灵活,可以通过多种方法提取出自己想要的列或者想要的行:

    data= data[(data['target']=='car') | (data['target']=='truck')]   # 提取某一列下car和truck两个分类,如果该列还有其他类别,该类别以及类别横向对应的数据都会舍弃

    去掉重复项:

    data.drop_duplicates()

    传入字典,可以对某一列的类别进行替换:

     status_replace = {'loan_status':{'Fully Paid':1,'Charged Off':0} }

     data= data.replace(status_replace)  #将loan_status列的两个属性进行替换

    横向拼接:

     data= pd.concat([loans, dummy_df], axis=1)   # 横向拼接

    特征列与标签列进行分离:

    feature = data.iloc[:,data.columns!='Class']
    labels = data.iloc[:,data.columns=='Class']

    2、Series

    如果要统计某一列的唯一值可以用unique(),只支持Series数据类型因此使用的时候只能针对DataFrame某一列:

    unique = data['target'].unique()

    DataFrame数据结构可以看做是很多个Series共用一列index,有个values_count()可以统计某列数据的类别分别是多少,只支持Series数据类型因此使用的时候只能针对DataFrame某一列:

    values_count = data['TARGET'].value_counts()

    values_count .index   #TARGET的类别

    values_count .values  #TARGET类别对应的个数



     
  • 相关阅读:
    ITIL 4Foundation认证
    Linux服务器安全之 fail2ban的安装与配置
    Linux的常用基础命令
    jQuery源码学习(2):选择器初窥
    jQuery源码学习(1):整体架构
    从字符串拼接看JS优化原则
    理解函数作用域与闭包
    JavaScript DOM节点操作总结
    函数声明与函数表达式、变量提升
    CSS长度单位详解
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13232313.html
Copyright © 2011-2022 走看看