zoukankan      html  css  js  c++  java
  • 数据可视化基础专题(七):Pandas基础(六) 数据增删改以及相关操作

    首先第一部还是导入 Pandas 与 NumPy ,并且要生成一个 DataFrame ,这里小编就简单的使用随机数的形式进行生成,代码如下:

    import numpy as np
    import pandas as pd
    
    dates = pd.date_range('20200101', periods=6)
    df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
    
    print(df)

    这里最后我们打印了一下这个生成的 DataFrame ,结果如下:

                       A         B         C         D
    2020-01-01  0.177499 -0.025693  0.182894 -1.123577
    2020-01-02  1.067580  1.592576 -0.010205 -0.349342
    2020-01-03  1.141218  1.032333  1.364477  0.851630
    2020-01-04  0.920260 -0.243247  0.196369 -0.835655
    2020-01-05 -0.729184 -0.235706  1.144007 -1.048619
    2020-01-06 -0.480888 -0.995325 -0.283726  0.428644

    1.head()

    # 查看头部数据
    print(df.head(1))
                       A         B         C         D
    2020-01-01  0.177499 -0.025693  0.182894 -1.123577

    2.tail()

    # 查看尾部数据
    print(df.tail(2))
                       A         B         C         D
    2020-01-05 -0.729184 -0.235706  1.144007 -1.048619
    2020-01-06 -0.480888 -0.995325 -0.283726  0.428644

    3.index

    # 获取索引
    print(df.index)
    DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
                   '2020-01-05', '2020-01-06'],
                  dtype='datetime64[ns]', freq='D')

    4.columns

    # 获取列名
    print(df.columns)
    Index(['A', 'B', 'C', 'D'], dtype='object')

    5.describe()

    # 查看数据的统计摘要
    print(df.describe())
                  A         B         C         D
    count  6.000000  6.000000  6.000000  6.000000
    mean   0.349414  0.187490  0.432303 -0.346153
    std    0.818647  0.948383  0.663604  0.821275
    min   -0.729184 -0.995325 -0.283726 -1.123577
    25%   -0.316291 -0.241362  0.038070 -0.995378
    50%    0.548879 -0.130700  0.189632 -0.592498
    75%    1.030750  0.767826  0.907098  0.234148
    max    1.141218  1.592576  1.364477  0.851630

    Pandas 还为我们提供了一个神奇的功能,「转置数据」,就是把行列互换,示例如下:

    # 转置数据
    print(df.T)
      2020-01-01  2020-01-02  2020-01-03  2020-01-04  2020-01-05  2020-01-06
    A    0.177499    1.067580    1.141218    0.920260   -0.729184   -0.480888
    B   -0.025693    1.592576    1.032333   -0.243247   -0.235706   -0.995325
    C    0.182894   -0.010205    1.364477    0.196369    1.144007   -0.283726
    D   -1.123577   -0.349342    0.851630   -0.835655   -1.048619    0.428644

    6.sort_index()

    用途:默认根据行标签对所有行排序,或根据列标签对所有列排序,或根据指定某列或某几列对行排序。

    注意:df.sort_index() 可以完成和 df.sort_values() 完全相同的功能,但 python 更推荐用只用 df.sort_index() 对 index 和 columns 排序,其他排序方式用 df.sort_values() 。

    语法:DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)

    • axis:0 按照行名排序;1 按照列名排序。
    • level:默认 None ,否则按照给定的 level 顺序排列。
    • ascending:默认 True 升序排列; False 降序排列。
    • inplace:默认False,否则排序之后的数据直接替换原来的数据框。
    • kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
    • na_position:缺失值默认排在最后{"first","last"}。
    • by:按照某一列或几列数据进行排序,但是by参数貌似不建议使用。
    # 默认按「行标签」升序排列
    print(df1.sort_index())
      b  a  c
    0  2  3  3
    1  3  2  8
    2  1  4  1
    3  2  1  2
    # 按「列标签」升序排列
    print(df1.sort_index(axis=1))
       a  b  c
    2  4  1  1
    0  3  2  3
    1  2  3  8
    3  1  2  2

    7.sort_values()

    用途:既可以根据列数据,也可根据行数据排序。

    注意:必须指定by参数,即必须指定哪几行或哪几列;无法根据 index 和 columns 排序(由 sort_index() 执行)

    语法:DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')

    • axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照列排序,即纵向排序;如果为1,则是横向排序。
    • by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名"。
    • ascending:布尔型,True则升序,如果by=['列名1','列名2'],则该参数可以是[True, False],即第一字段升序,第二个降序。
    • inplace:布尔型,是否用排序后的数据框替换现有的数据框。
    • kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
    • na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面。
    # 按 b 列升序排序
    print(df1.sort_values(by='b'))
       b  a  c
    2  1  4  1
    0  2  3  3
    3  2  1  2
    1  3  2  8
    # 先按 b 列降序,再按 a 列升序排序
    print(df1.sort_values(by=['b','a'],axis=0,ascending=[False,True]))
      b  a  c
    1  3  2  8
    3  2  1  2
    0  2  3  3
    2  1  4  1

     

    8.添加、删除

    创建好了 DataFrame 以后,我们自然是希望可以动态的操作它,那么标准的 CRUD 操作必不可少。

    获取数据示例如下,这里我们使用 df4 做演示:

    d1 = {'one': [1., 2., 3., 4.],
          'two': [4., 3., 2., 1.]}
    
    
    df4 = pd.DataFrame(d1, index=['a', 'b', 'c', 'd'])
    print(df4)
    # 删除数据
    del df4['two']
    df4.pop('three')
    print(df4)
       one   flag
    a  1.0  False
    b  2.0  False
    c  3.0   True
    d  4.0   True
    # 插入数据
    df4['foo'] = 'bar'
    print(df4)
       one   flag  foo
    a  1.0  False  bar
    b  2.0  False  bar
    c  3.0   True  bar
    d  4.0   True  bar

    插入与 DataFrame 索引不同的 Series 时,以 DataFrame 的索引为准:

    df4['one_trunc'] = df4['one'][:2]
    print(df4)

    结果如下:

      one   flag  foo  one_trunc
    a  1.0  False  bar        1.0
    b  2.0  False  bar        2.0
    c  3.0   True  bar        NaN
    d  4.0   True  bar        NaN
  • 相关阅读:
    Sublime 官方安装方法
    Notepad2、Sublime_text带图标的右键快捷打开方式
    创业公司如何实施敏捷开发
    如果有人让你推荐编程技术书,请叫他看这个列表
    Spring cron表达式详解
    Spring定时任务的几种实现
    spring注解方式 idea报could not autowire,eclipse却没有问题
    mysql处理海量数据时的一些优化查询速度方法
    Hexo重装小结
    修改JAVA代码,需要重启Tomcat的原因
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12671556.html
Copyright © 2011-2022 走看看