前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Pandas】pandas的主要数据结构

【Pandas】pandas的主要数据结构

作者头像
树枝990
发布2020-08-19 20:19:57
1.3K0
发布2020-08-19 20:19:57
举报
文章被收录于专栏:拇指笔记拇指笔记

1. pandas入门篇

pandas是数据分析领域的常用库,它被专门设计来处理表格和混杂数据,这样的设计让它在数据清洗和分析工作上更有优势。

1. pandas数据结构

pandas的数据结构主要为:

Series和DataFrame

1.1 Series

Series类似一维数组,它由一组数据和一组与之相关的数据标签组成。Series的表现形式为索引在左值在右。没有制定索引时,自动创建一个0到N-1(N:数据长度)的整数型索引。

创建方法

代码语言:javascript
复制
#pd.Series创建一个Seies
obj = pd.Series([4,7,-5,3])

Out:
0    4
1    7
2   -5
3    3
dtype: int64

使用字典创建Series

代码语言:javascript
复制
#创建的Series的索引就是字典的键。
In[1]:
data = {'a':4,'b':7,'c':-5,'d':4}
sdata = pd.Series(data)

#改变键的位置来传入可以改变Series的顺序。
#当输入的索引找不到对应值时,结果为NaH。
In[2]:
data = {'a':4,'b':7,'c':-5,'d':4}
index_d = ['d','c','a','e']
sdata = pd.Series(sdata,index=index_d)

Out[1]:
a    4
b    7
c   -5
d    4
dtype: int64
    
Out[2]:
d    4.0
c   -5.0
a    4.0
e    NaN
dtype: float64

自定义索引

代码语言:javascript
复制
obj = pd.Series([4,7,-5,4],index = ['a','b','c','d'])

Out:
a    4
b    7
c   -5
d    4
dtype: int64

通过操作index属性,同样可以获取索引

代码语言:javascript
复制
obj.index

Out:
    Index(['a', 'b', 'c', 'd'], dtype='object')

对Series进行运算

使用NumPy函数或类似NumPy的运算都会保留索引。

代码语言:javascript
复制
In[1]:obj[obj>0]	#布尔过滤
Out[1]:
a    4
b    7
d    4
dtype: int64

In[2]:obj*2
Out[2]:
a     8
b    14
c   -10
d     8
dtype: int64

In[3]:np.exp(obj)
Out[3]:
a      54.598150
b    1096.633158
c       0.006738
d      54.598150
dtype: float64

检测缺失数据

pandas的isnull和notnull可用于检测缺失数据。

代码语言:javascript
复制
In[1]:
data = {'a':4,'b':7,'c':-5,'d':4}
index_d = ['d','c','a','e']
sdata = pd.Series(sdata,index=index_d)

pd.isnull(sdata)

In[2]:
data = {'a':4,'b':7,'c':-5,'d':4}
index_d = ['d','c','a','e']
sdata = pd.Series(sdata,index=index_d)

pd.notnull(sdata)

Out[1]:
d    False
c    False
a    False
e     True
dtype: bool

Out[2]:
d     True
c     True
a     True
e    False
dtype: bool

Series的自动对齐属性

将两个Series相加,Series会根据运算的索引标签自动对齐数据。

代码语言:javascript
复制
In[1]:
data = {'a':4,'b':7,'c':-5,'d':4}
index_d = ['d','c','a','e']
sdata = pd.Series(sdata,index=index_d)
print(sdata)
sdata2 = pd.Series(data)
print(sdata2)

Out[1]:
stdata:
	d    4.0
	c   -5.0
	a    4.0
	e    NaN
	dtype: float64
	
sdata2:
	a    4
	b    7
	c   -5
	d    4
	dtype: int64
	
In[2]:
sdata+sdata2

Out[2]:

a     8.0
b     NaN
c   -10.0
d     8.0
e     NaN
dtype: float64

Series的name属性

代码语言:javascript
复制
In[1]:
data = {'a':4,'b':7,'c':-5,'d':4}
index_d = ['d','c','a','e']
sdata = pd.Series(sdata,index=index_d)

sdata.name = 'pandas'
sdata.index.name = 'index'

Out[1]:

index
d    4.0
c   -5.0
a    4.0
e    NaN
Name: pandas, dtype: float64

1.2 DataFrame

DataFrome是一个表格型的数据结构。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多 个二维块存放的(而不是列表、字典或别的一维数据结构)。

创建DataFrame

字典创建

最常用的方法时直接传入一个由等长列表或NumPy数组组成的字典。

代码语言:javascript
复制
In[1]:
data={
'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],	
'year':	[2000,	2001,	2002,	2001,	2002,	2003],
'pop':	[1.5,	1.7,	3.6,	2.4,	2.9,	3.2]
}
Frame = pd.DataFrame(data)

Out[1]:
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002
5  3.2  Nevada  2003

由结果可以看出,DataFrame自动加上了一个有序排列作为索引。

对于数据量庞大的DataFrame,head方法会选取前五行。

代码语言:javascript
复制
In[1]:
frame.head()
Out[1]:
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

与Series相似,改变字典键的顺序,同样会改变列的顺序。

代码语言:javascript
复制
In[1]:
Frame = pd.DataFrame(data,columns=['year','state','pop'])

Out[1]:
   year   state  pop
0  2000    Ohio  1.5
1  2001    Ohio  1.7
2  2002    Ohio  3.6
3  2001  Nevada  2.4
4  2002  Nevada  2.9
5  2003  Nevada  3.2

与Series相似,传入的值找不到时,也会被标记为Nah。

字典嵌套创建

嵌套字典传给DataFrame时,外层字典的键作为列,内层键作为行索引

代码语言:javascript
复制
In[1]:
pop	=	
{'Nevada':{2001:2.4,2002:2.9},
....:'Ohio':	{2000:1.5,2001:	1.7,2002:3.6}}

Out[1]:
      Nevada  ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

操作DataFrame

通过类似字典的方式,可以将DataFrame的列获取为一个Series。返回的Series有着与DtaFrame相同的索引且其name属性为列索引。

代码语言:javascript
复制
In[1]:
Frame['state']

Out[1]:
0      Ohio
1      Ohio
2      Ohio
3    Nevada
4    Nevada
5    Nevada
Name: state, dtype: object

列可以通过赋值的方法进行修改。注意:将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度匹配;将Series赋值给一个列时,会精确匹配DataFrame的索引,空位将被用NaH替代。

代码语言:javascript
复制
In[1]:
#也可以用类似的方法进行添加列
Frame['pop'] = np.arange(6)

Out[1]:
   year   state  pop
0  2000    Ohio    0
1  2001    Ohio    1
2  2002    Ohio    2
3  2001  Nevada    3
4  2002  Nevada    4
5  2003  Nevada    5

关键字del可以被用来删除列。

代码语言:javascript
复制
In[1]:
del Frame['pop']

Out[1]:
   year   state
0  2000    Ohio
1  2001    Ohio
2  2002    Ohio
3  2001  Nevada
4  2002  Nevada
5  2003  Nevada

DataFrame构造器能接收的数据


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拇指笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. pandas入门篇
    • 1. pandas数据结构
      • 1.1 Series
      • 创建方法
      • 使用字典创建Series
      • 自定义索引
      • 对Series进行运算
      • 检测缺失数据
      • Series的自动对齐属性
      • Series的name属性
      • 1.2 DataFrame
      • 创建DataFrame
      • 操作DataFrame
      • DataFrame构造器能接收的数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档