zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/ljhdo/p/10701649.html
Copyright © 2011-2022 走看看