数据结构其实就是Series和DataFrame。
1. Series
series是一个像数组一样的一维序列,并伴有一个数组表示label,叫做index。创建一个series的方法也很简单:
series_1 = pd.Series([10,20,30,40])
series_1
#result:
0 10
1 20
2 30
3 40
dtype: int64
左边是index,右边是value
series_1.values
#result: array([10, 20, 30, 40], dtype=int64)
series_1.index
#result: RangeIndex(start=0, stop=4, step=1)
当然我们也可以自己指定index的label
series_2 = pd.Series([-1,2,3,-4],index=['a','b','c','d'])
series_2
#result:
a -1
b 2
c 3
d -4
dtype: int64
可以根据索引来选取或更改Series中的元素。
series_2['a'] = 10
series_2['a']
series_2[['b','c','d']]
可以对Series使用numpy函数。
import numpy as np
np.exp(series_2)
另一种看待series的方法,它是一个长度固定,有顺序的dict,从index映射到value。在很多场景下,可以当做dict来用
可以直接用dict来创建series
pandas中的isnull和notnull函数可以用来检测缺失数据
index可以直接被更改。
2. Dataframe
DataFrame表示一个长方形表格,并包含排好序的列,每一列都可以是不同的数值类型(数字,字符串,布尔值)。DataFrame有行索引和列索引(row index, column index);可以看做是分享所有索引的由series组成的字典。数据是保存在一维以上的区块里的。
创建dataframe
构建一个dataframe的方法,用一个dcit,dict里的值是list
data = {'name': ['amy','bob','catherine','david'],
'country': ['China','USA','UK','Russian'],
'age': [17,19,20,21]}
df = pd.DataFrame(data)
df
对于一个较大的DataFrame,用head方法会返回前5行(注:这个函数在数据分析中经常使用,用来查看表格里有什么东西)
可以指定列的顺序。
从DataFrame里提取一列的话会返回series格式,可以以属性或是dict一样的形式来提取。
对于行,要用在loc属性里用 位置或名字 来取元素:
df.loc[3]
列值也能通过赋值改变。
如果把list或array赋给column的话,长度必须符合DataFrame的长度。如果把一二series赋给DataFrame,会按DataFrame的index来赋值,不够的地方用缺失数据来表示
删除列用del
另外DataFrame也可以向numpy数组一样做转置
df.T
如果DataFrame的index和column有自己的name属性,也会被显示
3. Index Objects (索引对象)
pandas的Index Objects (索引对象)负责保存axis labels和其他一些数据(比如axis name或names)。一个数组或其他一个序列标签,只要被用来做构建series或DataFrame,就会被自动转变为index
创建Index对象
labels = pd.Index(np.arange(3))
labels
还有很多其他函数。