一、介绍
Pandas是Python中便捷处理结构化数据的库。在Pandas中最主要的两个对象是Series和DataFrame。Series对象是一维数组,可以将其看做是一个带索引的字典。DataFrame是一个二维表格,可以将其看做是由Series组成的字典。本文将详细讲解Pandas Series对象操作。
二、创建Series对象
可以通过以下两种方式创建Series对象:
- 从Python列表或NumPy数组创建Series对象
import pandas as pd
data1 = pd.Series([1,2,3,-4,5])
print(data1)
输出结果如下:
0 1
1 2
2 3
3 -4
4 5
dtype: int64
可以看到,Series对象由两个部分组成:索引和值。在上例中,索引是默认生成的数字索引,值是列表中的数值。
- 从字典创建Series对象
import pandas as pd
data2 = pd.Series({'apple':3, 'banana':2, 'orange':4})
print(data2)
输出结果如下:
apple 3
banana 2
orange 4
dtype: int64
可以看到,Series对象的索引是字典的键,值是字典的值。
三、Series对象操作
- 索引
可以通过索引访问Series对象中的元素,索引可以是整数或标签。例如,对于前面创建的data1对象,可以通过以下两种方式访问其中的元素:
print(data1[2])
print(data1.loc[2])
输出结果均为3,表示获取索引为2的元素。
- 切片
可以通过切片访问Series对象中的一部分元素。例如,对于前面创建的data1对象,可以通过以下方式访问其中的前三个元素:
print(data1[:3])
输出结果为:
0 1
1 2
2 3
dtype: int64
- 运算
可以对Series对象进行多种数学运算,包括加法、减法、乘法和除法。例如,对于前面创建的data1对象,可以对其中的元素进行平方运算:
data3 = data1**2
print(data3)
输出结果为:
0 1
1 4
2 9
3 16
4 25
dtype: int64
- 修改
可以修改Series对象中的元素值。例如,对于前面创建的data2对象,可以将其中键为’apple’的元素修改为5:
data2['apple'] = 5
print(data2)
输出结果为:
apple 5
banana 2
orange 4
dtype: int64
- 删除
可以通过drop方法删除Series对象中的元素。例如,对于前面创建的data2对象,可以删除其中键为’banana’的元素:
data2 = data2.drop('banana')
print(data2)
输出结果为:
apple 5
orange 4
dtype: int64
四、示例说明
- 计算每个城市销售额增长率
下面的示例中,假设一个公司在2019年和2020年的销售额数据存储在两个Series对象中。我们可以用Pandas计算每个城市的销售额增长率。
import pandas as pd
sales2019 = pd.Series({'beijing':10000, 'shanghai':20000, 'shenzhen':30000})
sales2020 = pd.Series({'beijing':13000, 'shanghai':24000, 'guangzhou':32000})
growth = (sales2020 - sales2019) / sales2019 * 100
growth = growth.dropna()
print('各城市销售额增长率如下:')
print(growth)
输出结果为:
各城市销售额增长率如下:
beijing 30.000000
shanghai 20.000000
guangzhou NaN
shenzhen NaN
dtype: float64
可以看到,我们成功计算了每个城市的销售额增长率,同时去掉了NaN值。
- 按照性别统计学生人数
下面的示例中,假设一个班级的学生数据存储在一个Series对象中,其中包含学生的姓名和性别属性。我们可以用Pandas按照性别统计学生人数。
import pandas as pd
students = pd.Series({'Tom':'M', 'Jerry':'M', 'Alice':'F', 'Bob':'M', 'Susan':'F'})
count = students.groupby(students).count()
print('不同性别的学生人数如下:')
print(count)
输出结果为:
不同性别的学生人数如下:
F 2
M 3
dtype: int64
可以看到,我们成功按照性别统计了学生人数,同时用到了groupby方法。