首先,这两种数据类型是python中pandas包中的,使用之前记得导包
目录
初步认识
1、DataFrame可以看成一个矩形表格(比如m行n列的数据)甚至是整个表格,存储的是二维的数据,可以被看做是由Series组成的字典,每一个坐标轴都有自己的标签。
2、Series则是DataFrame中的一列,存储的是一维的数据。
series
组成
Series中包含data(序列值)、index(行索引) 、dtype(存储类型)、name (序列名)四部分属性。
创建
import pandas as pd
s = pd.Series(data = [102,103,104,105],
index = ['小明','小强','小红','小兰'],
dtype = 'int',
name = '语文')
print(s)
(其中index、dtype、name等属性并不是必需要设置的)
获取
Series获取多个值的方式类似Numpy中的ndarray的切片操作,通过方括号+下标值/索引值+冒号(:)的形式来截取series对象中的一部分数
#引入模块
import pandas as pd
import numpy as np
#检索第一个元素。
ser05 = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(ser05[1])
print(ser05['a'])
print(ser05['d'])
运算
#引入模块
import pandas as pd
import numpy as np
series = pd.Series({'a':941,'b':431,'c':9327})
series
#输出大于500的值
series[series>500]
#计算加
series+10
#计算减
series-100
#计算乘
series*10
#两个系列相加
ser01 = pd.Series([1,2,3])
ser02 = pd.Series([4,5,6])
ser01+ser02
#)计算各个元素的指数e的x次方 e 约等于 2.71828
np.exp(series)
np.abs(series)
#sign()计算各个元素的正负号: 1 正数,0:零,-1:负数
np.sign(series)
Series及其索引的name属性
dataframe
创建
创建的方式有很多
(1)直接创建
#创建日期索引序列
dates =pd.date_range('20130101', periods=6)
print(type(dates))
#创建Dataframe,其中 index 决定索引序列,columns 决定列名
df =pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
print(df)
(2)字典创建 DataFrame
df2 =pd.DataFrame({'A' : 1.,
'B': pd.Timestamp('20130102'),
'C': pd.Series(1,index=list(range(4)),dtype='float32'),
'D': np.array([3]*4,dtype='int32'),
'E': pd.Categorical(["test","train","test","train"]),
'F':'foo' })
print(df2)
(3)从列表创建DataFrame
data = [1,2,3,4]
df02 = pd.DataFrame(data)
print(df02)
(4)从列表字典来创建DataFrame
data = {'Name':['Tom','Jack','Steve'],'Age':[19,18,20]}
# df04 = pd.DataFrame(data)
#指定行索引和列索引
df04 = pd.DataFrame(data,index = ['rank1','rank2','rank3'],columns = ['Name','Age','Sex'])
print(df04)
(5)从字典列表创建数据帧DataFrame
data = [{'a':1,'b':2},{'a':1,'b':2,'c':3}]
# df05 = pd.DataFrame(data)
#传递字典列表指定行索引
# df05 = pd.DataFrame(data,index = ['first','second'])
#传递字典列表指定行索引,列索引
df05 = pd.DataFrame(data,index = ['first','second'],columns = ['a','b','c','d'])
print(df05)
(6)从系列的字典来创建DataFrame
data = {
'one':pd.Series([1,2,3],index = ['a','b','c']),
'two':pd.Series([1,2,3,4],index = ['a','b','c','d'])
}
df06 = pd.DataFrame(data)
print(df06)
数据操作
列选择
#直接通过列索引来获取某一列的值
df06['one']
列添加
df06['three'] = pd.Series([10,20,30],index = ['a','b','c'])
列修改
#直接通过列名进行修改
df06['three'] = [7,8,9,10]
列删除
#使用del删除列
# del(df06['three'])
#使用pop删除
df06.pop('two')
行选择
#可以通过将行标签传递给loc函数或者ix函数来选择行
# df06.loc['a']
df06.loc[:,'two']
# df06.ix['a']
# 按整数位置选择
# 可以通过将整数位置传递给iloc函数来选择行。参考以下示例代码 -
df06.iloc[2]
# 行切片
# 可以使用:运算符选择多行。参考以下示例代码 -
df06[2:4]
行添加
# 添加加行
# 使用append()函数将新行添加到DataFrame。 此功能将附加行结束。
#创建一行数据
# data2 = pd.DataFrame([{'one':22,'two':33,'three':44}],index = ['e'])
data2 = pd.DataFrame([[22,33,44]],columns = ['one','two','three'],index = ['f'])
# data2
df06 = df06.append(data2)
df06
行删除
df06 = df06.drop('e')