• 数据蛙python基础课-DataFrame的常用方法


    下载课件后,根据视频练习。

    >>> df = pd.read_csv("/Users/chentianwei/自我练习/python练习/NBAPlayers.txt", sep='	') .   #	符号是制表符,安装	来分割,即遇到	就跳到下一个制表符。

     

    d.head(n)

    >>> df.head();
                Player  height  weight  ...    born   birth_city birth_state
    0  Curly Armstrong   180.0    77.0  ...  1918.0          NaN         NaN
    1     Cliff Barker   188.0    83.0  ...  1921.0     Yorktown     Indiana
    2    Leo Barnhorst   193.0    86.0  ...  1924.0          NaN         NaN
    3       Ed Bartels   196.0    88.0  ...  1925.0          NaN         NaN
    4      Ralph Beard   178.0    79.0  ...  1927.0  Hardinsburg    Kentucky
    •  head()默认显示前5行,n参数用于指定显示的行的数量。
    •  tail(n)则是显示后n行

     

    两种数据类型

    • series
    • DataFrame

    Series

    class pandas.Series(data=Noneindex=Nonedtype=Nonename=Nonecopy=Falsefastpath=False)

    • data可以是dict, list, array-like, Iterable, scalar value(比如整数)
    • index长度必须等于data的长度。
    >>> b = [1,2,3,4,5]
    >>> s1 = pd.Series(b)
    >>> s1
    0    1
    1    2
    2    3
    3    4
    4    5
    dtype: int64
    >>> s2 = pd.Series(b, index=list('abcde'))
    >>> s2
    a    1
    b    2
    c    3
    d    4
    e    5
    dtype: int64
    >>> s2.index
    Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
    >>> s2.values
    array([1, 2, 3, 4, 5])
    •  .index方法, 其实就是调用_index

    ⚠️:Series有非常多的属性和方法

    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html?highlight=series

    DataFrame

    DateFrame.to_numpy()可以把单一类型的对象转化为array类型。⚠️如果是多类型的,成本很高。index,column会被去掉。

    创建

    可用数据

    • Dict of 1D ndarrays, lists, dicts, Series
    • 2-D numpy.ndarray
    • Structured or record ndarray
    • A Series
    • Another DataFrame

    例子:

    a的key转化为列名:

    >>> a = dict(name = ["xiaoming", "tom", "Jony"], age = [12,11,32])
    >>> pd.DataFrame(data=a, index=list('abc'))
           name  age
    a  xiaoming   12
    b       tom   11
    c      Jony   32

    例子2:

    使用Series,把dict变为series类型。因此DataFrame要,指定列名columns,这是因为转化为series, 原来的key变成了index.。

    >>> a
    {'name': 'Tom', 'age': 18, 'sex': 'male'}
    >>> s1= pd.Series(a)
    >>> s1
    name     Tom
    age       18
    sex     male
    dtype: object
    >>> pd.DataFrame(s1, columns=["Value"])
         Value
    name   Tom
    age     18
    sex   male

    DataFrame常用的方法和属性

    https://pandas.pydata.org/pandas-docs/stable/reference/frame.html

    还是使用上面的数据。

    属性

    >>> df.values
    array([['Curly Armstrong', 180.0, 77.0, ..., 1918.0, nan, nan],
           ['Cliff Barker', 188.0, 83.0, ..., 1921.0, 'Yorktown', 'Indiana'],
           ['Leo Barnhorst', 193.0, 86.0, ..., 1924.0, nan, nan],
           ...,
           ['Stephen Zimmerman', 213.0, 108.0, ..., 1996.0, 'Hendersonville',
            'Tennessee'],
           ['Paul Zipser', 203.0, 97.0, ..., 1994.0, 'Heidelberg', 'Germany'],
           ['Ivica Zubac', 216.0, 120.0, ..., 1997.0, 'Mostar',
            'Bosnia and Herzegovina']], dtype=object)
    • values,返回一个array,保存了所有行的数据。
    >>> df.__dict__.keys()
    dict_keys(['_is_copy', '_data', '_item_cache'])
    
    >>> df._data
    BlockManager
    Items: Index(['Player', 'height', 'weight', 'collage', 'born', 'birth_city',
           'birth_state'],
          dtype='object')
    Axis 1: RangeIndex(start=0, stop=3922, step=1)
    FloatBlock: [1, 2, 4], 3 x 3922, dtype: float64
    ObjectBlock: [0, 3, 5, 6], 4 x 3922, dtype: object
    • df的很多属性都可以通过_data看到。
    >>> df.index
    RangeIndex(start=0, stop=3922, step=1)
    >>> df.columns
    Index(['Player', 'height', 'weight', 'collage', 'born', 'birth_city',
           'birth_state'],
          dtype='object')
    • index返回每行的标签/索引
    • column返回的是DataFrame的列标签。
    >>> df.dtypes
    Player          object
    height         float64
    weight         float64
    collage         object
    born           float64
    birth_city      object
    birth_state     object
    dtype: object
    • dtypes, 返回DataFrame的列中的数据的类型。
    >>> df.size
    27454
    # 即列数*行数,返回的是所有数据的总数量。其实都可以通过_data看出。

    >>> df.shape
    (3922, 7)

    方法:

    • head, tail
    • rename(index=None, columns=None, axis=None)
    • replace  (关于字典的用法,过于复杂了,以后再说)
    • unique_values  (文档没有这个方法。)
    • sort_values, 根据值排序,就是sql语法中的order by xxx ascend
    • describe
    • max/min/sum/mean
    • ...

    pandas.DataFrame.rename

    ataFrame.rename(selfmapper=Noneindex=Nonecolumns=Noneaxis=Nonecopy=True)

    • mapper是一个字典类型的对象或者一个函数,和axis参数配合使用。
    • axis int or str.  Can be either the axis name (‘index’, ‘columns’) or number (0, 1). The default is ‘index’.
    • index: 字典类对象或函数。(mapper, axis=0)相当于index=mapper。
    • columns: (mapper, axis= 1) 相当于 columns = mapper
    • ⚠️copy默认是True, 即是copy underlying data。

    具体案例键https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html#pandas.DataFrame.rename

    ⚠️需要主要的是df.rename()是建立一个新的副本,因此要重新分配指针。 df = df.rename()

    DataFrame.sort_values(selfbyaxis=0ascending=True)

    >>> df = pd.DataFrame({
    ... 'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
    ... 'col2': [2, 1, 9, 8, 7, 4],
    ... 'col3': [0, 1, 9, 4, 2, 3],})
    >>> df
      col1  col2  col3
    0    A     2     0
    1    A     1     1
    2    B     9     9
    3  NaN     8     4
    4    D     7     2
    5    C     4     3
    >>> df.sort_values(by=['col1'])
      col1  col2  col3
    0    A     2     0
    1    A     1     1
    2    B     9     9
    5    C     4     3
    4    D     7     2
    3  NaN     8     4

    max(), describe()方法的使用

    • max(axis=None)  ⚠️axis: {index:(0), columns:(1)}
    >>> df.max()
    col2    9
    col3    9
    dtype: int64
    >>> df.describe()
               col2      col3
    count  6.000000  6.000000
    mean   5.166667  3.166667
    std    3.311596  3.188521
    min    1.000000  0.000000
    25%    2.500000  1.250000
    50%    5.500000  2.500000
    75%    7.750000  3.750000
    max    9.000000  9.000000
  • 相关阅读:
    项目中的注意事项
    复合查询
    树型控件的处理(完整版)
    图的存储结构(邻接矩阵)
    图的定义与术语2 数据结构和算法55
    图的存储结构(邻接矩阵)
    赫夫曼编码 数据结构和算法52
    赫夫曼编码 数据结构和算法52
    图的存储结构(邻接矩阵)
    图的定义与术语 数据结构和算法54
  • 原文地址:https://www.cnblogs.com/chentianwei/p/12107999.html
Copyright © 2020-2023  润新知