Series 和 DataFrame 是 Pandas 中两种重要的数据结构,也是我们操作和分析的主要对象。其中 Series 是一种类似于数组、列表或表格中一列的 一维数据对象,DataFrame 则可以表示表格化的数据对象,可由多个 Series 对象组成。
本文主要摘录 Series 和 DataFrame 两种数据结结构的创建方法以及一些注意事项。
Series 的创建
Pandas 提供 Series 来表示一系列的元素,与常规一维数组只能以整数作为索引不同,Series 的索引类型可以是任一类型,其索引值与值的映射结构类似于 Python 中的字典。
Series 的构造函数
Series 的构造函数的声明如下:
def __init__(
self,
data=None,
index=None,
dtype: Dtype | None = None,
name=None,
copy: bool = False,
fastpath: bool = False,
):
pass
从列表中创建 Series
names = ['Jimmy', 'Andy', 'Tony', 'John']
names_series = pd.Series(names)
pd.Series
的第 1 个参数名为 data
,即上述调用过程等价于 names_series = pd.Series(data=names)
。因为列表中没有相应的值可以作为 Series 的 index 值,所以 Pandas 会以 0 起始为每 1 个元素进行索引。如果指定了 index 参数值,可以修改 Series 中的索引值。
names_series = pd.Series(names, index=['ST0001', 'ST0002', 'ST0003', 'ST0004'])
此时可以通过 names_series['ST0002']
访问 'Andy'
元素。
从字典中创建 Series
sales = {
'January': 1000,
'February': 900,
'March': 1200,
}
sales_series = pd.Series(sales)
Python 中的字典是 key-value 结构,所以字典值作为 data
参数值时,其 key 值会作为 Series 的 index 值。此时可以通过 sales['January']
访问到 1000
元素。
从 np.ndarray 中创建 Series
从 np.ndarray 中创建 Series 与从列表中创建 Series 类似:
x_axis_values = np.arange(0, 7)
axis_series = pd.Series(x_axis_values, index=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])
从标量中创建 Series
scaled_series = pd.Series(7, index=['01', '02', '03'])
此时 scaled_series 中一共有 3 个元素,各元素的 index 分别为 ‘01’、‘02’ 和 ‘03’。标量作为 data
参数值时,Pandas 会按 index
参数
值的长度进行扩展。如果没有指定 index
值时,索引值则为 0 且长度为 1。
DataFrame 的创建
Pandas 提供 DataFrame 结构可用于表示表格化的数据。
DataFrame 的构造函数
def __init__(
self,
data=None,
index: Axes | None = None,
columns: Axes | None = None,
dtype: Dtype | None = None,
copy: bool | None = None,
):
pass
相较于 Series 的构造函数,DataFrame 的构造函数可以指定列名(columns
)。因为 DataFrame 可以视为一个或多个 Series 的集合,同样的,
columns
值可以视为每一个 Series 的 name
参数的传值。
从字典(列表为元素)中创建 DataFrame
scores = {
'Jimmy': [89, 88, 93],
'Andy': [78, 90, 99],
'Tony': [83, 85, 87],
'John': [87, 67, 70],
}
df = pd.DataFrame(data=scores)
scores
的 key 值会作为 DataFrame 的列名。
指定 index、columns 值
index
参数用于设置 DataFrame 每行的索引值,columns
参数用于设置列名。
df = pd.DataFrame([
[89, 88, 93],
[78, 90, 99],
[83, 85, 87],
[87, 67, 70],
], index=['Jimmy', 'Andy', 'Tony', 'John'], columns=['Math', 'English', 'Chinese'])
上述中,df
是一个 4 行 3 列的表格化对象。如果 data
参数值是一个字典,则 columns
参数还可以起到过滤的作用。
评论