zoukankan      html  css  js  c++  java
  • python初探——pandas使用

    一、简介  

      pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法,pandas为时间序列分析提供了很好的支持。

    二、数据结构

    • Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
    • Time- Series:以时间为索引的Series
    • DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
    • Panel :三维的数组,可以理解为DataFrame的容器。
    Series 和 DataFramePandas自己独有的基本数据结构。应该注意,它固然有着两种数据结构,因为它依然是 Python 的一个库,所以,Python 中有的数据类型在这里依然适用,也同样还可以使用类自己定义数据类型。

    三、使用

    1、series

    # data_structure.py
    
    import pandas as pd
    import numpy as np
    
    series1 = pd.Series([1, 2, 3, 4])
    print("series1:
    {}
    ".format(series1))
    series1:
    0    1
    1    2
    2    3
    3    4
    dtype: int64 #此行表示数据的类型为int64,输出中第一行是index,第二行是value

    我们可以分别打印出Series中的数据和索引:

    # data_structure.py
    
    print("series1.values: {}
    ".format(series1.values))
    
    print("series1.index: {}
    ".format(series1.index))
    series1.values: [1 2 3 4]  #默认的index是从0开始的数字形式
    series1.index: RangeIndex(start=0, stop=4, step=1)
    索引可以是任何数据类型,例如字符串:
    # data_structure.py
    
    series2 = pd.Series([1, 2, 3, 4, 5, 6, 7],
        index=["C", "D", "E", "F", "G", "A", "B"])
    print("series2:
    {}
    ".format(series2))
    print("E is {}
    ".format(series2["E"]))
    series2:
    C    1
    D    2
    E    3
    F    4
    G    5
    A    6
    B    7
    dtype: int64
    
    E is 3

    2、DataFrame

    不指定数据内容,创建一个4*4的DataFrame

    # data_structure.py
    
    df1 = pd.DataFrame(np.arange(16).reshape(4,4))
    print("df1:
    {}
    ".format(df1))

    输出如下(列叫做column,行叫做index,都是从0开始的整数):

    df1:
        0   1   2   3
    0   0   1   2   3
    1   4   5   6   7
    2   8   9  10  11
    3  12  13  14  15

    指定column和index来创建DataFrame:

    # data_structure.py
    
    df2 = pd.DataFrame(np.arange(16).reshape(4,4),
        columns=["column1", "column2", "column3", "column4"],
        index=["a", "b", "c", "d"])
    print("df2:
    {}
    ".format(df2))

    结果如下:

    df2:
       column1  column2  column3  column4
    a        0        1        2        3
    b        4        5        6        7
    c        8        9       10       11
    d       12       13       14       15

    指定数据列创建DataFrame:

    # data_structure.py
    
    df3 = pd.DataFrame({"note" : ["C", "D", "E", "F", "G", "A", "B"],
        "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})
    print("df3:
    {}
    ".format(df3))

    结果如下(DataFrame的不同列可以是不同的数据类型):

    df3:
      note weekday
    0    C     Mon
    1    D     Tue
    2    E     Wed
    3    F     Thu
    4    G     Fri
    5    A     Sat
    6    B     Sun

    添加或者删除列:

    # data_structure.py
    
    df3["No."] = pd.Series([1, 2, 3, 4, 5, 6, 7])
    print("df3:
    {}
    ".format(df3))
    
    del df3["weekday"]
    print("df3:
    {}
    ".format(df3))

    结果如下:

    df3:
      note weekday  No.
    0    C     Mon    1
    1    D     Tue    2
    2    E     Wed    3
    3    F     Thu    4
    4    G     Fri    5
    5    A     Sat    6
    6    B     Sun    7
    
    df3:
      note  No.
    0    C    1
    1    D    2
    2    E    3
    3    F    4
    4    G    5
    5    A    6
    6    B    7

    3、Index对象与数据访问

    • loc:通过行和列的索引来访问数据(定义时的索引)。df.ioc[1:3,1:5],取出第2行至第3行的第2列至第5列的数据。注意不包括第3行,第5列。df.iloc[[1,2],[2,3]]取出第2行和第3行的第3列和第4列数据。
    • iloc:通过行和列的下标来访问数据(从0到N-1的整数,是指行和列的位置)。df.ioc[“a”:“f”,“A”:“C”],取出a行至f行的A列至C列的数据。注意包括f行和C列。df.iloc[[”a“,”b“],[A”“,”B“]]取出a行和b行的A列和B列数据。
    # data_structure.py
    
    print("Note C, D is:
    {}
    ".format(df3.loc[[0, 1], "note"]))  #访问行索引是0和1,列索引是note的元素
    print("Note C, D is:
    {}
    ".format(df3.iloc[[0, 1], 0]))    #访问行下标是0和1,列下标是0的元素

    结果如下(对于df3来说,行下标和行索引是一样的):

    Note C, D is:
    0    C
    1    D
    Name: note, dtype: object
    
    Note C, D is:
    0    C
    1    D
    Name: note, dtype: object

    4、另外pandas还支持对各种类型文件的操作,对无效值和字符串的处理等操作。

  • 相关阅读:
    Activity 横竖屏生命周期
    gradle wrapper, gradle ,gradle plugin 之间的关系
    《构建之法》第八、九章学习总结
    《构建之法》第六、七章学习总结
    《构建之法》第三、四、五章学习总结
    《构建之法》第一、二章学习总结
    SQL练习50题(基于MySQL)后25题
    SQL练习50题(基于MySQL)前25题
    轮播2-css
    轮播1-animate-匀速
  • 原文地址:https://www.cnblogs.com/simpleDi/p/9906259.html
Copyright © 2011-2022 走看看