Pandas是Python的一个扩展程序库,是在Numpy基础上建立的,提供高性能、易使用的数据结构和数据分析工具。

  • Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Excel 等中导入数据;

  • Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征;

  • Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

Pandas对象(数据结构)

Pandas 三个基本的数据结构是 :Series (一维数据对象)、 DataFrame(二维数据对象)和 Index(标签对象)。Pandas数据对象可以看成增强版的Numpy数组,不过行列不仅仅只是简单的数据索引,还可以带上标签,是一种显式定义的索引,索引可以是重复的。

Series对象

Series对象是一个带索引数据构成的一维数组。

pandas.Series(data, index, dtype, name, copy)

参数说明:

data:一组数据(ndarray、字典、列表类型等)。

index:数据索引标签,如果不指定,默认从 0 开始。

dtype:数据类型,默认会自己判断。

name:设置名称。

copy:拷贝数据,默认为 False。
In [1]: import pandas as pd

#输入的数组可以是列表或Numpy数组,index默认整数序列
In [2]: data = pd.Series([0.3,0.05,1,30])
In [3]: data
Out[3]:
0 0.30
1 0.05
2 1.00
3 30.00
dtype: float64 In [4]: data.index #Series的索引是一个pd.Index类型对象
Out[4]: RangeIndex(start=0, stop=4, step=1) In [5]: data[0] #和Numpy一样可以通过整数索引进行取值
Out[5]: 0.3 #添加显性索引,索引会覆盖顺序整数索引,但是两种索引方式都可用
In [8]: data = pd.Series([0.3,0.07,3,4],index=['a','b','c','d'])
In [9]: data
Out[9]:
a 0.30
b 0.07
c 3.00
d 4.00
dtype: float64 In [10]: data[1]
Out[10]: 0.07 In [11]: data['b']
Out[11]: 0.07 #添加显性整数索引,索引会覆盖原来顺序整数索引,原来的顺序整数索引不可用
In [12]: data = pd.Series([0.23,9,3,6],index=[2,7,3,9]) In [13]: data
Out[13]:
2 0.23
7 9.00
3 3.00
9 6.00
dtype: float64 In [14]: data[2]
Out[14]: 0.23
#输入一个字典,index默认为排序的key值
In [15]: population_dict = {'California': 3333333,
'Texas': 233242321,'New York': 43897653,
'Florida':32097644,'Illinois':2222229} In [16]: population = pd.Series(population_dict) In [17]: population
Out[17]:
California 3333333
Texas 233242321
New York 43897653
Florida 32097644
Illinois 2222229
dtype: int64 In [18]: population['Texas']
Out[18]: 233242321 #显性索引也具有切片功能
In [19]: population['California':'New York']
Out[19]:
California 3333333
Texas 233242321
New York 43897653
dtype: int64
#也可以输入一个标量,每个索引上都重复赋值
In [20]: pd.Series(3,index=['a','b','c'])
Out[20]:
a 3
b 3
c 3
dtype: int64
#筛选索引应用
In [21]: pd.Series({'a':1,'b':2,'c':3},index=['a','c'])
Out[21]:
a 1
c 3
dtype: int64

DataFrame对象

DataFrame对象可以看成是有序排列的若干Series对象,DataFrame除了有index属性外,还有columns属性。

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

data:一组数据(ndarray、series, map, lists, dict 等类型)。

index:索引值,或者可以称为行标签。

columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

dtype:数据类型。

copy:拷贝数据,默认为 False。

#通过单个Series创建
In [22]: pd.DataFrame(population,columns=['population'])
Out[22]:
population
California 3333333
Texas 233242321
New York 43897653
Florida 32097644
Illinois 2222229 #通过字典列表创建,缺失值用NaN补充
In [23]: data = [{'a':i,'b':i**2} for i in range(5)] In [24]: pd.DataFrame(data)
Out[24]:
a b
0 0 0
1 1 1
2 2 4
3 3 9
4 4 16 In [25]: pd.DataFrame([{'a':1,'b':2},
{'c':3,'b':4}])
Out[25]:
a b c
0 1.0 2 NaN
1 NaN 4 3.0 #通过Series对象字典创建
In [26]: area = pd.Series({'California': 3883333, 'Texas': 233771,'New York':435653,
'Florida':320644,'Illinois':2224429}) In [27]: area
Out[27]:
California 3883333
Texas 233771
New York 435653
Florida 320644
Illinois 2224429
dtype: int64 In [28]: population
Out[28]:
California 3333333
Texas 233242321
New York 43897653
Florida 32097644
Illinois 2222229
dtype: int64 In [29]: pd.DataFrame({'population':population,'area':area})
Out[29]:
population area
California 3333333 3883333
Texas 233242321 233771
New York 43897653 435653
Florida 32097644 320644
Illinois 2222229 2224429 #通过Numpy二维数组创建
In [30]: import numpy as np In [31]: pd.DataFrame(np.random.rand(3,2),columns=['a','b'],index=['ff','dd','gg'])
Out[31]:
a b
ff 0.258254 0.591041
dd 0.091217 0.029136
gg 0.822554 0.661956 #通过Numpy结构化数组创建
In [32]: A = np.zeros(3,dtype=[('a','i8'),('b','f8')]) In [33]: A
Out[33]: array([(0, 0.), (0, 0.), (0, 0.)], dtype=[('a', '<i8'), ('b', '<f8')]) In [34]: pd.DataFrame(A)
Out[34]:
a b
0 0 0.0
1 0 0.0
2 0 0.0

