zoukankan      html  css  js  c++  java
  • 十分钟掌握Pandas(上)——来自官网API

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

    其实不止10分钟,这么多,至少一天

    一、numpy和pandas

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

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

     

    二、数据类型

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

     

    二、官网API

    1.API之前,我们应该学习数据导入

    pandas可以导入csv数据集

    import pandas as pd

    food_info = pd.read_csv("xxx.csv")
    print(type(food_info))
    print(food_info)
    2.pd.Series 获取一个Series类型
    import numpy as np
    import pandas as pd
    # 我们可以发现,这边可以使用numpy,证明pandas是基于numpy构建的
    s = pd.Series([1,3,5,np.nan,6,8])
    print(s)
    打印
    0   1.0
    1   3.0
    2   5.0
    3   NaN
    4   6.0
    5   8.0
    dtype: float64
    3.获取日期

    从第一个date开始,获取6个连续日期

    dates = pd.date_range('20130101',periods=6)
    dates
    打印
    DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
                  '2013-01-05', '2013-01-06'],
                dtype='datetime64[ns]', freq='D')
    4.第一次使用dataframe类型

    np.random.randn(6,4) 获取6行4列数据集

    index是列

    columns是行

    df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
    df
    打印结果
    A B C D
    2013-01-01 0.284681 1.881328 0.310425 -2.527329
    2013-01-02 -0.209723 -1.410186 0.865336 0.893260
    2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
    2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
    2013-01-05 0.275501 -0.844457 -0.954631 2.312578
    2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
    5.查看数据类型
    df2.dtypes
    A           float64
    B   datetime64[ns]
    C           float32
    D             int32
    E         category
    F           object
    dtype: object
    6.查看前两行
    df.head(2)
    A   B   C   D
    2013-01-01 0.284681 1.881328 0.310425 -2.527329
    2013-01-02 -0.209723 -1.410186 0.865336 0.893260
    7.查看尾三行
    df.tail(3)
    A   B   C   D
    2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
    2013-01-05 0.275501 -0.844457 -0.954631 2.312578
    2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
    8.查看索引(行名)
    df.index
    DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
                  '2013-01-05', '2013-01-06'],
                dtype='datetime64[ns]', freq='D')
    9.查看列名
    df.columns
    Index(['A', 'B', 'C', 'D'], dtype='object')
    10.转化为numpy类型的数组
    df.to_numpy()
    array([[ 0.28468077,  1.8813276 ,  0.31042514, -2.52732926],
          [-0.20972286, -1.41018638, 0.86533622, 0.89325968],
          [-0.09557804, 0.57628249, -1.34705203, -0.05537029],
          [-1.21652719, 0.42374501, -1.11066844, -1.6824053 ],
          [ 0.27550116, -0.84445705, -0.95463056, 2.31257796],
          [-1.38455249, 1.53925476, -1.49907627, -0.91612064]])
    11.查看描述
    df.describe()
    A   B   C   D
    count 6.000000 6.000000 6.000000 6.000000
    mean -0.391033 0.360994 -0.622611 -0.329231
    std 0.733423 1.291526 0.972213 1.763848
    min -1.384552 -1.410186 -1.499076 -2.527329
    25% -0.964826 -0.527407 -1.287956 -1.490834
    50% -0.152650 0.500014 -1.032650 -0.485745
    75% 0.182731 1.298512 -0.005839 0.656102
    max 0.284681 1.881328 0.865336 2.312578

    依次为:总数、均值、标准差、最小值、25%的值、50%的值、75%的值、最大值

    12.转置矩阵
    df.T
        2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06
    A 0.284681 -0.209723 -0.095578 -1.216527 0.275501 -1.384552
    B 1.881328 -1.410186 0.576282 0.423745 -0.844457 1.539255
    C 0.310425 0.865336 -1.347052 -1.110668 -0.954631 -1.499076
    D -2.527329 0.893260 -0.055370 -1.682405 2.312578 -0.916121
    13.索引排序,按照维度为一(即横坐标),排序,升序为false
    df.sort_index(axis=1,ascending=False)

    D C B A
    2013-01-01 -2.527329 0.310425 1.881328 0.284681
    2013-01-02 0.893260 0.865336 -1.410186 -0.209723
    2013-01-03 -0.055370 -1.347052 0.576282 -0.095578
    2013-01-04 -1.682405 -1.110668 0.423745 -1.216527
    2013-01-05 2.312578 -0.954631 -0.844457 0.275501
    2013-01-06 -0.916121 -1.499076 1.539255 -1.384552
    14.按照B进行横向排序
    df.sort_values(by='B')
    A   B   C   D
    2013-01-02 -0.209723 -1.410186 0.865336 0.893260
    2013-01-05 0.275501 -0.844457 -0.954631 2.312578
    2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
    2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
    2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
    2013-01-01 0.284681 1.881328 0.310425 -2.527329
    15.获取列标为'A'的
    df['A']
    2013-01-01    0.284681
    2013-01-02   -0.209723
    2013-01-03   -0.095578
    2013-01-04   -1.216527
    2013-01-05   0.275501
    2013-01-06   -1.384552
    Freq: D, Name: A, dtype: float64
    16.获取横标切片
    df[0:3]
    A   B   C   D
    2013-01-01 0.284681 1.881328 0.310425 -2.527329
    2013-01-02 -0.209723 -1.410186 0.865336 0.893260
    2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
    17.获取横标切片(value)
    df['20130102':'20130104']
    A   B   C   D
    2013-01-02 -0.209723 -1.410186 0.865336 0.893260
    2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
    2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
    18.获取第一行
    df.loc[dates[0]]
    A    0.284681
    B   1.881328
    C   0.310425
    D   -2.527329
    Name: 2013-01-01 00:00:00, dtype: float64
    19.获取行切片
    df.loc[:,['A','B']]
    A   B
    2013-01-01 0.284681 1.881328
    2013-01-02 -0.209723 -1.410186
    2013-01-03 -0.095578 0.576282
    2013-01-04 -1.216527 0.423745
    2013-01-05 0.275501 -0.844457
    2013-01-06 -1.384552 1.539255
    df.loc['20130102':'20130104',['A','B']]
    df.loc['20130102',['A','B']]
    20.获取唯一元素
    df.loc[dates[0],'A']//这是唯一元素
    df.at[dates[0],'A']//与上面一样,官网这样解释For getting fast access to a scalar,更快的访问维度数据
    21.通过索引获取第一行(之前的loc是通过值获取行)
    df.iloc[3]
    A    1.191786
    B   -1.384943
    C   -1.463160
    D   0.527332
    Name: 2013-01-04 00:00:00, dtype: float64
    22.索引获取切片
    df.iloc[3:5,0:2]
    df.iloc[[1,2,4],[0,2]]
    df.iloc[1:3,:]
    df.iloc[1,1]
    df.iat[1,1]
    df[df.A>0]
    23.拷贝赋值
    df2 = df.copy()
    df2['E'] = ['one','two','three','four','five','six']
    df2

    结果多一列E

    24.进行判断是否贼取值
    df2[df2['E'].isin(['two','four'])]
    输出:
    A B C D E
    2013-01-02 0.847134 -0.003377 0.353925 0.438065 two
    2013-01-04 1.191786 -1.384943 -1.463160 0.527332 four
    25.进行按照日期取6个序列
    s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range('20130102',periods=6))
    s1
    26.进行取赋值
    df['F']=s1
    df
    A   B   C   D   F
    2013-01-01 0.284681 1.881328 0.310425 -2.527329 NaN
    2013-01-02 -0.209723 -1.410186 0.865336 0.893260 1.0
    2013-01-03 -0.095578 0.576282 -1.347052 -0.055370 2.0
    2013-01-04 -1.216527 0.423745 -1.110668 -1.682405 3.0
    2013-01-05 0.275501 -0.844457 -0.954631 2.312578 4.0
    2013-01-06 -1.384552 1.539255 -1.499076 -0.916121 5.0

     

  • 相关阅读:
    OpenDaylight二层转发机制实验
    OpenvSwitch的GRE、Vxlan隧道
    Open vSwitch实验
    实验五 RYU控制器基本应用
    实验四 POX控制器编程实验指导
    实验二 OpenFlow应用实践
    SDN实验三 OpenFlow协议分析
    SDN实验一:mininet应用实践
    序列幂次求和的快速计算
    luogu P1409 骰子 题解
  • 原文地址:https://www.cnblogs.com/littlepage/p/11964838.html
Copyright © 2011-2022 走看看