zoukankan      html  css  js  c++  java
  • DataFrame

    1:获取dataFrame的行数和列数

      行数:dataframe.shape[0]或len(DataFrame.index)
      列数:dataframe.shape[1]或len(DataFrame.columns)

    2:创建DataFrame的几种方式:
    self:DataFrame, data=None, index=None, columns=None, dtype=None, copy=False

    1.通过NumPy的接口来创建一个4x4的矩阵,以此来创建一个DataFrame

    df = pd.DataFrame(np.arange(16).reshape(4, 4))  # 默认的索引和列名都是[0, N-1]的形式
    
    
    # 在创建DataFrame的时候指定列名和索引
    df = pd.DataFrame(np.arange(16).reshape(4, 4),
                      columns=["column1", "column2", "column3", "column4"],
                      index=["a", "b", "c", "d"])

    输出结果分别如下:

      

     

    2.直接指定列数据来创建DataFrame
    df = pd.DataFrame({"note": ["C", "D", "E", "F", "G", "A", "B"], "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]})
    
    

    输出结果如下:


    3.以Series数组来创建DataFrame。注意!!!每个Series将成为一行,而不是一列!!!
    noteSeries = pd.Series(["C", "D", "E", "F", "G", "A", "B"], index=[1, 2, 3, 4, 5, 6, 7])
    weekdaySeries = pd.Series(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], index=[1, 2, 3, 4, 5, 6, 7])
    df = pd.DataFrame([noteSeries, weekdaySeries])
    
    

    输出结果如下:

     

    3:DataFrame提供了下面两个操作符来访问其中的数据:

    • loc:  通过行和列的索引来访问数据
    • iloc:通过行和列的下标来访问数据

     补充:使用head查看前几行数据(默认是前5行),使用tail查看后几行数据(默认是后5行)

    df = pd.DataFrame({"note": ["C", "D", "E", "F", "G", "A", "B"],
                       "weekday": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]},
                        index=["a", "b", "c", "d", "e", "f", "g"])
    
    # df.index = ["a", "b", "c", "d", "e", "f", "g"] 也可以通过此方式设置index
    
    print(df, '
    ')
    print(df.loc[['a', 'b'], "note"], '
    ')  # 访问了行索引为a和b,列索引为“note”的元素
    print(df.iloc[[0, 1], 0])  # 访问了行下标为0和1,列下标为0的元素

     输出结果如下:

    4:dataframe astype 字段类型转换

    # -*- coding: UTF-8 -*-
    import pandas as pd
    df = pd.DataFrame([{'col1': 'a', 'col2': '1'}, {'col1': 'b', 'col2': '2'}])
    print(df)
    print(df.dtypes)
    print('-----------')
    
    df['col2'] = df['col2'].astype('int')
    print(df.dtypes)
    print('-----------')
    
    df['col2'] = df['col2'].astype('float64')
    print(df.dtypes)

    输出结果如下:

    5:dataFrame转化为矩阵

    # -*- encoding:utf-8 -*-
    
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(10, 4), columns=list('abcd'))
    print(df)
    data = df.values
    print(data, type(data), '
    ')
    data = df.as_matrix(columns=['a', 'b'])  # 若columns=None或者省略columns参数,则默认把dataframe的所有列转化为矩阵
    print(data, type(data))

     6:dataframe 按列或者按行合并

    concat 与其说是连接,更准确的说是拼接。即把两个表直接合在一起。于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis 。

    函数的具体参数是:

    concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False)

    objs 是需要拼接的对象集合,一般为列表或者字典

    axis=0 是行拼接,拼接之后行数增加,列数也根据join来定,join='outer'时,列数是两表并集。同理join='inner',列数是两表交集。

    在默认情况下,axis=0为纵向拼接,此时有

    concat([df1,df2]) 等价于 df1.append(df2)

    在axis=1 时为横向拼接 ,此时有

    concat([df1,df2],axis=1) 等价于 merge(df1,df2,left_index=True,right_index=True,how='outer')

     例如:

    import pandas as pd
    import numpy as np
    
    df1 = pd.DataFrame(np.arange(16).reshape(4, 4))
    print(df1)
    df2 = pd.DataFrame(np.arange(12).reshape(4, 3))
    print(df2)
    
    data = pd.concat([df1, df2], axis=1)
    print(data)

    输出结果如下:

    7:DataFrame切片操作

    DataFrame数据框允许我们使用iloc方法来像操作array(数组)一样对DataFrame进行切片操作,其形式上,跟对数组进行切片是一样的。

    1、创建一个6行4列的DataFrame数据框

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(np.random.randn(6, 4), columns=list("ABCD"))
    print(df)

    2、使用iloc方法,提取数据:

    df.iloc[3]  # 提取第四行数据

    df.iloc[[1, 2, 4], [0, 2]]  # 提取第2、3、5,第1、3列的数据

    df.iloc[1:3, :]  # 保证所有列都在,可以使用一个冒号来表示所有列(行也适用)

    iat是专门提取某个数的方法,它的效率高更高,因此建议在提取单个数的时候用iat

    df.iat[1, 1]

  • 相关阅读:
    Python-内存管理
    Python如何操作Excel
    336. 文本压缩
    Python-锁
    MVC接收以post形式传输的各种参数
    linux批量替换指定文件夹中所有文件的指定内容
    ES6:string.raw浅析
    node学习笔记
    运行node提示:events.js:160 throw er; // Unhandled 'error' event
    socket.io入门示例参考
  • 原文地址:https://www.cnblogs.com/fuqia/p/9043888.html
Copyright © 2011-2022 走看看