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

pandas 学习 第1篇:pandas基础 - 数据结构和数据类型的更多相关文章

  1. pandas 学习 第8篇:Index 对象 - (创建、转换、排序)

    Index对象负责管理轴标签.轴名称等元数据,是一个不可修改的.有序的.可以索引的ndarry对象.在构建Sereis或DataFrame时,所用到的任何数据或者array-like的标签,都会转换为 ...

  2. pandas 学习 第5篇:DataFrame - 访问数据框

    数据框是用于存储数据的二维结构,分为行和列,一行和一列的交叉位置是一个cell,该cell的位置是由行索引和列索引共同确定的.可以通过at/iat,或loc/iloc属性来访问数据框的元素,该属性后跟 ...

  3. pandas 学习 第7篇:DataFrame - 数据处理(应用、操作索引、重命名、合并)

    DataFrame的这些操作和Series很相似,这里简单介绍一下. 一,应用和应用映射 apply()函数对每个轴应用一个函数,applymap()函数对每个元素应用一个函数: DataFrame. ...

  4. pandas 学习 第6篇:DataFrame - 数据处理(长宽格式、透视表)

    长宽格式的转换 宽格式是指:一列或多列作为标识变量(id_vars),其他变量作为度量变量(value_vars),直观上看,这种格式的数据比较宽,举个列子,列名是:id1.id2.var1.var2 ...

  5. pandas 学习 第3篇:Series - 数据处理(应用、分组、滚动、扩展、指数加权移动平均)

    序列内置一些函数,用于循环对序列的元素执行操作. 一,应用和转换函数 应用apply 对序列的各个元素应用函数: Series.apply(self, func, convert_dtype=True ...

  6. pandas 学习 第2篇:Series -(创建,属性,转换和索引)

    序列(Series)是由一组数据(各种NumPy数据类型),以及一组与之相关的数据标签(索引)组成,序列不要求数据类型是相同的. 序列是一个一维数组,只有一个维度(或称作轴)是行(row),在访问序列 ...

  7. Pandas 学习 第9篇:DataFrame - 数据的输入输出

    常用的数据存储介质是数据库和csv文件,pandas模块包含了相应的API对数据进行输入和输出: 对于格式化的平面文件:read_table() 对于csv文件:read_csv().to_csv() ...

  8. pandas 学习 第十一篇:处理缺失值

    Pandas中的缺失值是指nan.None和NaT.如果需要把inf 和 -inf视为缺失值,需要设置 pandas的选项: pandas.options.mode.use_inf_as_na = T ...

  9. pandas 学习 第14篇:索引和选择数据

    数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...

随机推荐

  1. 06-Node.js学习笔记-创建web服务器

    创建web服务器 //引用系统模块 const http = require('http'); //创建web服务器 //用于处理url地址 const url = require('url'); c ...

  2. 使OrangePi Zero+支持U盘启动

    以下步骤均在Armbian系统中完成 一.无内存卡启动 1.使用armbian-config启动SPI 输入sudo armbian-config→选中System并回车→选中Hardware并回车→ ...

  3. jQuery-跨域问题的处理

    调用登录接口时,后端一般会在调用登录接口成功后,在response中设置cookie,之后前端的每次请求都会自动地在请求头上加上后端设置好的cookie,这对前端来说是透明的. 当登录接口与登录后调用 ...

  4. button的onclick事件给函数传递参数

    ul+='<button onclick="pay(\''+regiId+'\')" >按钮</button>' //此为原生JS页面拼接//此方式的关键就 ...

  5. Web前端基础(13):JavaScript(七)

    1. BOM JavaScript基础分为三部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的元 ...

  6. PHP实现支付宝登录

    1.支付宝路由拼接 public function dev() { $http = 'https://openauth.alipaydev.com/oauth2/publicAppAuthorize. ...

  7. 关于scrapy中如何区分是接着发起请求还是开始保存文件

    一.区分 根据yield迭代器生成的对象是request对象还是item对象 二.item 1.配置tem对象 在items.py文件中设置类 class MyscrapyItem(scrapy.It ...

  8. netcore3.0配置跨域

    netcore3.0框架已集成了Microsoft.AspNetCore.Mvc.Cors包,因此不需要单独引用. 在ConfigureServices中添加Cors策略服务 services.Add ...

  9. 应用InstallShield 2015打包软件打包C#程序

    大家都明白,程序员写出的程序与用户直接使用的程序之间还有一个简单的环节,就是打包.今天就简单介绍下用InstallShield 2015打包工具进行程序的打包, 有兴趣的可以看看! 首先前面安装打包工 ...

  10. iOS----------文字逐个显示

    参考文档: https://blog.csdn.net/et295394330/article/details/50529862