怎么做校园表白墙网站,创建网站做搞笑视频,做电脑系统最好的网站,大连网站搭建与推广目录 前言1. Series 简介2. Series的特点3. Series的创建3.1 使用列表创建Series3.2 使用字典创建Series3.3 使用列表和自定义索引创建Series3.4 指定数据类型和名称 4. Series的索引/切片4.1 下标索引#xff1a;基于整数位置的索引4.2 基于标签的索引4.3 切片4.4 使用.loc[]… 目录 前言1. Series 简介2. Series的特点3. Series的创建3.1 使用列表创建Series3.2 使用字典创建Series3.3 使用列表和自定义索引创建Series3.4 指定数据类型和名称 4. Series的索引/切片4.1 下标索引基于整数位置的索引4.2 基于标签的索引4.3 切片4.4 使用.loc[]和.iloc[]进行索引 5. 基本运算5.1 算术运算5.1.1 加法 5.2 比较运算5.3 逻辑运算6. 基本属性和方法6.1 基本属性示例6.2 基本方法示例6.3 检测缺失数据的方法 7. 金融方面的几个series示例7.1 示例一股票价格数据7.2 示例二收益率数据7.3 示例三交易量数据 8. 总结 前言
大家好我是架构筑梦的Cherry本期跟大家分享的知识是 pandas 数据结构——DataFrame。
作者的【 Python智能工坊】专栏及【少儿编程Python趣味编程探索未来】正在火热更新中如果本文对您有帮助欢迎大家点赞 评论 收藏
1. Series 简介
pandas数据结构中的Series是一个一维数组对象能够保存任何数据类型整数、字符串、浮点数、Python对象等并有一个与之关联的标签序列这些标签被称为“索引”index。索引与数据是一一对应的通过索引可以快速获取、更新或删除数据。Series在pandas数据处理中起着至关重要的作用是构建更复杂数据结构如DataFrame的基础。
以下是关于pandas Series的详细解释
定义Series类似于一维数组或列表但它有一个显式的索引用于标记数据。组成Series由两部分组成——值values和索引index。
在金融数据分析中pandas的Series数据结构扮演着重要角色。它可以用来存储股价、交易量、市盈率等连续或离散的数据并通过索引轻松访问和操作这些数据。Series支持多种数据类型允许用户根据实际需求灵活使用。
2. Series的特点
一维数组Series是一维的意味着它只有一个轴或维度类似于Python中的列表。索引每个Series都有一个索引用于对数据进行标记。索引可以是整数、字符串、日期等类型。如果不指定索引pandas将默认创建一个从0开始的整数索引。数据类型Series可以容纳不同数据类型的元素包括整数、浮点数、字符串、Python对象等。大小不变性Series的大小在创建后是不变的但可以通过某些操作如append或delete来改变。操作Series支持各种操作如数学运算、统计分析、字符串处理等。缺失数据Series可以包含缺失数据pandas使用NaNNot a Number来表示缺失或无值。
3. Series的创建
Series可以通过多种方式进行创建包括但不限于
使用列表或数组可以传递一个列表或数组作为数据源来创建Series。指定索引可以为每个元素指定索引标签。使用字典字典的键成为索引值成为数据。使用numpy的ndarray可以直接使用numpy数组来创建Series。
pd.Series()是创建Series的常用方法格式如下
pd.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse)参数说明
data这是必须的参数可以是列表、数组、字典等用于存储Series中的数据。index可选参数用于指定索引标签。如果不提供则默认使用从0开始的整数索引。dtype可选参数用于指定数据类型。如果未指定pandas会根据数据内容自动推断数据类型。name可选参数用于给Series命名。命名后的Series在打印时会显示名称方便识别。copy可选参数默认为False。如果为True则会将数据复制到新的Series中原始数据不受影响。fastpath是否启用快速路径。默认为 False。启用快速路径可能会在某些情况下提高性能。
下面是几个创建 Series 的实例
3.1 使用列表创建Series
import pandas as pd
s1 pd.Series([1, 2, 3, 4, 5])
print(s1)输出
0 1
1 2
2 3
3 4
4 5
dtype: int64输出结果说明 第一列0-4 为 索引值默认从 0 开始 第二列1-5 为 数据 dtype: int64 为该 Series 变量的数据类型
3.2 使用字典创建Series
import pandas as pd
data {a: 1, b: 2, c: 3, d: 4, e: 5}
s2 pd.Series(data)
print(s2)输出
a 1
b 2
c 3
d 4
e 5
dtype: int643.3 使用列表和自定义索引创建Series
import pandas as pd
labels [one, two, three, four, five]
s3 pd.Series([1, 2, 3, 4, 5], indexlabels)
print(s3)输出
one 1
two 2
three 3
four 4
five 5
dtype: int643.4 指定数据类型和名称
import pandas as pd
s4 pd.Series([1.1, 2.2, 3.3, 4.4, 5.5], dtypefloat, namenumbers)
print(s4)输出
0 1.1
1 2.2
2 3.3
3 4.4
4 5.5
Name: numbers, dtype: float64注意 当使用字典创建Series时如果字典的键不是有序的如Python 3.7之前的字典则Series的索引顺序可能与字典的键插入顺序不同。但在Python 3.7及以后的版本中字典保持插入顺序。 索引在Series中非常重要它不仅用于标记数据还用于数据的对齐和选择。因此在创建Series时应仔细考虑索引的设置。 如果在创建Series时提供了与数据长度不一致的索引pandas会自动对缺失的数据使用NaNNot a Number进行填充。 默认情况下如果不指定索引pandas会为Series创建一个从0开始的整数索引。这种索引被称为“基于位置的索引”或“隐式索引”。在大多数情况下这种索引对于数据分析和处理已经足够。然而在需要明确标记或选择数据的情况下可以手动指定索引标签。 4. Series的索引/切片
4.1 下标索引基于整数位置的索引
import pandas as pd# 创建一个默认的Series
s pd.Series([10, 20, 30, 40, 50])# 使用基于位置的索引访问数据
print(s[0])
print(s[2:4]) 输出
10
2 30
3 40
dtype: int644.2 基于标签的索引
在pandas的Series中基于标签的索引是一种强大的功能它允许你通过Series的索引标签来直接访问或操作数据。这种索引方式特别适用于具有明确标签如股票名称、日期等的数据集。
当你创建一个Series并为其指定了索引时你就可以使用这些索引标签来访问、修改或选择数据。
下面是基于标签索引的示例 假设我们有一个Series它包含了几个股票在特定日期的收盘价并使用了股票代码作为索引标签。
import pandas as pd# 创建一个带有股票代码作为索引的Series
stocks pd.Series([100.5, 201.2, 150.8], index[AAPL, MSFT, GOOGL])# 使用基于标签的索引访问数据
print(stocks[AAPL]) # 输出: 100.5# 使用多个标签选择数据返回一个Series
subset stocks[[AAPL, GOOGL]]
print(subset)
# 输出:
# AAPL 100.5
# GOOGL 150.8
# dtype: float64# 修改基于标签的索引的数据
stocks[AAPL] 101.0
print(stocks)
# 输出:
# AAPL 101.0
# MSFT 201.2
# GOOGL 150.8
# dtype: float64在上面的示例中我们首先创建了一个Series对象stocks其中包含了三个股票代码‘AAPL’, ‘MSFT’, ‘GOOGL’和它们对应的收盘价。然后我们使用这些股票代码作为标签来访问和修改数据。
4.3 切片
与Python中的列表或NumPy数组类似可以使用切片来访问Series的子集。 无论是基于位置的索引还是基于标签的索引你都可以使用切片来访问数据的子集。不过当使用基于标签的索引进行切片时你需要确保切片的标签在Series的索引中是存在的并且它们是连续的。
# 使用自定义索引的Series
s pd.Series([10, 20, 30, 40, 50], index[A, B, C, D, E])# 使用基于标签的切片只有当标签连续时才有效
print(s[A:C]) # 输出: A 10# B 20# C 30# dtype: int64# 使用基于位置的切片始终有效
print(s[1:4]) # 输出: B 20# C 30# D 40# dtype: int64注意如果基于标签的切片中的标签不连续或不存在于索引中那么你会得到一个KeyError。如果你想要选择不连续标签的数据你需要使用索引的loc属性并传入一个标签列表。
4.4 使用.loc[]和.iloc[]进行索引
对于更复杂的数据选择或操作你可以使用.loc[]方法。虽然对于单个标签的访问直接使用标签和.loc[]是等效的但.loc[]在处理多个标签或条件选择时更加灵活。
.loc[]基于标签的索引。.iloc[]基于位置的索引总是整数位置。
# 使用.loc[]基于标签索引
print(s.loc[A:C])# 使用.iloc[]基于位置索引
print(s.iloc[1:4])输出
A 10
B 20
C 30
dtype: int64
B 20
C 30
D 40
dtype: int64.loc[]和.iloc[]提供了更明确和灵活的索引方式特别是在处理复杂的数据集时。
5. 基本运算
在pandas库中Series对象支持多种基本运算这些运算包括算术运算、比较运算和逻辑运算。 以下是关于Series基本运算的详细解释
5.1 算术运算
算术运算包括加、减、乘、除等基本操作。 在pandas中Series对象之间可以直接进行这些运算且pandas会自动处理索引对齐。
5.1.1 加法
两个Series相加时相同索引位置的元素会相加。如果两个Series长度相同且索引一致则直接对应相加如果长度不同或索引不完全对应结果的索引将是两个Series索引的并集不存在的索引将填充为NaN表示非数字。
示例
import pandas as pd
s1 pd.Series([1, 2, 3], index[a, b, c])
s2 pd.Series([4, 5, 6], index[a, b, c])
result_add s1 s2
print(result_add) # 输出a 5, b 7, c 9, dtype: int64减法-、乘法*、除法/这些运算与加法类似都是基于索引进行对应元素的运算。
5.2 比较运算
比较运算用于比较两个Series的元素值包括等于、不等于!、大于、小于、大于等于和小于等于等。这些运算会返回一个布尔类型的Series表示每个元素比较的结果。
示例
s1 pd.Series([1, 2, 3])
s2 pd.Series([2, 2, 2])
result_eq s1 s2 # 比较是否相等
print(result_eq) # 输出0 False, 1 True, 2 False, dtype: bool5.3 逻辑运算
逻辑运算在pandas中主要用于合并布尔Series。但请注意直接对两个Series对象进行逻辑运算如and、or在pandas中并不直接支持因为这会引发错误。相反你应该使用按元素比较产生的布尔Series并使用逻辑与和|逻辑或等操作符进行逻辑运算。
示例
s1_gt_1 s1 1 # s1中大于1的元素
s2_lt_2 s2 2 # s2中小于2的元素
result_logical s1_gt_1 s2_lt_2 # 逻辑与运算
print(result_logical) # 输出0 False, 1 False, 2 False, dtype: bool在这个例子中由于s1和s2中没有同时满足s1 1和s2 2的元素所以结果全为False。
pandas的Series对象支持丰富的运算操作包括算术运算、比较运算和逻辑运算。这些运算都是基于索引进行的能够方便地处理和分析数据。在实际应用中可以根据需要选择合适的运算操作来处理和分析数据。
6. 基本属性和方法
属性包括values数据值、index索引、dtype数据类型、name名称等。方法提供了许多用于数据操作和分析的方法如mean()计算平均值、std()计算标准差、unique()返回唯一值等。
下面是基本属性和方法的示例
6.1 基本属性示例
首先创建一个Series对象
import pandas as pds pd.Series([100, 150, 110, 130, 150, 150], index[语文, 数学, 英语, Python, Pandas, NumPy],name考试成绩)下面是访问的基本属性
shape返回Series的形状通常是一个元组对于Series来说通常只有一个元素表示长度
print(s.shape) # 输出: (6,)size返回Series的长度
print(s.size) # 输出: 6index返回Series的索引
print(s.index) # 输出: Index([语文, 数学, 英语, Python, Pandas, NumPy], dtypeobject)values返回Series的值
print(s.values) # 输出: array([100, 150, 110, 130, 150, 150], dtypeint64)name返回Series的名称
print(s.name) # 输出: 考试成绩6.2 基本方法示例
head()查看前几条数据默认5条
print(s.head()) # 输出前5条数据tail()查看后几条数据默认5条
print(s.tail()) # 输出后5条数据describe返回描述统计信息
print(s.describe()) 输出
count 6.000000
mean 131.666667
std 22.286020
min 100.000000
25% 115.000000
50% 140.000000
75% 150.000000
max 150.000000
Name: 考试成绩, dtype: float64idxmax获取最大值和最小值的索引
print(s.idxmax()) # 输出数学
print(s.idxmin()) # 输出语文dtype数据类型
print(s.dtype) # 输出int64sum求和
print(s.sum()) # 输出790mean平均值
print(s.mean()) # 输出131.66666666666666max最大值
print(s.max()) # 输出150min最小值
print(s.min()) # 输出100std标准差
print(s.std()) # 输出22.28601953392904astype将 Series 转换为另一种数据类型
s s.astype(float64) # 将 Series 中的所有元素转换为 float64 类型6.3 检测缺失数据的方法
虽然在这个示例中没有缺失数据但我们可以演示如何使用isnull()和notnull()方法。
s_with_missing pd.Series([100, 150, None, 130, 150, 150], index[语文, 数学, 英语, Python, Pandas, NumPy],name考试成绩)print(s_with_missing.isnull()) # 输出布尔序列表示哪些位置是缺失值以上展示了pandas.Series的一些基本属性和方法。这些属性和方法提供了灵活且强大的工具来操作和分析一维数据。通过结合索引、值和属性我们可以有效地处理数据并执行各种操作。
7. 金融方面的几个series示例
在金融领域Series 可以用于存储和处理各种金融数据如股票价格、收益率、交易量等。以下是几个与金融相关的 Series 示例
7.1 示例一股票价格数据
import pandas as pd# 假设有以下股票数据
data {日期: [2023-01-01, 2023-01-02, 2023-01-03, 2023-01-04, 2023-01-05],收盘价: [100.0, 101.5, 102.1, 100.8, 103.0]}# 将数据转换为pandas的DataFrame然后选取收盘价列转换为Series
df pd.DataFrame(data)
stock_prices df.set_index(日期)[收盘价]# 显示Series
print(stock_prices)输出
日期
2023-01-01 100.0
2023-01-02 101.5
2023-01-03 102.1
2023-01-04 100.8
2023-01-05 103.0
Name: 收盘价, dtype: float647.2 示例二收益率数据
# 假设有以下收益率数据
dates pd.date_range(start2023-01-01, periods5)
returns pd.Series([0.01, 0.015, -0.005, 0.003, 0.02], indexdates)# 显示Series
print(returns)输出
2023-01-01 0.01
2023-01-02 0.02
2023-01-03 -0.01
2023-01-04 0.00
2023-01-05 0.02
dtype: float647.3 示例三交易量数据
# 假设有以下交易量数据
trade_dates pd.date_range(start2023-01-01, periods4, freqB) # 只包括工作日
volumes pd.Series([10000, 12000, 9800, 11500], indextrade_dates)# 显示Series
print(volumes)输出
2023-01-02 10000
2023-01-03 12000
2023-01-04 9800
2023-01-05 11500
dtype: int64这些示例展示了如何使用 pandas 中的 Series 来存储和处理金融数据。在实际应用中这些数据可能来自多种来源如数据库、API、文件等。处理这些数据时可能会涉及到数据清洗、转换、分析和可视化等多个步骤。通过使用 Series 的各种属性和方法可以方便地进行这些操作为金融分析和决策提供支持。
8. 总结
pandas的Series数据结构提供了一种灵活且功能强大的方式来存储和处理一维数据。通过显式索引的引入Series提供了更多的数据处理和分析选项使其成为数据分析师和数据科学家的重要工具。