pandas(零)数据结构
pandas的两个主要的数据结构:
Series
series是一种类似于一维数组的对象,它由一组数据(NumPy数组类型的数据)和一组与之相关的数据标签(索引)组成。
from pandas import Series obj = Series((1,2,3,4,5))
obj.index #索引,默认从0开始的整数
obj.values #array数组 #自定义索引的Series
obj_with_index = Series([4,65,3,4],index=['a','b','c','d'])
print(obj_with_index)
可以通过索引的方式选取或修改单个或一组值
>>> from pandas import Series
>>> obj = Series([1,2,3,4],index=('a','b','c','d'))
>>> obj
a 1
b 2
c 3
d 4
dtype: int64
>>> obj['a']
1
>>> obj['c'] = 8
>>> obj
a 1
b 2
c 8
d 4 >>> obj[('a','b','d')] = (11,12,14)
>>> obj
a 11
b 12
c 8
d 14
dtype: int64
>>>
对其对象进行NumPy运算的时候会保留索引和值之间的链接
>>> obj -2
a 9
b 10
c 6
d 12
dtype: int64
>>> obj[obj > 10]
a 11
b 12
d 14
dtype: int64
>>>
还可以将Series对象看成一个定长的有序的字典,一个索引和值组成的键值对的映射。
可以应用在很多需要字典参数的函数中,例如函数的关键字参数
利用字典作为参数生成一个自定义索引的Series对象
>>> metadata = {"a":1,"b":2,"c":3}
>>> data= Series(metadata)
>>> data
a 1
b 2
c 3
dtype: int64
根据索引去建对象,如果字典的键中没有在索引中,则不会创建该索引-值的映射,索引不在字典的键中,则会对该索引创建一个Nan值(表示缺失或NA值)
可以利用isnull和notnull去判断是不是Nan值
>>> states = ['b','c','d','e']
>>> obj4 = Series(metadata,index = states)
>>> obj4
b 2.0
c 3.0
d NaN
e NaN
dtype: float64 >>> import pandas as pd
>>> pd.isnull(obj4)
b False
c False
d True
e True
dtype: bool
>>> pd.notnull(obj4)
b True
c True
d False
e False
dtype: bool
#series对象本身就有isnull和notnull方法
>>> obj4.isnull()
b False
c False
d True
e True
dtype: bool
>>> obj4.notnull()
b True
c True
d False
e False
dtype: bool
Series一个最重要的功能就是在算术运算中会自动对齐索引。
Series对象及其索引都有一个name属性
dtype: bool
>>> obj4.name ="numpy_array"
>>> obj4.index.name = 'letter'
>>> obj4
letter
b 2.0
c 3.0
d NaN
e NaN
Name: numpy_array, dtype: float64
DataFrame:
DataFrame是一个表格型的数据结构,它含有一组有序的列,每一列可以是不同的值类型。DataFrame不仅有列索引,还有行索引。DataFrame中的数据是以一个或多个二维块存放的。
用等长列表或NumPy数组组成的字典去创建DataFrame对象
>>> data = {'name':['li','wang','yang','sun'],'height':[1.7,1.8,1.6,1.55],'age':[30,31,34,61]}
>>> df_obj = DataFrame(data)
>>> df_obj
age height name
0 30 1.70 li
1 31 1.80 wang
2 34 1.60 yang
3 61 1.55 sun
如果原始数据是嵌套的字典,会将外层字典的建作为列,内层字典的键做为行索引
如果指定了列序列,就会按照指定的列序列的顺序进行排列,行序列会自动生成
>>> df_obj = DataFrame(data,columns=['name','age','height'])
>>> df_obj
name age height
0 li 30 1.70
1 wang 31 1.80
2 yang 34 1.60
3 sun 61 1.55
如果传入的列在数据中找不到也会产生Nan值
>>> df_obj = DataFrame(data,columns=['name','age','height','weight'],index=('a','b','c','d'))
>>> df_obj
name age height weight
a li 30 1.70 NaN
b wang 31 1.80 NaN
c yang 34 1.60 NaN
d sun 61 1.55 NaN
>>>
可以通过字典标记的方式或属性的方式,将DataFrame的列获取为一个Series:
>>> df_obj.columns
Index(['name', 'age', 'height', 'weight'], dtype='object')
>>> df_obj.name
a li
b wang
c yang
d sun
Name: name, dtype: object
>>> df_obj['name']
a li
b wang
c yang
d sun
Name: name, dtype: object
ps:在获取列的时候不仅继承了原来的索引,还将Series的name属性设置好了
也可以给列赋值,但如何是将列表或数组赋值给某列,其长度必须跟DataFrame的长度相同,如果复制的是一个Series对象,就会根据索引去精确匹配
>>> df_obj.weight = 200
>>> df_obj
name age height weight
a li 30 1.70 200
b wang 31 1.80 200
c yang 34 1.60 200
d sun 61 1.55 200
删除列用del关键字
>>> del df_obj['weight']#注意:这里不能用列的属性,即:del df_obj.weigt是错误的
>>> df_obj
name age height
a li 30 1.70
b wang 31 1.80
c yang 34 1.60
d sun 61 1.55
dataframe对象也可以转置
>>> df_obj.T
a b c d
name li wang yang sun
age 30 31 34 61
height 1.7 1.8 1.6 1.55
索引对象
index对象不能被修改,这样保证了多个数据结构能够安全共享
创建索引对象及在Series或DataFrame中使用
>>> index = pd.Int64Index(range(1,6))
>>> index
Int64Index([1, 2, 3, 4, 5], dtype='int64')
>>> data = Series((11,22,33,44,55),index=index)
>>> data
1 11
2 22
3 33
4 44
5 55
>>> index.append(pd.Index((6,)))
Int64Index([1, 2, 3, 4, 5, 6], dtype='int64')
pandas的索引对象
类 | 说明 |
Index | 最泛化的Index对象,将轴标签表示为一个由python对象组成的NumPy数组 |
Int64Index | 针对整数的特殊Index |
MultiIndex | 层次化索引对象,表示单个轴上的多层索引。可以看作由元组组成的数组 |
DatatimeIndex | 存储纳秒级时间戳 |
PeriodIndex | 针对Period数据(时间间隔)的特殊Index |
Index对象的方法与属性
方法 | 属性 |
---|---|
append | 链接另一个index对象,产生一个新的Index |
diff | 计算差集,并得到一个Index |
intersection | 计算交集 |
union | 计算并集 |
isin | 计算一个指示各值是否都包含在参数集合中的布尔型数组 |
delete | 产出索引i出的元素,并得到新的Index |
drop | 删除传入的值,并得到新的Index |
insert | 将元素插入到索引i处,并得到新的Index |
is_monotonic | 将各元素均大于等于前一个元素时,返回True |
is_unique | 将Index没有重复值时,返回True |
unique | 返回Index中唯一的数组 |
pandas(零)数据结构的更多相关文章
- Pandas 的数据结构
Pandas的数据结构 导入pandas: 三剑客 from pandas import Series,DataFrame import pandas as pd import numpy as np ...
- pandas的数据结构之series
Pandas的数据结构 1.Series Series是一种类似于一维数组的对象,由下面两个部分组成: index:相关的数据索引标签 values:一组数据(ndarray类型) series的创建 ...
- Pandas的使用(3)---Pandas的数据结构
Pandas的使用(3) Pandas的数据结构 1.Series 2.DataFrame
- Pandas之数据结构
pandas入门 由于最近公司要求做数据分析,pandas每天必用,只能先跳过numpy的学习,先学习大Pandas库 Pandas是基于Numpy构建的,让以Numpy为中心的应用变得更加简单 pa ...
- pandas中数据结构-Series
pandas中数据结构-Series pandas简介 Pandas是一个开源的,BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Python与Pan ...
- 02. Pandas 1|数据结构Series、Dataframe
1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index . s.values # Series 数据结构 # Series 是带有标签的一 ...
- Python数据分析Pandas库数据结构(一)
pandas数据结构 1.生成一维矩阵模拟数据 import pandas as pdimport numpy as nps = pd.Series([1,2,3,4,np.nan,9,9])s2 = ...
- pandas 的数据结构(Series, DataFrame)
Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标 ...
- pandas 的数据结构Series与DataFrame
pandas中有两个主要的数据结构:Series和DataFrame. [Series] Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引. ...
- pandas的数据结构
要使用pandas,需要熟悉它的两个主要的数据结构,Series和DataFrame. Series series是一种类似于以为数组的对象,它由一组数据(各种numpy的数据类型)以及一组与之相关的 ...
随机推荐
- iOS SDK具体解释之NSCopying协议
原创blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 欢迎关注我的iOS SDK具体解释专栏 http://blog.csdn ...
- [转]详解JS闭包
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 闭包的特性 闭包有三个特性: 1.函数嵌套函数 2.函数内部可以引用外部的参数和变量 3.参数 ...
- tic-tac-toe游戏代码
package com.p4f.tictactoe.demo; import javax.swing.border.Border; public class Board { /** * positio ...
- TPM Key相关概念
1. Storage Keys:存储密钥,用来加密数据和其它密钥的通用非对称密钥,这里的其它密钥可以是另外一个存储密钥,也可以是绑定密钥或签名密钥.它本身是长度2048bit的RSA私钥:它既可以是可 ...
- hdu5794 A Simple Chess 容斥+Lucas 从(1,1)开始出发,每一步从(x1,y1)到达(x2,y2)满足(x2−x1)^2+(y2−y1)^2=5, x2>x1,y2>y1; 其实就是走日字。而且是往(n,m)方向走的日字。还有r个障碍物,障碍物不可以到达。求(1,1)到(n,m)的路径条数。
A Simple Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- Eclipse 任务管理
管理任务 在Eclipse中用TODO标签管理任务,利用这个功能可以方便地将项目中一些需要处理的任务记录下来. 我们可以在 Java 代码中的注释添加 TODO 单词来标记一个任务,任务可以通过 Ta ...
- Eclipse 编译项目
Eclipse 编译项目 编译 Java 项目 一个项目可以关联多个编译器. java 项目关联的是 java 编译器.可以通过以下方式来查看项目关联的编译器: 在 Package Explorer ...
- android EditText 限定中文个数与英文个数的解决方式
EditText 限定中文8个英文16个的解决方法. 在EditText上控件提供的属性中有限定最大最小长度的方法. 可是,对于输入时,限定中文8个英文16个时,怎么办?相当于一个中文的长度是两个英文 ...
- 从外部访问 Template (模板)的控件、获取它的属性值
DataTemplate 和 ControlTemplate 两个类均派生自 FrameWorkTemplate类.这个类有个 FindName方法 供我们查询内部控件. ControlTempla ...
- 关闭QQ看点
手机qq联系人 然后右上角公众号 然后看到看点 取消关注!!!