Pandas是python的一个数据分析包,主要用于数据挖掘和数据分析,通过Pandas我们可以高效地操作大型数据集。下面将给大家介绍一下Pandas中的两大主要结构:Series和DataFrame及其索引操作。

1. pandas主要结构
1.1 Series
系列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组。
1.1.1 创建Series
pandas.Series(data,index,dtype,copy)
data:数据采取各种形式,如:ndarray,list
index:索引值必须是唯一的和散列的,与数据的长度相同。
dtype:指定数据类型。如果没有,将推断数据类型
copy:复制数据,默认为false
可以通过输入数组、字典等方式来创建一个系列
import pandas as pd
import numpy as np
data1 = np.array(['a','b','c','d'])
data2 = {
'a':0.,'b':1.,'c':2.}
s1 = pd.Series() # 创建一个空的Series
s2 = pd.Series(data1) # 从ndarray创建一个Series.这里没有传递任何索引
s3 = pd.Series(data1,index=[100,101,102,103]) #这里传递了索引值。
s4 = pd.Series(data2) # 从字典中创建一个Series.注意,字典键用于构建索引
s5 = pd.Series(data2,index=['b','c','d','a']) # 索引顺序保持不变,缺少的元素使用NaN填充
s6 = pd.Series(5,index=[0,1,2,3]) # 从标量创建一个Series
print(s1,s2,s3,s4,s5,s6)
输出结果
#s1
Series([], dtype: float64)
#s2 默认情况下,分配了从0到len(data)-1的索引
0 a
1 b
2 c
3 d
dtype: object
#s3 可以在输出中看到自定义的索引值
100 a
101 b
102 c
103 d
dtype: object
#s4
a 0.0
b 1.0
c 2.0
dtype: float64
#s5
b 1.0
c 2.0
d NaN
a 0.0
dtype: float64
#s6
0 5
1 5
2 5
3 5
dtype: int64
1.1.2 访问数据
系列(Series)中的数据可以使用类似于访问ndarray中的数据来访问。
1)从具有位置的Series中访问数据:
s = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
print(s[0]) # 检索第一个元素
print(s[:3]) # 检索Series中前三个元素
print(s[-3:]) # 检索最后三个元素
输出结果
#s[0]
1
#s[:3]
a 1
b 2
c 3
dtype: int64
#s[-3:]
c 3
d 4
e 5
dtype: int64
2)使用标签检索数据
# 一个Series就像一个固定大小的字典,可以通过索引标签获取和设置值
s = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
print(s['a']) # 使用索引标签值检索单个元素
print(s[['a','b','c']]) # 使用索引标签值检索多个元素。注意,如果索引不存在的标签,则会报错
输出结果:
#s['a']
1
#s[['a','b','c']]
a 1
b 2
c 3
dtype: int64
1.1.3 Series 基本功能
基本功能如下所示:

下面我们通过举例来加深印象~
s = pd.Series(np.random.randn(4))
print(s.axes) # 返回Series的标签列表
print(s.empty) # 返回布尔值,表示对象是否为空
print(s.ndim) # 返回对象的维数
print(s.size) # 返回Series的大小
print(s.values) # 以数组形式返回Series中的实际数据值
print(s.head(2)) # 显示前2行
print(s.tail(2)) # 返回最后2行
输出结果:
#s.axes
[RangeIndex(start=0, stop=4, step=1)]
#s.empty
False
#s.ndim
1
#s.size
4
#s.values
[ 0.9376181 -0.15342991 -1.