pandas有三种基本数据结构:
(1)Series (2)DataFrame (3)Index
(一)pandas的Series对象
pandas的Series对象是一个带索引值的一维数组。创建一个数组对象如下:
import pandas as pd data = pd.Series([1.1,2.789,3.8644,4,5,6]) |
0 1.1000 1 2.78902 3.8644 3 4.0000 4 5.0000 5 6.0000 dtype: float64 |
这样可以看出Series是吧一组数据和一组索引绑定在一起,我们可以像字典那种访问方式访问values和index.同时也可以像numpy那样子通过索引获取标签的值。
代码如下:
import pandas as pd data = pd.Series([1.1,2.789,3.8644,4,5,6]) print(data.values) print(data.index) print(data[2]) |
[ 1.1 2.789 3.8644 4. 5. 6. ] RangeIndex(start=0, stop=6, step=1) 3.8644 |
我们可以看见pandas的Series比numpy的一维array操作更加更加灵活。
(二)Series是通用的Numpy数组
Series通过显示的索引将数组与之绑定,而numpy则是隐式的方式来获取标签的值。
Series同样也可以对Index进行定义,完全可以定义成你需要的数据类型。
代码如下:
data = pd.Series([1.1,2.789,3.8644,4,5,6],
index=['a','b','c','d','f','d'])
print(data) |
输出结果
a 1.1000 b 2.7890 c 3.8644 d 4.0000 f 5.0000 d 6.0000 dtype: float64 |
获取index和values方法和之前相同。同样也可以不按照顺序定义index,这样也是可以的。
(三)Series是特殊的字典
pandas的Series可以看成一种特殊的字典,字典是将任意键值映射到一组任意值的数据结构,而Series则是将类型键值映射到类型值,在某些操作上甚至比dict更加高效。我们用python直接创造一个字典,然后进行对比,这里的操作有点像强制类型转换。
代码如下
area_dict = {'california':423967,'Texas':695662,'New York':141297,
'Florida':170312,'Illinois':149995}
area = pd.Series(area_dict)
print(data)
print(area)
|
运行结果
Florida 170312 Illinois 149995 New York 141297 Texas 695662 california 423967 dtype: int64 |
(四)创建Series对象
代码
print("============================") print(pd.Series([1,3.4,5])) print("============================") print(pd.Series(3,index=[2,4,6])) print("============================") print(pd.Series({'california':423967,'Texas':695662,'New York':141297, 'Florida':170312,'Illinois':149995})) print("============================") print(pd.Series({'california':423967,'Texas':695662,'New York':141297, 'Florida':170312,'Illinois':149995},index = ['california','Texas'])) |
输出结果
============================ 0 1.0 1 3.4 2 5.0 dtype: float64 ============================ 2 3 4 3 6 3 dtype: int64 ============================ Florida 170312 Illinois 149995 New York 141297 Texas 695662 california 423967 dtype: int64 ============================ california 423967 Texas 695662 dtype: int64 |