zoukankan      html  css  js  c++  java
  • 十分钟了解pandas

    十分钟掌握Pandas(上)——来自官网API

    一、numpy和pandas

    numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍。

    pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

    二、数据类型

    numpy pandas
    ndArray相当于n维矩阵 Series(类似一维数组,或者kv值对)
    在numpy中只有ndArray一种,但是ndArray有很多种数据类型 DataFrame(使用csv读入数据是dataFrame)

    二、官网API

    2.1.Object craetion

    因为pandas基于numpy进行开发,所以,我们要引入pandas的同时进行引入numpy

    import numpy as np
    import pandas as pd
    

    我们创建一个integer索引的Series

    s = pd.Series([1,3,5,np.nan,6,8])
    print(s)
    

    创建一个DataFrame类型,使用NumPy的数组,index是行,columns是列

    df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
    print(df)
    

    这边是另一种创建方式

    df2 = pd.DataFrame({
        'A':1.,
        'B':pd.Timestamp('20130102'),
        'C':pd.Series(1,index=list(range(4)),dtype='float32'),
        'D':np.array([3]*4,dtype='int32'),
        'E':pd.Categorical(["test","train","test","train"]),
        'F':'foo'
    })
    print(df2)
    

    我们从头查看,或者从尾查看

    df.head()
    df.tail(3)
    

    Series使用to_numpy()转换为ndArray格式

    df.to_numpy()
    

    我们的DataFrame格式,也可以使用to_numpy()进行转换

    df2.to_numpy()
    

    使用df.describe进行查看DataFrame的属性

    df.describe()
    

    使用T属性,可以查看DataFrame的转置

    df.T
    

    使用sort_index可以进行按照索引行列进行排序,指定axis维度为0按照列进行排序,指定axis维度为1按照行进行排序,ascending为False为逆序排序,True为正序进行排序

    df.sort_index(axis=1,ascending=False)
    

    按照值进行排序

    df.sort_values(by='B')
    
    2.2.Selection

    注意,我们标准的Python/Numpy表达选择是直接查看,如果我们数据量庞大,则会使用.at,.iat,.loc和.iloc进行间接获取数据

    Getting

    直接获取一个列

    df['A']
    

    切片获取

    df[0:3]
    

    Selection by label

    获取标签行

    df.loc[dates[0]]
    
    2.3.Select by position

    通过索引位置进行获取

    df.iloc[3]
    

    位置仍然可以通过行列或者切片方式

    2.4.Boolean indexing

    布尔选择器

    df[df.A>0]
    

    我们可以通过isin()方法进行过滤pandas表

    df2=df.copy()//拷贝
    df2['E']=['one','two','three','four','five']//插入新列
    df2[df2['E'].isin('two','three')] //进行选择过滤
    
    2.5.Setting

    设置一个新列进行设置

    我们的一个列相当于一个Series格式,现在我们发现Pandas的行相当于一个二维的Series进行封装

    s1 = pd.Series([1,2,3,4],index=pd.date_range('20130102',periods=4))
    df['F']=s1
    

    通过标签进行设置值

    df.at[dates[0],'A']=0
    

    通过值来进行定位

    df.iat[0,1]=0
    
    2.6.Missing data

    缺失数据值,pandas 最初使用np.nan进行代表缺失值,比如无法计算,会使用Nan进行代替

    reindex重建方法

    df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
    

    去掉丢失数据的行

    df1.dropna(how='any')
    

    填充缺失的数据

    df1.fillna(value=5)
    

    bool判断是否为na

    df1.isna(df1)
    
    2.7.operations

    求平均,axis设置为0,1为根据行或者列进行求平均

    df.mean(0)
    df.mean(1)
    

    去掉前两个值,下次依次执行了2次shift,去掉了前面四个值

    s=pd.Series([1,3,5,np.nan,6,8],index=dates)
    s=s.shift(2)
    s=s.shift(2)
    s
    
  • 相关阅读:
    剑指offer——二叉树的深度
    剑指offer——约瑟夫环
    剑指offer——矩阵中的路径
    剑指offer——机器人的运动范围
    Java一些知识
    剑指offer——判断链表中是否有环
    无序数组array, 找到数组中两个数的最大差值
    剑指offer——二叉搜索树的第k个节点
    记录结果再利用的"动态规划"之背包问题
    倍增算法
  • 原文地址:https://www.cnblogs.com/littlepage/p/11976815.html
Copyright © 2011-2022 走看看