美文网首页
2.基本数据类型Series和DataFrame

2.基本数据类型Series和DataFrame

作者: soyouwantme | 来源:发表于2018-08-19 16:22 被阅读0次

Series和DataFrame结构


DataFrame

DataFrame数据结构是一种二维的结构。整个DataFrame包括三个部分:

  • 索引(index)
  • 表头(column)
  • 数值(data)

各列的数据类型可以不同。

Series

一维结构,带索引的一维数组,并且其中的数据类型一致。

DataFrame的任意一行或一列就是一个Series对象,比如我们通过.loc[0]获取到第一个样本:

sampel = data.loc[0]
print (sample)

Series对象的表现形式为:索引在左,取值在右。

从DataFrame中得到的Series会自动分配两个属性:namedtype
对于输出(print)的Series对象,最后的Name:0表示该样本为第一个样本,dtype:object表示数据类型为object

可以通过.index.values取出Series数据:

sample.index
sample.values

创建Series对象


最基本方式:

pd.Series(data,index=index)

其中data可以为:

  • 一个ndarray
  • 一个Python字典
  • 一个标量值

从ndarray创建

Pandas支持重复的索引值,index必须与data(ndarry)一样长。

pd.Series(ndarry,index=['a','a','b','c'])

或者省略index,index会默认为整数0到n-1,n为数据长度。

pd.Series(ndarry)

从字典创建

Python字典中的键:值与Series中的索引:值对应。所以可以直接转换:

d={'a':0.12, 'b':0.33, 'c':-0.17}
pd.Series(d)

从标量创建

即用单个数值直接创建:

pd.Series(2,index=['a','b','c'])

Series对象的相关操作


数据索引与筛选

s=pd.Series(np.random.randn(4),index=['a','a','c','d'])

s[0]
#取第一个值
s[:2]
#取第1-3个值
s[[1,3]]
#取第1,3个值
s[s<s.mean()]

s['a']

s[['c','d']]

'c' in s
#输出:True

算术运算

s+3
#s的全部数值+3
np.abs(s)
#绝对值

在算术运算中,会自动通过index对齐数据,然后分别对index相同的数据计算。

唯一值与个数统计

unique():返回Series去重后的数组。
values_counts():查看每一个元素(data)的频数。
astype():类型转换。如:

s1=s0.astype('float32')

Pandas包含的数据类型:

类型 说明
object 字符串或混合类型
int 整型
float 浮点型
datetime 时间类型
bool 布尔型

创建DataFrame对象


pd.DataFrame(data,index=index,columns=cloumns)

data允许为:

  • 包含列表、字典或Series的字典
  • 二维numpy.ndarray
  • 一个Series
  • 另一个DataFrame

从字典创建

d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two' : pd.Series([1., 2., 4.], index=['a', 'b', 'd'])}
df = pd.DataFrame(d)

从Series创建

s=pd.Series([1,2,3],index=['a','b','c'])
pd.DataFrame(s,columns=['first'])

DataFrame对象的相关操作


数据筛选

df[df['one'] > 1]

删除和添加一列

df['three'] = df['one'] + df['two']
df['flag'] = df['one'] > 1
#
df.insert(1, 'bar', df['one'])
#在位置1插入与one包含相同数据的一列bar
del df['flag']
#
bar = df.pop('bar')
#删除并将删除的值赋给bar

修改列名

d = {'one':'first'}
df.rename(columns=d)
#将one改为first

DataFrame的显示


DataFrame的显示可以调用pd.set_option()实现。

参数 含义
display.max_columns 如果列数超过该值,则使用截断浏览模式,中间的部分样本用省略号略过,默认值为20
display.max_rows 如果行数超过该值,则使用截断浏览模式,中间的部分样本用省略号略过,默认值为60
df = pd.read_csv('loandata.csv')
pd.set_option('display.max_columns', 5)
pd.set_option('display.max_rows', 4)
#最大行数为4行,最大列数为5列情况下的截断显示

索引


索引方法:

操作 语法 结果
选取某一列 df[col] Series
通过标签选取某一行/列 df.loc[label] Series
通过位置(整数表示)获取某一行/列 df.iloc[loc] Series
通过切片方式获取多行/列 df[5:10] DataFrame
通过布尔向量获取多行/列 df[bool_vec] DataFrame

常用:

df.iloc[0]
#通过索引,得到一行的Series
df.loc['1','name']
#通过具体值

相关文章

网友评论

      本文标题:2.基本数据类型Series和DataFrame

      本文链接:https://www.haomeiwen.com/subject/kiyciftx.html