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

Pandas快速入门(四)

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

    Pandas快速入门(三),接着写:
    初始数据

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

    分组(Grouping)

    将查询结果按一个或多个进行分组,字段值相同的为一组

    s = pd.Series(['foo','bar','foo','foo','bar','foo'],index=pd.date_range('20190901',periods=6))
    df['E'] = s
    print(df)
    print(df.groupby('E').sum()) #分组后相加
    print(df.groupby('E').mean())  #分组后每列平均数
    print(df.groupby('E').std())  #分组后每列方差
    print(df.groupby('E').max())   #分组后每列最大值
    
    #原始数据
                       A         B         C         D
    2019-09-01 -2.339140  0.960050 -1.732604  0.726235
    2019-09-02 -1.100443 -0.461649 -1.022285  1.617574
    2019-09-03 -0.930862 -1.138174  0.063476  0.658085
    2019-09-04  1.226518 -0.769316 -0.591096 -0.041768
    2019-09-05 -1.083040  0.994000  0.959304  0.454745
    2019-09-06  1.203059  0.120143 -0.054253 -2.299551
    
    #给每条数据标注一个类型
                       A         B         C         D    E
    2019-09-01 -2.339140  0.960050 -1.732604  0.726235  foo
    2019-09-02 -1.100443 -0.461649 -1.022285  1.617574  bar
    2019-09-03 -0.930862 -1.138174  0.063476  0.658085  foo
    2019-09-04  1.226518 -0.769316 -0.591096 -0.041768  foo
    2019-09-05 -1.083040  0.994000  0.959304  0.454745  bar
    2019-09-06  1.203059  0.120143 -0.054253 -2.299551  foo
    
    #由E分组后相加
                A         B         C         D
    E                                          
    bar -2.183483  0.532351 -0.062981  2.072319
    foo -0.840425 -0.827297 -2.314476 -0.956999
    
    #由E分组后求每列平均数
                A         B         C        D
    E                                         
    bar -1.091741  0.266176 -0.031491  1.03616
    foo -0.210106 -0.206824 -0.578619 -0.23925
    
    #由E分组后求每列方差
                A         B         C         D
    E                                          
    bar  0.012306  1.029300  1.401196  0.822245
    foo  1.742909  0.940268  0.820383  1.416711
    
    #由E分组后求每列最大值
                A        B         C         D
    E                                         
    bar -1.083040  0.99400  0.959304  1.617574
    foo  1.226518  0.96005  0.063476  0.726235
    

    堆叠

    堆叠可以使DataFrame转变为了Series类型,也可以使Series转变为了DataFrame类型

    stack = df.stack()
    print(stack)
    print(type(stack))  #从DataFrame转变为了Series类型
    unstack = stack.unstack()
    print(unstack)
    print(type(unstack))  #从Series转变为了DataFrame类型
    
                       A         B         C         D
    2019-09-01  0.426467  0.332034  1.280684 -0.868442
    2019-09-02  2.645575  2.133522  0.327961 -1.040339
    2019-09-03  0.749445  0.124402  0.242715 -1.201410
    2019-09-04 -0.308812 -0.850294  0.311778 -0.841252
    2019-09-05 -0.954938 -0.482902  1.029856  0.602528
    2019-09-06 -0.322377  1.155433  0.627880  0.365101
    2019-09-01  A    0.426467
                B    0.332034
                C    1.280684
                D   -0.868442
    2019-09-02  A    2.645575
                B    2.133522
                C    0.327961
                D   -1.040339
    2019-09-03  A    0.749445
                B    0.124402
                C    0.242715
                D   -1.201410
    2019-09-04  A   -0.308812
                B   -0.850294
                C    0.311778
                D   -0.841252
    2019-09-05  A   -0.954938
                B   -0.482902
                C    1.029856
                D    0.602528
    2019-09-06  A   -0.322377
                B    1.155433
                C    0.627880
                D    0.365101
    dtype: float64
    
    <class 'pandas.core.series.Series'>
    
                       A         B         C         D
    2019-09-01  0.426467  0.332034  1.280684 -0.868442
    2019-09-02  2.645575  2.133522  0.327961 -1.040339
    2019-09-03  0.749445  0.124402  0.242715 -1.201410
    2019-09-04 -0.308812 -0.850294  0.311778 -0.841252
    2019-09-05 -0.954938 -0.482902  1.029856  0.602528
    2019-09-06 -0.322377  1.155433  0.627880  0.365101
    <class 'pandas.core.frame.DataFrame'>
    

    绘图

    有时数据太大,太复杂,是使开发人员或分析人员很头大的事,这里使用的是matplotlib库使其数据可视化,可以帮助开发和分析人员更好的 使用数据。

    import matplotlib.pyplot as plt
    ts = pd.DataFrame(np.random.randint(10,60,size=(100,2)),index=range(100),columns=(['A','B']))
    print(ts)
    plt.figure()
    plt.scatter(ts['A'],ts['B'],alpha=0.5) #设置X、Y轴,alpha为透明度
    plt.show()
    
         A   B
    0   51  32
    1   29  10
    2   14  46
    3   12  24
    4   52  59
    ..  ..  ..
    95  14  53
    96  28  10
    97  19  57
    98  58  43
    99  33  46
    
    [100 rows x 2 columns]
    
    
    myplot.png

    数据很多很复杂,但是看图片可以很清楚的看清他们的分布

    数据输入/输出

    df.to_csv('demo.csv')  #csv写入
    f = pd.read_csv('demo.csv')  #csv读取
    

    相关文章

      网友评论

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

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