zoukankan      html  css  js  c++  java
  • 数据分析之----NumPy和Pandas

    Numpy中文文档

    numpy使用

    Numpy是高性能科学计算和数据分析的基础包.

    Numpy的主要功能:

      • ndarray,一个多维数组结构,高效且节省空间
      • 无需循环对整组数据进行快速运算的数学函数
      • *读写磁盘数据的工具以及用于操作内存映射文件的工具
      • *线性代数、随机数生成和傅里叶变换功能
      • *用于集成C、C++等代码的工具

    创建ndarray数组对象

    np.array([1,2,3])
    
    np.arange()            # 和python的range()一样,生成数组
    
    np.linspace(0,10,5)   # 返回间隔均匀的数组,第三个参数是生成样本的个数。
    
    np.zeros([3,5])        # 根据指定形状,创建全0数组
    
    np.ones([3,5])         # 根据指定形状,创建全1数组
    
    np.empty([2, 2], dtype=int)  #根据指定形状和dtype创建空数组(随机值)
    

    ndarray的索引和切片

    # 运算
    a=np.arange(5)
    a + 1
    
    # 索引
    a1 = np.array([[1,2,3],[4,5,6,],[7,8,9]])
    a1[1][0]  # 4
    a1[1,0]   # 4
    
    # 切片(与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组)
    a = np.arange(5)
    b = a[:3]         # 此时是浅拷贝
    b = a[:3].copy()  # 此时是深拷贝
    

    Numpy:布尔型索引

    # 1.布尔型索引
    a = np.array([1,4,7,9,14,18])
    
    a>5     # [False, False,  True,  True,  True,  True] 
    a[a>5]  # [7,9,14,18]
    
    # 2.与和或
    a[(a>5) & (a%2==0)]   # [14, 18]
    a[(a>5) | (a%2==0)]   # [ 4,  7,  9, 14, 18]
    

    花式索引

    a = np.arange(10)
    
    # 选出其第1,3,4,6,7个元素
    a[[1,3,4,6,7]]
    
    # 对一个二维数组,选出其第一列和第三列,组成新的二维数组。
    a[:,[1,3]] # 在多维数组中,a[代表行,代表列]
    

    NumPy通用函数

    import math
    abs,sqrt
    
    
    ceil  # 向上去整
    	np.ceil(3.5)   # 4.0
    	np.ceil(-3.5   # -3.0
    	
    floor # 向下取整
    	np.floor(3.5)  # 3
    	np.floor(-3.5) # -4	
    	
    trunc # 向零取整
    	np.trunc(-3.5)  # -3.0
    	np.trunc(3.5)   # 3.0	
    	
    modf  
    	a = np.array([1.1,2.2,3.3]) # [1.1, 2.2, 3.3]
    	np.modf(a)  # [0.1, 0.2, 0.3],[1.0, 2.0, 3.0]
    
    isnan
    	np.isnan(np.nan)  # True
    	np.isnan(0)       # False
    	
    isinf # 无限大 infinit
    	a = np.array([1,2,3])
    	b = np.array([0,2,3])
    	c = a/b         # [ inf, 1, 1]
    	np.isinf(c[0])  # True
    	  
      
    

    random随机数

    rand		给定形状产生随机数组(0到1之间的数)
    randint		给定形状产生随机整数
    choice		给定形状产生随机选择
    shuffle		与random.shuffle相同
    uniform		给定形状产生随机数组
    

    pandas

    • pandas是一个强大的Python数据分析的工具包。

    • pandas是基于NumPy构建的。

    • pandas的主要功能

      • 具备对其功能的数据结构DataFrame、Series
      • 集成时间序列功能
      • 提供丰富的数学运算和操作
      • 灵活处理缺失数据
    • 安装方法:pip install pandas

    • 引用方法:import pandas as pd

      pandas:Series

    Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。

    创建Series对象

    In [37]: pd.Series([1,3,5,7,9],index=["a","b","c","d","e"])
    Out[37]: 
    a    1
    b    3
    c    5
    d    7
    e    9
    
    
    In [39]: pd.Series({"a":1,"b":2})
    Out[39]: 
    a    1
    b    2
    

    数据对齐

    a1 = pd.Series([1,2,3], index=["c","a","d"]) 
     
    a3 = pd.Series([2,4,6,8], index=list("abcd"))
     
    In [58]: a4 = a1+a3
    Out[58]: 
    a     4.0
    b     NaN
    c     7.0
    d    11.0
    
    # NaN(Not a Number)来表示缺失数据
    # 处理缺失数据的方法
     
    a4.dropna()  # 舍弃值为NaN的行
    a4.fillna(0) # 填充缺失数据
    a4[a4.notnull()] # 舍弃
    a4[a4.isnull()] #
     
    
    

    DataFrame对象

    • DataFrame是一个表格型的数据结构,含有一组有序的列。

    • DataFrame可以被看做是由Series组成的字典,并且共用一个索引。

    创建DataFrame对象

    # 1.手动创建
    df = pd.DataFrame({
      	"one":pd.Series([1,2,3], index=["a","b","c"]),
      	"two":pd.Series([1,2,3,4], index=[list("abcd")])
      })
      
    out:
     one  two
    a  1.0    1
    b  2.0    2
    c  3.0    3
    d  NaN    4
    
    
    # 2.读取csv文件
    df = pd.read_csv("filename.csv")
    
    df.index    # 获取索引
    df.T        # 矩阵转置
    df.columns  # 获取列索引
    df.values   # 把值读成多维数组
    
    df.sort_index(axis=0,ascending=True)  
    # axis=0按列进行排序,axis=1按行进行排序,ascending=True 升序排列
    
    df.sort_values(by=["close"], ascending=True,inplace=True)
    # 按照"close"进行升序排列,inplace=True,表示覆盖原来的df数据。
    
    
    # 3.DataFrame索引和切片,loc和iloc下 [表示行,表示列]
    df["close"]   # DataFrame对象变Series对象
    df[["close","open"]]
    
    # 4. loc
    df.loc[0:10,['close','open']] # 取0-10行索引,列字段"close","open"
    
    # 5. iloc
    df.iloc[3]        # 取第三行数据
    df.iloc[3,3]      # 取第三行,第三列那个值
    df.iloc[0:3,4:6]  # 取0,1,2行 和 4,5列 
    
    # 6.DataFrame常用方法
    df1.applymap(lambda x: x+1)  # 将每个数据都加1
    

    pandas从文件读取

    1.从文件读取
    pd.read_csv("filename.csv") # 默认分割符为 ","
    pd.read_table()             #默认分割符为 	
    
    # 可加的参数
    sep		    指定分隔符,可用正则表达式如's+'
    header=None	指定文件无列名,默认填充0,1,2,3
    names		指定列名
    index_col	指定某列作为行索引
    na_values	指定某些字符串表示缺失值
    parse_dates	指定某些列是否被解析为日期,传布尔值或列表
    
    df = pd.read_csv("601318.csv",index_col="date",parse_dates=True,na_values=["None","NaN"])
    
    
    
    # 2.从文件写入
    to_csv("filename.csv")   # 自动加一列索引列
    
    sep
    na_rep		指定缺失值转换的字符串,默认为空字符串
    header=False	不输出列名一行
    index=False	不输出行索引一列
    cols=["close","open"]		指定输出的列,传入列表
    
    

    pandas:时间对象处理

    # 1.处理字符串时间
    import dateutil
    In [172]: dateutil.parser.parse("2013-03-03")
    Out[172]: datetime.datetime(2013, 3, 3, 0, 0)
    
    # 2.产生时间对象数组
    pd.date_range("2017-07-01", "2017-08-31",freq="B")
    
    # freq 时间频率,默认为'D',可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),…
    	
    pd.date_range("2017-07-01", periods=100)  #  产生100天时间对象
    
  • 相关阅读:
    Beans
    Redis记录-Redis命令
    Redis记录-Redis介绍
    RESTful记录-RESTful服务
    RESTful记录-RESTful内容
    RESTful记录-RESTful介绍
    HTTP记录-HTTP介绍
    Solr记录-solr检索和查询数据
    Solr记录-solr文档xml
    Solr记录-solr内核与索引
  • 原文地址:https://www.cnblogs.com/zouruncheng/p/7406451.html
Copyright © 2011-2022 走看看