目录
????????Series 是 Pandas 中的一维数组形式的数据结构,它可以包含任何数据类型(整数、字符串、浮点数、Python对象等)。Series 基本上可以被视作一个定长的有序字典,因为它是索引值到数据值的一个映射。
????????可以使用 pd.Series(data, index=index)
来创建 Series,其中 data
可以是列表、字典、ndarray 等,index
是数据索引标签。
import pandas as pd
# 从列表创建 Series
s1 = pd.Series([1, 3, 5, 7, 9])
print(s1)
print("=="*10)
# 从字典创建 Series
s2 = pd.Series({'a': 100, 'b': 200, 'c': 300})
print(s2)
print("=="*10)
# 从 ndarray 创建 Series
s3 = pd.Series(pd.date_range('20230101', periods=6))
print(s3)
结果:
0 1
1 3
2 5
3 7
4 9
dtype: int64
====================
a 100
b 200
c 300
dtype: int64
====================
0 2023-01-01
1 2023-01-02
2 2023-01-03
3 2023-01-04
4 2023-01-05
5 2023-01-06
dtype: datetime64[ns]
Series 支持基于位置和基于标签的索引。
# 选择第四个元素
print(s1[3])
# 选择索引标签为 'b' 的元素
print(s2['b'])
# 选择前三个元素
print(s1[:3])
结果:
7
200
0 1
1 3
2 5
????????DataFrame 是 Pandas 中的二维表格型数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame 既有行索引也有列索引,它可以被看作是由 Series 组成的字典。
????????可以使用 pd.DataFrame(data, index=index, columns=columns)
来创建 DataFrame,其中 data
可以是字典、ndarray、Series 或另一个 DataFrame。
import numpy as np
import pandas as pd
# 从字典创建 DataFrame
df1 = pd.DataFrame({
'A': 1.,
'B': pd.Timestamp('20230102'),
'C': pd.Series(1, index=list(range(4)), dtype='float32'),
'D': np.array([3] * 4, dtype='int32'),
'E': pd.Categorical(["test", "train", "test", "train"]),
'F': 'foo'
})
print(df1)
# 从二维ndarray创建 DataFrame
df2 = pd.DataFrame(np.random.randn(6, 4), columns=['A', 'B', 'C', 'D'])
print(df2)
结果:
A B C D E F
0 1.0 2023-01-02 1.0 3 test foo
1 1.0 2023-01-02 1.0 3 train foo
2 1.0 2023-01-02 1.0 3 test foo
3 1.0 2023-01-02 1.0 3 train foo
A B C D
0 -0.434026 0.948463 0.386731 0.814795
1 -0.317982 -2.987843 0.519228 -1.365834
2 -2.120951 0.385530 -0.066971 0.089497
3 -1.299795 0.648691 -1.954919 -0.441423
4 0.789665 0.819811 -0.519527 -0.157360
5 0.701758 0.455677 -0.418348 0.518226
DataFrame 提供了多种方法来选择和索引:
# 选择单独的一列,返回一个 Series
print(df1['A'])
# 利用 loc 选择行
print(df2.loc[0])
# 通过位置选择
print(df2.iloc[3])
# 切片选择行
print(df2[2:5])
# 布尔索引
print(df1[df1['A'] > 0])
结果:
0 1.0
1 1.0
2 1.0
3 1.0
Name: A, dtype: float64
A 0.463703
B -0.132394
C -1.097140
D 0.617243
Name: 0, dtype: float64
A 1.522528
B 1.262699
C 1.334090
D -1.488483
Name: 3, dtype: float64
A B C D
2 -0.382140 2.616053 1.539264 0.486279
3 1.522528 1.262699 1.334090 -1.488483
4 -0.272724 4.060280 1.894378 0.794090
A B C D E F
0 1.0 2023-01-02 1.0 3 test foo
1 1.0 2023-01-02 1.0 3 train foo
2 1.0 2023-01-02 1.0 3 test foo
3 1.0 2023-01-02 1.0 3 train foo
DataFrame 支持各种操作,包括数据清洗、转换、聚合等。
# 设置新的一列
df1['G'] = df1['A'] * 2
print(df1)
# 删除一列
df1.drop(columns='G', inplace=True)
# 聚合操作
print(df1.mean())
Series 与 DataFrame 之间可以相互转换:
# Series 转 DataFrame
s_to_df = s1.to_frame()
# DataFrame 转 Series
df_to_s = df1['A']