Python数据分析 Pandas Series对象操作

  • Post category:Python

一、介绍

Pandas是Python中便捷处理结构化数据的库。在Pandas中最主要的两个对象是Series和DataFrame。Series对象是一维数组,可以将其看做是一个带索引的字典。DataFrame是一个二维表格,可以将其看做是由Series组成的字典。本文将详细讲解Pandas Series对象操作。

二、创建Series对象

可以通过以下两种方式创建Series对象:

  1. 从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对象由两个部分组成:索引和值。在上例中,索引是默认生成的数字索引,值是列表中的数值。

  1. 从字典创建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对象操作

  1. 索引

可以通过索引访问Series对象中的元素,索引可以是整数或标签。例如,对于前面创建的data1对象,可以通过以下两种方式访问其中的元素:

print(data1[2])
print(data1.loc[2])

输出结果均为3,表示获取索引为2的元素。

  1. 切片

可以通过切片访问Series对象中的一部分元素。例如,对于前面创建的data1对象,可以通过以下方式访问其中的前三个元素:

print(data1[:3])

输出结果为:

0    1
1    2
2    3
dtype: int64
  1. 运算

可以对Series对象进行多种数学运算,包括加法、减法、乘法和除法。例如,对于前面创建的data1对象,可以对其中的元素进行平方运算:

data3 = data1**2
print(data3)

输出结果为:

0     1
1     4
2     9
3    16
4    25
dtype: int64
  1. 修改

可以修改Series对象中的元素值。例如,对于前面创建的data2对象,可以将其中键为’apple’的元素修改为5:

data2['apple'] = 5
print(data2)

输出结果为:

apple     5
banana    2
orange    4
dtype: int64
  1. 删除

可以通过drop方法删除Series对象中的元素。例如,对于前面创建的data2对象,可以删除其中键为’banana’的元素:

data2 = data2.drop('banana')
print(data2)

输出结果为:

apple     5
orange    4
dtype: int64

四、示例说明

  1. 计算每个城市销售额增长率

下面的示例中,假设一个公司在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值。

  1. 按照性别统计学生人数

下面的示例中,假设一个班级的学生数据存储在一个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方法。