import numpy as np
import pandas as pd
0 pandas数据结构简介
pandas主要处理下面三种数据结构
* Series
* DataFrame
* Panel
它们都是以numpy为基础的,处理速度相对较快,其中最常用的是DataFrame
。
数据结构 | 维数 | 简述 |
---|---|---|
Series | 1 | 1维数组,大小不可变,但是里边的值可变 |
DataFrame | 2 | 2维数组,大小可变 |
Panel | 3 | 3维数组,大小可变 |
接下来详细介绍这三种数据结构
1 Series
Series
是一个可以保存任何类型的数据的一维标签数组,标签被称之为index。
1.1 构造函数
pandas.Series(data, index, dtype, copy)
构造函数参数如下:
参数 | 描述 |
---|---|
data |
数据,例如ndarray、list等 |
index |
索引值必须保证唯一并可散列,与数据长度相同。默认使用np.arange(n) |
dtype |
数据类型 |
copy |
复制数据,默认为False |
1.2 创建Series
1.2.1 创建空Series
s = pd.Series()
print s
Series([], dtype: float64)
1.2.2 从list
创建Series
使用默认的index
使用默认index
,如下所示
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print s
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
1.2.3 从np.ndarray
中创建Series
给定一个相同长度的index
,如下所示
s = pd.Series(np.random.rand(5), index=["a", "b", "c", "d", "e"])
print s
a 0.055684
b 0.697289
c 0.768223
d 0.428101
e 0.748015
dtype: float64
print s.index
Index([u'a', u'b', u'c', u'd', u'e'], dtype='object')
1.2.4 从dict创建Series
如果没有指定index,则按照字典顺序获取dict中的健作为index。如果指定了index,则按照指定的index从dict中获取索引对应的值。
d = {
"a": 0., "b": 1., "c": 2.}
s = pd.Series(d)
print s
s = pd.Series(d, index=["b", "c", "d", "a"])
print s
a 0.0
b 1.0
c 2.0
dtype: float64
b 1.0
c 2.0
d NaN
a 0.0
dtype: float64
1.2.5 从标量中创建Series
使用这种方式必须指定index,如下所示:
s = pd.Series(5., index=["a", "b", "c", "d", "e"])
print s
a 5.0
b 5.0
c 5.0
d 5.0
e 5.0
dtype: float64
1.3 类ndarray访问Series
Series
与np.ndarray
非常相似,可以使用大部分NumPy中的大部分方法或者方式来操作和访问Series,如下所示: