• pandas基本介绍-【老鱼学pandas】


    前面我们学习了numpy,现在我们来学习一下pandas。
    Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头、数据序列号以及实际的数据,而numpy就仅仅包含了实际的数据。

    安装

    直接输入:

    pip3 install pandas
    

    最基本用法

    import pandas as pd
    s = pd.Series([1, 2, 5, 6])
    print(s)
    

    输出:

    0    1
    1    2
    2    5
    3    6
    dtype: int64
    

    我们可以看到pandas自动添加了数据的序列号。

    自定义索引项和列名

    import pandas as pd
    import numpy as np
    # 创建一个日期索引项
    dates = pd.date_range("2017-01-04", periods=6)
    print("dates=", dates)
    
    # 创建一个类似excel表格一样的数据表,其中索引项为日期索引,列名为:a,b,c,d
    data = pd.DataFrame(np.random.rand(6, 4), index=dates, columns=["a", "b", "c", "d"])
    print("data=")
    print(data)
    

    输出:

    dates= DatetimeIndex(['2017-01-04', '2017-01-05', '2017-01-06', '2017-01-07',
                   '2017-01-08', '2017-01-09'],
                  dtype='datetime64[ns]', freq='D')
    data=
                       a         b         c         d
    2017-01-04  0.637641  0.756613  0.297506  0.692492
    2017-01-05  0.319457  0.401690  0.550955  0.862642
    2017-01-06  0.685646  0.007546  0.376774  0.735220
    2017-01-07  0.767868  0.000718  0.799336  0.428242
    2017-01-08  0.004777  0.292726  0.227704  0.117925
    2017-01-09  0.946817  0.153245  0.154102  0.165621
    

    看,输出了一个比较规整的电子表格。
    上面这些命令包括需要哪些参数不需要特别记忆,如果你用idea的话会自动给你提示的。

    默认索引号和列名

    如果我们没有指定索引号和列名,pandas会自动以0,1,2这样的自然数来定义我们的索引号和列名,例如:

    import pandas as pd
    import numpy as np
    data = pd.DataFrame(np.random.rand(6, 4))
    print("data=")
    print(data)
    

    输出:

    data=
              0         1         2         3
    0  0.515289  0.900554  0.490999  0.941186
    1  0.706116  0.267078  0.870968  0.904068
    2  0.002414  0.648418  0.579449  0.827671
    3  0.473538  0.640514  0.564209  0.040902
    4  0.052849  0.372015  0.613814  0.516763
    5  0.484220  0.479558  0.007722  0.216598
    

    map方式创建DataFrame

    可以用一个map方式来创建DataFrame,这样相当于map中的key为列名,value为此列的数据列表:

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    print("data=")
    print(data)
    

    输出为:

    data=
       A      B    C   D
    0  1   test  dog  12
    1  2  train  dog  12
    2  3     go  dog  12
    3  5   java  dog  12
    

    查看每列的数据类型

    我想知道pandas中每列的数据类型,有点像了解数据库中表的字段类型,这可以通过dtypes属性获得:

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    print(data.dtypes)
    

    输出:

    A     int32
    B    object
    C    object
    D     int64
    dtype: object
    

    获得列名和索引

    想要获得pandas中的列名和索引,只要使用columns和index属性就可以:

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    
    print("列名:", data.columns)
    print("索引:", data.index)
    

    输出:

    列名: Index(['A', 'B', 'C', 'D'], dtype='object')
    索引: RangeIndex(start=0, stop=4, step=1)
    

    使用describe()函数对数据快速统计汇总

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    
    print(data.describe())
    

    输出:

                  A     D
    count  4.000000   4.0
    mean   2.750000  12.0
    std    1.707825   0.0
    min    1.000000  12.0
    25%    1.750000  12.0
    50%    2.500000  12.0
    75%    3.500000  12.0
    max    5.000000  12.0
    

    其中就对可计算的列进行计数、求平均值、方差、最小值、最大值等。

    pandas转置

    相当于把电子表格中的行和列翻转一下。

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    
    print(data.T)
    
    

    输出:

          0      1    2     3
    A     1      2    3     5
    B  test  train   go  java
    C   dog    dog  dog   dog
    D    12     12   12    12
    
    

    这样索引项就变成了原先数据集中的列名。

    排序

    sort_index()可以按照索引项进行排序。

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    # 按照索引项进行倒排
    print("按照索引项进行倒排:")
    print(data.sort_index(ascending=False))
    
    # 对列名进行倒排
    print("对列名进行倒排:")
    print(data.sort_index(axis=1, ascending=False))
    

    输出:

    按照索引项进行倒排:
       A      B    C   D
    3  5   java  dog  12
    2  3     go  dog  12
    1  2  train  dog  12
    0  1   test  dog  12
    对列名进行倒排:
        D    C      B  A
    0  12  dog   test  1
    1  12  dog  train  2
    2  12  dog     go  3
    3  12  dog   java  5
    

    排序中的数据会跟着列或索引项进行调换顺序,因此数据不会错乱。

    按照值排序

    使用sort_values()函数对值进行排序,其中可以指定按照哪一列的数据进行排序的:

    import pandas as pd
    import numpy as np
    data = pd.DataFrame({
        "A": np.array([1, 2, 3, 5]),
        "B": ["test", "train", "go", "java"],
        "C": "dog",
        "D": 12
    })
    
    print(data.sort_values(by='B'))
    

    输出:

       A      B    C   D
    2  3     go  dog  12
    3  5   java  dog  12
    0  1   test  dog  12
    1  2  train  dog  12
    
  • 相关阅读:
    mac下的docker的Docker.raw占用空间很大?
    python模块uuid产生唯一id
    缓存溢出Buffer Overflow
    (原创)攻击方式学习之(3)
    JSP禁用缓存的方式 response.setHeader( "Pragma", "no-cache" ); setDateHeader("Expires", 0);
    Java框架安全
    Java Web:主动和被动方式检测安全的框架
    一.配置简单的嵌入式tomcat和jetty
    使用embeded tomcat进行嵌入式javaee开发-启动tomcat
    安全隐患,你对X-XSS-Protection头部字段理解可能有误
  • 原文地址:https://www.cnblogs.com/dreampursuer/p/7833472.html
Copyright © 2020-2023  润新知