美文网首页机器学习
Pandas快速入门(三)

Pandas快速入门(三)

作者: 乔治大叔 | 来源:发表于2019-10-09 10:25 被阅读0次

    Pandas快速入门(二),接着写:

    df = pd.DataFrame(np.random.randn(6, 4), index=pd.date_range('20190901', periods=6), columns=list('ABCD'))
    # 查看数据
    print(df)
    

    统计

    在一些操作中经常会排除缺失值。

    进行描述性统计:

    print(df.describe()) #显示统计数据
    print(df.std()) #显示方差,
    print(df.mean())  #得到每列的平均数
    print(df.mean(1))  #得到每行的平均数
    print(df.max())  #得到每列的最大值
    print(df.max(1))  #得到每行的最大值
    print(df.min())  #得到每列的最小值
    print(df.min(1))  #得到每行的最小值
    print(df.cumsum()) #得到每列的最累加
    
                       A         B         C         D
    2019-09-01 -0.301720 -0.327584  1.658597  2.672121
    2019-09-02  1.231629 -0.785624  0.936318 -0.213149
    2019-09-03 -1.582332 -1.778585 -0.784753 -0.076871
    2019-09-04 -2.138803 -1.919293  0.878578  1.523728
    2019-09-05  0.015031  0.413647  0.184342 -0.021764
    2019-09-06 -2.208370  0.333319  0.339141  1.086922
    
    #显示统计数据
                  A         B         C         D
    count  6.000000  6.000000  6.000000  6.000000
    mean  -0.830761 -0.677353  0.535371  0.828498
    std    1.372759  1.010042  0.830017  1.146886
    min   -2.208370 -1.919293 -0.784753 -0.213149
    25%   -1.999685 -1.530345  0.223042 -0.063094
    50%   -0.942026 -0.556604  0.608860  0.532579
    75%   -0.064157  0.168093  0.921883  1.414526
    max    1.231629  0.413647  1.658597  2.672121
    
    #显示方差
    A    1.372759
    B    1.010042
    C    0.830017
    D    1.146886
    dtype: float64
    
    #得到每列的平均数
    A   -0.830761
    B   -0.677353
    C    0.535371
    D    0.828498
    dtype: float64
    
    #得到每行的平均数
    2019-09-01    0.925354
    2019-09-02    0.292293
    2019-09-03   -1.055635
    2019-09-04   -0.413947
    2019-09-05    0.147814
    2019-09-06   -0.112247
    Freq: D, dtype: float64
    
    #得到每列的最大值
    A    1.231629
    B    0.413647
    C    1.658597
    D    2.672121
    dtype: float64
    
    #得到每行的最大值
    2019-09-01    2.672121
    2019-09-02    1.231629
    2019-09-03   -0.076871
    2019-09-04    1.523728
    2019-09-05    0.413647
    2019-09-06    1.086922
    Freq: D, dtype: float64
    
     #得到每列的最小值
    A   -2.208370
    B   -1.919293
    C   -0.784753
    D   -0.213149
    dtype: float64
    
     #得到每行的最小值
    2019-09-01   -0.327584
    2019-09-02   -0.785624
    2019-09-03   -1.778585
    2019-09-04   -2.138803
    2019-09-05   -0.021764
    2019-09-06   -2.208370
    Freq: D, dtype: float64
    
    #得到每列的最累加
                       A         B         C         D
    2019-09-01 -0.301720 -0.327584  1.658597  2.672121
    2019-09-02  0.929909 -1.113208  2.594915  2.458972
    2019-09-03 -0.652423 -2.891793  1.810162  2.382101
    2019-09-04 -2.791226 -4.811085  2.688740  3.905829
    2019-09-05 -2.776195 -4.397439  2.873082  3.884065
    2019-09-06 -4.984565 -4.064120  3.212224  4.970986
    
    

    应用(Apply)

    将函数应用于数据:

    print(df.apply(lambda x:x.max()-x.min())) #可以使用函数运算DF中的值
    
    #每列的最大值减去最小值
    A    2.128442
    B    1.369998
    C    3.041190
    D    2.466461
    dtype: float64
    

    Series在str属性中配备了一组字符串处理方法,可以轻松地对数组的每个元素进行操作,如下面的代码片段所示。

    s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
    print(s.str.lower()). #字符串全部小写 
    print(s.str.capitalize())  #字符串首字母大写
    
    0       a
    1       b
    2       c
    3    aaba
    4    baca
    5     NaN
    6    caba
    7     dog
    8     cat
    dtype: object
    
    0       A
    1       B
    2       C
    3    Aaba
    4    Baca
    5     NaN
    6    Caba
    7     Dog
    8     Cat
    dtype: object
    

    连接(Concat)

    Pandas提供了各种工具,可以轻松地将Series,DataFrame和Panel对象与各种赋值逻辑组合在一起,用于索引和连接/合并类型操作时的关系代数功能。

    df = pd.DataFrame(np.random.randn(6, 4), index=pd.date_range('20190901', periods=6), columns=list('ABCD'))
    # 查看数据
    print(df)
    df2 = pd.DataFrame(np.random.randn(6,4),index=pd.date_range('20190901', periods=6),columns=list('EFGH'))
    print(df2)
    print(pd.concat([df,df2],axis=1)) #左右合并
    datas2 = pd.date_range('20190907',periods=6)
    df2 = pd.DataFrame(np.random.randn(6,4),index=datas2,columns=list('ABCD'))
    print(pd.concat([df,df2]))  #上下合并
    
                       A         B         C         D
    2019-09-01  0.000264  0.580407  1.186368  1.114972
    2019-09-02 -0.346254  2.456113 -0.052740 -1.230668
    2019-09-03  0.108114 -1.290747  0.624875  0.075484
    2019-09-04  1.212673 -0.058395 -0.890161  0.731236
    2019-09-05 -1.572110  0.216077 -0.649611  0.497655
    2019-09-06  0.235560  1.734389 -0.022035 -0.467324
                       E         F         G         H
    2019-09-01 -1.716722 -1.759474  0.518296 -0.692994
    2019-09-02 -1.830417 -1.150664 -1.451513 -0.165872
    2019-09-03 -1.554910  1.133170  0.467904  0.491470
    2019-09-04  0.141910 -0.281543  0.192367 -1.440507
    2019-09-05  1.101696  0.335960 -0.196785  0.551793
    2019-09-06  1.561382  1.027514 -1.367671  0.713349
                       A         B         C  ...         F         G         H
    2019-09-01  0.000264  0.580407  1.186368  ... -1.759474  0.518296 -0.692994
    2019-09-02 -0.346254  2.456113 -0.052740  ... -1.150664 -1.451513 -0.165872
    2019-09-03  0.108114 -1.290747  0.624875  ...  1.133170  0.467904  0.491470
    2019-09-04  1.212673 -0.058395 -0.890161  ... -0.281543  0.192367 -1.440507
    2019-09-05 -1.572110  0.216077 -0.649611  ...  0.335960 -0.196785  0.551793
    2019-09-06  0.235560  1.734389 -0.022035  ...  1.027514 -1.367671  0.713349
    
    [6 rows x 8 columns]
                       A         B         C         D
    2019-09-01  0.000264  0.580407  1.186368  1.114972
    2019-09-02 -0.346254  2.456113 -0.052740 -1.230668
    2019-09-03  0.108114 -1.290747  0.624875  0.075484
    2019-09-04  1.212673 -0.058395 -0.890161  0.731236
    2019-09-05 -1.572110  0.216077 -0.649611  0.497655
    2019-09-06  0.235560  1.734389 -0.022035 -0.467324
    2019-09-07 -0.115130  1.266141 -0.116892  0.540026
    2019-09-08  1.946468  0.291551 -1.185379  1.430597
    2019-09-09 -0.527619  1.274734 -0.736222 -1.081834
    2019-09-10 -0.184131  1.332090 -0.684283  1.340151
    2019-09-11  0.403992  0.481825 -1.345079 -0.878319
    2019-09-12  1.414334  0.785315  0.423981  0.273149
    
    

    SQL风格的合并(类似于join)

    left = pd.DataFrame({'key':['foo' for i in range(3)],'lval':[j*2-1 for j in range(1,4)]})
    print(left)
    right = pd.DataFrame({'key':['foo' for i in range(3)],'lval':[j*2 for j in range(1,4)]})
    print(right)
    print(pd.merge(left,right,on='key'))
    
       key  lval
    0  foo     1
    1  foo     3
    2  foo     5
    
       key  lval
    0  foo     2
    1  foo     4
    2  foo     6
    
       key  lval_x  lval_y
    0  foo       1       2
    1  foo       1       4
    2  foo       1       6
    3  foo       3       2
    4  foo       3       4
    5  foo       3       6
    6  foo       5       2
    7  foo       5       4
    8  foo       5       6
    

    相关文章

      网友评论

        本文标题:Pandas快速入门(三)

        本文链接:https://www.haomeiwen.com/subject/zfqbpctx.html