当前位置: 首页 > 工具软件 > X-Series > 使用案例 >

Pandas入门---Series和DataFrame

郑声
2023-12-01

Pandas入门—Series和DataFrame


概述:pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具,pandas是基于Numpy构建的。pandas在过去的几年中逐渐成长为一个非常强大的库。

pandas的数据结构介绍

引入pandas

>>> from pandas import Series,DataFrame
>>> import pandas as pd

pandas有两个主要的数据结构:Series和DataFrame.

Series

Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:

>>> obj = Series([4,7,-5,3])
>>> obj
0    4
1    7
2   -5
3    3
dtype: int64

Series的字符串表现形式为:索引在左边,值在右边。你可以通过Series的values和index属性获取其数组表现形式和索引对象:

>>> obj.values
array([ 4,  7, -5,  3], dtype=int64)
>>> obj.index
RangeIndex(start=0, stop=4, step=1)

通常,我们希望所创建的Series带有一个可以对各个数据点进行标记的索引:

>>> obj2 = Series([4,7,-5,3],index=['d','b','a','c'])
>>> obj2
d    4
b    7
a   -5
c    3
dtype: int64

与普通的Numpy相比,你可以通过索引的方式选取Series的单个或者一组值

>>> obj2['a']
-5

>>> obj2[['a','b']] #注意这里是双层[]
a   -5
b    7
dtype: int64

Numpy数组运算都会保留索引和值之间的链接。

>>> obj2 * 2
d     8
b    14
a   -10
c     6

还可以将Series看成是定长的有序字典,因为它是索引值到数据值的一个映射。

>>> 'b' in obj2
True    

如果数据存放在Python字典中,可以直接转成Series:

>>> sdata = {'test':1,'hello':2}
>>> obj3 = Series(sdata)
>>> obj3
hello    2
test     1
dtype: int64

NaN(非数字),在pandas中,它代表缺失或NA值。使用缺失(missing)或NA表示缺失数据。pandas的isnull和notnull函数可以用于检测缺失数据。

Series也有类似的方法。

>>> states = ['test','haha']
>>> obj4 = Series(sdata,states)
>>> obj4
test    1.0
haha    NaN
dtype: float64
>>> obj4.isnull()
test    False
haha     True
dtype: bool

Series的一个重要功能是:它在算术运算中会自动地对其不同索引的数据。
Series对象本身及索引都有一个name的属性,该属性跟pandas其他的关键功能关系非常密切。

>>> obj4.name = 'sunpeng'
>>> obj4.index.name = 'llala'
>>> obj4
llala
test    1.0
haha    NaN
Name: sunpeng, dtype: float64

Series的索引也可以通过赋值的方式就地修改。

DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。和其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的数据结构)。

构建DataFrame的方法有很多,最常用的方法是直接传入一个由等长列表或Numpy数组组成的字典:

>>> data = {'state':['1','2'],'year':['a','b'],'pop':['x','y']}
>>> data
{'state': ['1', '2'], 'pop': ['x', 'y'], 'year': ['a', 'b']}
>>> frame = DataFrame(data)
>>> frame
    pop state year
0   x     1    a
1   y     2    b

结果DataFrame会自动加上索引,且全部列会被有序排列。
如果指定了列顺序,则DataFrame的列就会按照指定顺序进行排列。

>>> DataFrame(data,columns=['year','pop','state'])
  year pop state
0    a   x     1
1    b   y     2

如果穿入的列在数据中找不到,就会产生NA值。
通过类似字典标记的方式或属性的方式,可以讲DataFrame的列获取为一个Series。

 类似资料: