pandas的数据结构

pandas的两个主要的数据结构:

Series

series是一种类似于一维数组的对象,它由一组数据(NumPy数组类型的数据)和一组与之相关的数据标签(索引)组成。

1 from pandas import Series
2
3 obj = Series((1,2,3,4,5))
4 obj.index #索引,默认从0开始的整数
5 obj.values #array数组
6
7 #自定义索引的Series
8 obj_with_index = Series([4,65,3,4],index=[‘a‘,‘b‘,‘c‘,‘d‘])
9 print(obj_with_index)

可以通过索引的方式选取或修改单个或一组值

 1 >>> from pandas import Series
 2 >>> obj = Series([1,2,3,4],index=(‘a‘,‘b‘,‘c‘,‘d‘))
 3 >>> obj
 4 a    1
 5 b    2
 6 c    3
 7 d    4
 8 dtype: int64
 9 >>> obj[‘a‘]
10 1
11 >>> obj[‘c‘] = 8
12 >>> obj
13 a    1
14 b    2
15 c    8
16 d    4
17
18 >>> obj[(‘a‘,‘b‘,‘d‘)] = (11,12,14)
19 >>> obj
20 a    11
21 b    12
22 c     8
23 d    14
24 dtype: int64
25 >>>

对其对象进行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中唯一的数组

原文地址:https://www.cnblogs.com/zuoshoushizi/p/8729173.html

时间: 2024-11-05 21:56:01

pandas的数据结构的相关文章

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

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

pandas的数据结构之一series

Pandas的数据结构 1.Series Series是一种类似于一维数组的对象,由下面两个部分组成: index:相关的数据索引标签 values:一组数据(ndarray类型) series的创建方法: 1.直接传入一个列表 s1 = Series([1,2,3,4])s1 0 1 1 2 2 3 3 4 dtype: int64 查看series对象的属性: s1.index # 索引 s1.values 还可以带上index参数,表示里这个参数作为索引 s2 = Series(data=

pandas 的数据结构(Series, DataFrame)

Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. pandas提供了大量能使我们快速便捷地处理数据的函数和方法.你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一. Series:一维数组,与Numpy中的一维array类似. 二者与Python基本的数据结构List也

Pandas | 01 数据结构

Pandas的三种数据结构: 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构,构建在Numpy数组之上,这意味着它们很快 维数和描述 考虑这些数据结构的最好方法是,较高维数据结构是其较低维数据结构的容器. 例如,DataFrame是Series的容器,Panel是DataFrame的容器. 数据结构 维数 描述 系列 1 1D标记均匀数组,大小不变. 数据帧 2 一般2D标记,大小可变的表结构与潜在的异质类型的列. 面板 3 一般3D标记,大小可变数组. 构

3、pandas的数据结构之Series——增删改数据

一.修改Series  二.Series增加数据 append函数和列表的append函数类似,将另外一个series连接在某series后边. Series删除数据 删除在Series很少用.常用布尔选择或mask来选择数据组成新的Series,而原来的Series没有变 原文地址:https://www.cnblogs.com/yhms/p/12244014.html

pandas数据分析(数据结构)

本文主要从以下两个方向对pandas的数据结构进行展开,分别为Series和DataFrame(对应的分别是系列与numpy中的一维数组和二维数组) 1.首先从Series讲起,主要介绍Series的创建. 1) 可以通过一位数组进行创建序列 如:在python3.6中测试 #首先导入两个模块, import numpy as np import pandas as pd #创建第一个序列 array1=np.arange(10) print (array1) print(type(array1

Pandas简易入门(三)

本节主要介绍一下Pandas的数据结构,本文引用的网址:https://www.dataquest.io/mission/146/pandas-internals-series 本文所使用的数据来自于:https://github.com/fivethirtyeight/data/tree/master/fandango 该数据主要描述了一些电影的烂番茄评分情况   数据结构 在Pandas中,主要有三种重要的数据结构: Series(值的集合) DataFrame(Series的集合) Pan

十分钟(小时)学习pandas

十分钟(小时)学习pandas 一.导语 这篇文章从pandas官网翻译:链接,而且也有很多网友翻译过,而我为什么没去看他们的,而是去官网自己艰难翻译呢? 毕竟这是一个学习的过程,别人写的不如自己写的记忆深刻.那么开始吧. 1.pandas是什么? pandas是基于numpy的数据分析库(如果你没了解过numpy,可以在我的博客看numpy相关的文章),提供快速.灵活和富有表现力的数据结构. pandas的数据结构分为Series(一维)和DataFrame(二维).这两个主要的数据结构在金融

pandas DataFrame和Series

Pandas入门-Series和DataFrame 概述:pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具,pandas是基于Numpy构建的.pandas在过去的几年中逐渐成长为一个非常强大的库. pandas的数据结构介绍 引入pandas >>> from pandas import Series,DataFrame >>> import pandas as pd pandas有两个主要的数据结构:Series和DataFrame. Serie