January 12, 2025About 2 min
数据结构
Series
一种一维数组对象,包含一对值序列,还有对应的索引,可以通过索引访问元素
参数:Series(data=None, index=None, dtype=None)
- data:数据源,可以是一些一维数组
- index:指定一下对应位置的索引
- dtype:指定一下元素的类型
创建语法
通过列表
a = pd.Series([1, 2, 3, 4], index=[1, 1, 2, 2]) print(a[1]) # 这样访问的应该是一种数组,毕竟可以有重复的
通过字典
a = pd.Series({"a": 1, "b": 2, "c": 3, "d": 4}) print(a.index)
DataFrame
类型excel表格中的一张表,有一行有序的索引列,其他列就可以是其他类型
参数:DataFrame(data=None, index=None, columns=None, dtype=None)
- data:数据源
- index:第一列有序的那个索引
- columns:对应的列名
创建语法
a = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
print(a)
索引操作
重建
reindex([1, 2, 3]. fill_value=0)
:不匹配的数组填充为0
更改
set_index("a")
:返回一个新对象,以调用对象的存在的一个列为新索引数组
查询操作
选取列
a["a"] # 对应列名就行
选取行
a[1:3] # 选择第2~3行,通过切片的形式,选取列
选取行与列
loc(行索引名称或条件,列索引名称)
a.loc[:, ['a']] # 或 a.loc[a['a'] >= 0, ['a']] # 对选择列进行筛选
iloc(行索引,列索引)
布尔选择
a[(a.a >= 2) && (a.a <= 3)] # 选择满足这个条件的
数据编辑
增加数据
a._append({"a": 1, "b": 2} # 增加一行,返回新的df对象
a.insert(0, "d", [1, 2, 3]) # 插入一列
删除数据
a.drop("a", axis=1, inplace=True)
# axis:选择是行还是列
# inplace:是否对原数组起作用,如果为False,就得用个变量接受
修改数据:选中后,直接赋值就行
修改列名
a.rename(columns={"a": "a1"}, inplace=True)
函数应用和映射
map:将函数应用到每个Series元素中,返回新对象,如果是DataFrame会将每一列的每一个元素依次一个个传入
def f(x):
return x + 100
a['a'].map(f)
print(a)
apply:应用于DataFrame的行与列,它是把一行或一列传给函数
def f(x):
return len(x)
a = a.apply(np.mean, axis=1)
applymap:DataFrame的每个元素会一个个的传进去,已弃用,使用map代替
数据分组
groupby:可以对数据进行分组
数据聚合
agg:a[["a", "b"]].agg([np.sum, np.mean])
,对不同的列使用不同的聚合函数