共计 1541 个字符,预计需要花费 4 分钟才能阅读完成。
pandas 是基于 NumPy 的一种工具,该工具是为解决数据分析任务而创建的。安装 pandas:pip install pandas
pandas 的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数案例。
Series 序列类似于一维数组,由两部分组成:
- values:一组数据(ndarray 类型)
- index:相关的数据索引标签
Series 可以看做是一个有序的字典结构。
创建 Series
由列表或数组创建:
import pandas as pd
s = pd.Series([1, 2, 3])
print(s)
# 输出
# 0 1
# 1 2
# 2 3
# dtype: int64
print(s.values) # 一维数组:[1 2 3]
print(list(s.index)) # 索引:[0, 1, 2]
s.index = ["A", "B", "C"] # 修改索引
s.index = list("ABC") # 修改索引
print(s.A, s["C"]) # 通过索引获取值 1 3
由字典创建:
d = {"a": 1, "b": 2, "c": 3}
s = pd.Series(d)
print(s)
# 输出
# a 1
# b 2
# c 3
# dtype: int64
索引
显示索引:
- 使用 index 中的元素作为索引值
- 使用.loc[](推荐)
d = {"a": 1, "b": 2, "c": 3}
s = pd.Series(d)
print(s[["c", "a"]]) # 一次取多个元素,得到的类型是 Series
# 输出
# c 3
# a 1
# dtype: int64
print(s.loc[["c", "a"]])
隐式索引:
- 使用整数作为索引值
- 使用.iloc[](推荐)
print(s[[0, 2]])
print(s.iloc[[2, 0]])
Series 可以创建多层索引,可以参考下面的 DataFrame。
切片
d = {"a": 1, "b": 2, "c": 3, "d": 4}
s = pd.Series(d)
# 隐式切片:左闭右开
print(s[1:3])
print(s.iloc[1:3])
# 输出
# b 2
# c 3
# dtype: int64
# 显示切片:左闭右闭
print(s["b":"d"])
print(s.loc["b":"d"])
基本属性和方法
基本属性:
d = {"a": 1, "b": 2, "c": 3, "d": 4}
s = pd.Series(d, name="abcd")
print(s.shape) # 形状:(4,)
print(s.size) # 元素个数:4
print(s.index) # 索引:Index(['a', 'b', 'c', 'd'], dtype='object')
print(s.values) # 值:[1 2 3 4]
print(s.name) # 索引名字:abcd
方法:
print(s.head(3)) # 查看前几条数据,默认 5
print(s.tail(3)) # 查看后几条数据,默认 5
s["b"] = None
print(s.isnull()) # isnull 判断是否为空,notnull 判断是否不为空
# 输出
# a False
# b True
# c False
# d False
# Name: abcd, dtype: bool
# 过滤掉空值
print(s[s.notnull()])
print(s[~s.isnull()]) # ~ 取反
Series 运算
适用于 NumPy 的数组运算也适用于 Series。
Series 之间的运算,会自动对齐索引进行运算。如果索引不对应,则补 NaN,Series 没有广播机制。可以使用 add()函数来填充数据。
s1 = pd.Series([1, 3, 44])
s2 = pd.Series([11, 2, 8, 6])
print(s1 + s2)
print(s1.add(s2, fill_value=0)) # 先填充 0,再相加
正文完