• pandas 学习 第1篇:pandas基础


    pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,是数据分析必不可少的五个包之一。pandas包含序列Series和数据框DataFrame两种最主要数据结构,索引Index是跟序列和数据框密切相关的数据结构。

    通常情况下,引入pandas的约定,只要在代码中看到pd,就要联想到pandas:

    import pandas as pd

    一,数据结构

    序列是由一组数据(各种NumPy数据类型),以及一组与之相关的数据标签(索引)组成,序列不要求数据类型是相同的。序列可以看作是一维数组:

    >>> obj=pd.Series([4,5,'a'])
    >>> obj
    0    4
    1    5
    2    a
    dtype: object

    序列的表现形式为:索引在左边,值在右边。由于没有显式为Series指定索引,pandas会自动创建一个从0到N-1的整数型索引。

    数据框(DataFrame)是二维的关系表格型数据结构,含有一组有序的列,每列的数据类型是相同的,列与列之间的数据类型可以不同,也可以相同。数据框的逻辑结构是行和列,列有列名(或叫做列索引),行有行索引,还可以为行或列索引设置标签。

    序列和数据框之间是密切关联的,可以认为序列(Series)是二维表格中的一列或者一行。实际上,当访问DataFrame的一行时,pandas自动把该行转换为序列;当访问DataFrame的一列时,Pandas也自动把该列转换为序列。

    Index对象是序列和数据框必不可少的成分,负责管理轴标签,轴名称等元数据,对于数据框,行有行索引,列有列索引;对于序列,行索引是必备的。索引对象是不可修改的,类似一个固定大小的数组。

    二,数据类型

    在大多数情况下,pandas使用NumPy的数组和dtypes作为序列和数据框中列的数据类型,NumPy支持的数据类型是float、int、bool、timedelta64[ns]。pandas扩展了NumPy的类型系统,用dtype属性来显示元素的数据类型,pandas主要有以下几种dtype:

    • 字符串类型:object
    • 整数类型:Int64,Int32,Int16, Int8 
    • 无符号整数:UInt64,UInt32,UInt16, UInt8 
    • 浮点数类型:float64,float32
    • 日期和时间类型:datetime64[ns]、datetime64[ns, tz]、timedelta[ns]
    • 布尔类型:bool

    1,查看变量的类型

    查看变量的数据类型,使用type(var)函数

    type(obj)

    2,特殊的objct类型

    通常情况下,使用object表示字符类型;

    >>> pd.Series(['a', 'b', 'c'], dtype="object")
    0    a
    1    b
    2    c
    dtype: object

    对于object类型,如果一个pandas对象在单列中包括多个dtype,那么使用object来容纳所有的dtype。

    # string data forces an ``object`` dtype
    In [333]: pd.Series([1, 2, 3, 6., 'foo'])
    Out[333]: 
    0      1
    1      2
    2      3
    3      6
    4    foo
    dtype: object

    3,数值类型

    pandas中的整数类型和浮点数类型可以为空(NULL),在定义数据组或序列时,使用dtype参数来定义整数类型:

    arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())
    pd.array([1, 2, np.nan], dtype="Int64")
    pd.Series([1, 2, np.nan], dtype="Int32")

    使用float32、float64定义浮点数类型:

    >>> pd.Series([1, 2, np.nan], dtype="float32")
    0    1.0
    1    2.0
    2    NaN
    dtype: float32

    4,日期和时间类型类型

    datetime64[ns] 表示的是日期和时间类型

    >>> pd.Series(['2018-07-01', '2019-07-01', '2019-10-01'], dtype="datetime64[ns]")
    0   2018-07-01
    1   2019-07-01
    2   2019-10-01
    dtype: datetime64[ns]

    三,类型转换

    可以使用astype()函数,显式把对象的类型从一个类型强制转换为指定的数据类型:

    >>> pd.Series(['2018-07-01', '2019-07-01', '2019-10-01']).astype('datetime64[ns]')
    0   2018-07-01
    1   2019-07-01
    2   2019-10-01
    dtype: datetime64[ns]

    pandas还有类型转换的特殊函数,用于转换为特定的数据类型:

    • to_numeric() 
    • to_datetime() 
    • to_timedelta() 

    比如,把序列转换为日期类型:

    >>> pd.to_datetime(pd.Series(['2018-07-01', '2019-07-01', '2019-10-01']))
    0   2018-07-01
    1   2019-07-01
    2   2019-10-01
    dtype: datetime64[ns]

     

    参考文档:

    pandas overview

  • 相关阅读:
    在 《超过 光速 的 方法》 里 的 回复
    超过 光速 的 方法
    在 《我对 相对论 提出了一个 修正,名为 “K氏修正”》 里 的 回复
    我对 相对论 提出了一个 修正,名为 “K氏修正”
    input 只读不能修改
    获取父iframe的高宽
    indexOf ie下的兼容问题
    英文单词自动换行
    textarea 限制字数
    js判断输入框的范围,并且只能输入数字
  • 原文地址:https://www.cnblogs.com/ljhdo/p/10701649.html
Copyright © 2020-2023  润新知