Index对象

Series和DataFrame对象的显性索引其实是一个Index对象,可以看做一个不可变的数组或有序集合(元素可以重复)。

In [35]: ind = pd.Index([2,3,5,7])
In [36]: ind
Out[36]: Int64Index([2, 3, 5, 7], dtype='int64') #可以像数组一样索引
In [37]: ind[1]
Out[37]: 3 In [38]: ind[::2]
Out[38]: Int64Index([2, 5], dtype='int64') #与数组有相似的属性
In [40]: print(ind.size,ind.shape,ind.ndim,ind.dtype)
4 (4,) 1 int64 #可以进行数集运算
In [41]: indA = pd.Index([1,3,5,7,9])
In [42]: indB = pd.Index([2,3,5,7,8]) In [43]: indA & indB #交集
Out[43]: Int64Index([3, 5, 7], dtype='int64') In [44]: indA | indB #并集
Out[44]: Int64Index([1, 2, 3, 5, 7, 8, 9], dtype='int64') In [45]: indA ^ indB #异或
Out[45]: Int64Index([1, 2, 8, 9], dtype='int64')

Pandas对象(数据结构)的更多相关文章

  1. Pandas 的数据结构

    Pandas的数据结构 导入pandas: 三剑客 from pandas import Series,DataFrame import pandas as pd import numpy as np ...

  2. pandas的数据结构之series

    Pandas的数据结构 1.Series Series是一种类似于一维数组的对象,由下面两个部分组成: index:相关的数据索引标签 values:一组数据(ndarray类型) series的创建 ...

  3. Pandas之数据结构

    pandas入门 由于最近公司要求做数据分析,pandas每天必用,只能先跳过numpy的学习,先学习大Pandas库 Pandas是基于Numpy构建的,让以Numpy为中心的应用变得更加简单 pa ...

  4. pandas 的数据结构(Series, DataFrame)

    Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标 ...

  5. Pandas常用数据结构

    Pandas 概述 Pandas(Python Data Analysis Library)是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数 ...

  6. pandas 学习 第1篇:pandas基础 - 数据结构和数据类型

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

  7. pandas中数据结构-Series

    pandas中数据结构-Series pandas简介 Pandas是一个开源的,BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Python与Pan ...

  8. Pandas的使用(3)---Pandas的数据结构

    Pandas的使用(3) Pandas的数据结构 1.Series 2.DataFrame

  9. ES6中的Set和Map对象数据结构

    set对象数据结构 构建某一类型的对象 -对象的实例化 let arr = [1, 2, 3, 3, 4, 5] let rec = new Set(arr)//可以传参数,数组或者对象 consol ...

  10. 02. Pandas 1|数据结构Series、Dataframe

    1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index  . s.values # Series 数据结构 # Series 是带有标签的一 ...

随机推荐

  1. 【LeetCode数组#5行为模拟】螺旋矩阵II+I

    螺旋矩阵II 力扣题目链接(opens new window) 给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ ...

  2. 【Azure Key Vault】客户端获取Key Vault机密信息全部失败问题分析

    问题描述 在应用中获取存储在Azure Key Vault的机密信息,全部失败. 报错日志内容如下: [reactor-http-epoll-4] [reactor.netty.http.client ...

  3. TCP的链接和断开_wireShark实践

    目录 准备 TCP连接的三次握手 WireShark验证 TCP的四次挥手 WireShark验证 状态解释 其他的 # 概述 终于到了学习总结时间了 准备 TCP连接的三次握手 转自https:/ ...

  4. Rust 开发的高性能 Python 包管理工具,可替换 pip、pip-tools 和 virtualenv

    最近,我在 Python 潮流周刊 中分享了一个超级火爆的项目,这还不到一个月,它在 Github 上已经拿下了 8K star 的亮眼成绩,可见其受欢迎程度极高!国内还未见有更多消息,我趁着周末把一 ...

  5. putty配置kali linux 远程连接

    首先配置sshd_config文件 VI 编辑或者使用 gedit 文本编辑, 修改的内容包括下面几个 红色标出(为了以复原建议大家 拷贝一份或者修改的地方进行标注) 之后重启服务,但是有的还是存在报 ...

  6. Jetpack Compose(3) —— 状态管理

    上一篇文章拿 TextField 组件举例时,提到了 State,即状态.本篇文章,即讲解 State 的相关改概念. 一.什么是状态 与其它声明式 UI 框架一样,Compose 的职责非常单纯,仅 ...

  7. 音乐分层软件 spectralayers7 扒歌 简直就是黑科技

    音乐分层软件 spectralayers7 扒歌 简直就是黑科技

  8. pod为什么会被驱逐及如何避免pod被驱逐导致的服务中断

    Pod被驱逐的原因主要有以下几点: 资源不足:当节点资源(如CPU.内存.存储等)不足以满足Pod的资源需求时,调度器会选择将其中一个或多个Pod驱逐出节点,以便在资源有限的节点上安排新的Pod. 超 ...

  9. day18--Java集合01

    Java集合01 1.什么是集合? 前面我们保存数据使用的是数组,数组有不足的地方,我们来分析一下: 长度开始时必须指定,而且一但指定不能更改 保存的必须是同一类型的元素 使用数组进行增加/删除元素的 ...

  10. jquery之获取某个元素上的事件

    jquery的给元素绑定的事件可以用data方法取出来 通过$(element).data("events")来获取 // 比如给一个button绑定两个click事件 $(&qu ...