pandas数据结构介绍

冷暖自知 提交于 2020-03-09 04:42:52

一、Series
(一)定义
是一种一维的数组型对象,包含了一个值序列,并且包含了数据标签,称为索引。Series可以认为它是一个长度固定且有序的字典,因为它将索引值和数据值按位置配对。
(二)创建
第一种方式:默认的索引
import pandas as pd
x = pd.Series([3,4,8,7])
print(x)
返回值为
0 3
1 4
2 8
3 7
dtype: int64
第二种方式:定义索引
import pandas as pd
x = pd.Series([3,4,8,7],index=[‘a’,‘b’,‘c’,‘d’])
print(x)
返回值为
a 3
b 4
c 8
d 7
dtype: int64
第三种方式:通过使用已有的字典生成一个Series
(1)直接将字典的键值对传进函数
import pandas as pd
a={‘a’:3,‘b’:4,‘c’:8,‘d’:7}
x = pd.Series(a)
print(x)
返回值为
a 3
b 4
c 8
d 7
dtype: int64
(2)将字典的键值传入和一个新建的索引列表传进函数
import pandas as pd
a={‘a’:3,‘b’:4,‘c’:8,‘d’:7}
b=[‘a’,‘b’,‘c’,‘e’]
x = pd.Series(a,index=b)
print(x)
返回值为
a 3.0
b 4.0
c 8.0
e NaN
dtype: float64
#因为e没有出现在a中,所以它对应的值为NaN(not a number),这是pandas中标记缺失值或NA值的方式
(三)查询(类似于字典表)
1、x.values 查询x的值
2、x.index 查询x的索引
3、x[‘a’] 通过索引查找值,查询x中索引为a的值
4、x[条件] 通过某个条件来查找x的值
例如:
import pandas as pd
x = pd.Series([3,4,8,7],index=[‘a’,‘b’,‘c’,‘d’])
print(x[x>5])
返回值为
c 8
d 7
dtype: int64
(四)处理数据缺失
1、.isnull()
2、.notnull()
(五)name属性
1、将Series命名
例如: x.name=‘powder’
2、将索引命名
例如: x.index.name=‘powder’
(六)索引的修改(通过按照索引位置的顺序来赋值的方式来修改)
x.index=[‘d’,‘e’,‘a’]
二、DataFrame
(一)定义
是一个二维数据,表示矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被视为一个共享相同索引的Series的字典。在DataFrame中,数据被存储为一个以上的二维块,而不是列表、字典或其他一维数组的集合。
(二)创建
1、利用包含等长度列表或NumPy数组的字典来形成DataFrame,产生的DataFrame会自动为Sereies分配索引,并且列会按照排序的顺序排列
例如:
(1)不指定column的顺序
import pandas as pd
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)
print(frame)
返回值为
state year pop
0 ohio 2000 1.5
1 ohio 2001 1.7
2 ohio 2002 3.6
3 nevada 2001 2.4
4 nevada 2002 2.9
5 nevada 2003 3.2
(2)指定colunm的顺序
import pandas as pd
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,columns=[‘year’,‘state’,‘pop’])
print(frame)
返回值为
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
(3)指定索引
import pandas as pd
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,columns=[‘year’,‘state’,‘pop’,‘debt’],index=[‘one’,‘two’,‘three’,‘four’,‘five’,‘six’])
print(frame)
返回值为
year state pop debt
one 2000 ohio 1.5 NaN
two 2001 ohio 1.7 NaN
three 2002 ohio 3.6 NaN
four 2001 nevada 2.4 NaN
five 2002 nevada 2.9 NaN
six 2003 nevada 3.2 NaN
(三)查询
1、.head() #括号里面不指定数字的话默认选出头部的五行
2、按照字典型标记或属性来检索
例如:
(1)x[colunm]可以查询并创建新的列
print(frame[‘state’])
返回值为
one ohio
two ohio
three ohio
four nevada
five nevada
six nevada
Name: state, dtype: object
(2)x.column只可以查询并不能创建新的列
print(frame.year)
返回值为
one 2000
two 2001
three 2002
four 2001
five 2002
six 2003
Name: year, dtype: int64
3通过行来查询.loc[索引]
print(frame.loc[‘one’])
返回值为
year 2000
state ohio
pop 1.5
debt NaN
Name: one, dtype: object
(四)修改(注意从DataFrame中选取的列是数据的视图,而不是拷贝。因此,对Series的修改会映射到DataFrame中。如果需要复制,则应当显式地使用Series的copy方式)
1、x[colunm]通过这种方式来查询或者进行赋值修改(将列表或数组赋值给一个列时,值的长度必须和DataFrame的长度相匹配。将Series赋值给一列时,Series的索引将会按照DataFrame的索引重新排列,并在空缺的地方填充缺失值,如果被赋值的colunm并不存在,则会生成一个新的列)
例如:
import pandas as pd
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,columns=[‘year’,‘state’,‘pop’,‘debt’],index=[‘one’,‘two’,‘three’,‘four’,‘five’,‘six’])
val =pd.Series([-1.2,-1.5,-1.7],index=[‘two’,‘four’,‘five’])
frame[‘debt’]=val
print(frame)
返回值为
year state pop debt
one 2000 ohio 1.5 NaN
two 2001 ohio 1.7 -1.2
three 2002 ohio 3.6 NaN
four 2001 nevada 2.4 -1.5
five 2002 nevada 2.9 -1.7
six 2003 nevada 3.2 NaN
(五)删除列 del x[colunm]
(六)包含字典的嵌套字典
1、创建
如果嵌套字典被赋值给DataFrame,pandas会将字典的键作为列,将内部字典的键作为行索引。
import pandas as pd
pop ={‘nevada’:{2001:2.4,2002:2.9},‘ohio’:{2000:1.5,2001:1.7,2002:3.6}}
frame =pd.DataFrame(pop)
print(frame)
返回值
nevada ohio
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
2、name属性(DataFrame的索引和列拥有name属性)
frame.index.name=‘year’
frame.columns.name=‘state’
print(frame)
返回值
state nevada ohio
year
2000 NaN 1.5
2001 2.4 1.7
2002 2.9 3.6
(七)DataFrame的构造函数的有效输入
在这里插入图片描述
三、索引对象
(一)定义
用于存储轴标签和其他元数据的(例如轴名称或标签),在构建Series或DataFrame时,所使用的任意数组或标签序列都可以在内部转换为索引对象
(二)特点
索引对象是不可变得,因为无法修改索引对象
(三)一些索引对象的方法和属性
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!