目录
Series
创建 Series
Series 索引和选择
DataFrame
创建 DataFrame
DataFrame 索引和选择
DataFrame 操作和转换
数据结构转换
Series
Series 是 Pandas 中的一维数组形式的数据结构,它可以包含任何数据类型(整数、字符串、浮点数、Python对象等)。Series 基本上可以被视作一个定长的有序字典,因为它是索引值到数据值的一个映射。
创建 Series
可以使用
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 索引和选择
Series 支持基于位置和基于标签的索引。
# 选择第四个元素 print(s1[3]) # 选择索引标签为 'b' 的元素 print(s2['b']) # 选择前三个元素 print(s1[:3])
结果:
7 200 0 1 1 3 2 5
DataFrame
DataFrame 是 Pandas 中的二维表格型数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame 既有行索引也有列索引,它可以被看作是由 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 索引和选择
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 操作和转换
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']