Pandas库函数总结
引入Pandas库:
import Pandas as pd
import json
补充:
(1) Series与DataFrame可以直接使用numpy的函数,例如np.abs(df):对DataFrame的数据取绝对值
(2) 处理JSON数据时需要引入JSON库
1. Series创建及增删改查
方式 | 示例 | 备注 |
---|---|---|
通过list创建 | pd.Series([1,2,3,4,5]) | |
通过numpy数组创建 | pd.Series(np.arange(1,6)) | |
通过字典创建 | pd.Series({‘name’:‘李宁’,‘age’:18,‘class’:‘三班’}) | name,age,class为索引 |
重新索引 | ps.reindex([‘a’,‘b’,‘c’,‘d’,‘e’,‘f’]) | reindex 创建一个符合新索引的新对象,可利用fill_value参数对缺失值进行填充 |
增-方式1 | ps[‘g’] = 9 | 在原Series对象上增加g索引 |
增-方式2 | ps.append(pd.Series({‘f’:999})) | 增加索引并生成新的Series对象 |
删-方式1 | del ps[‘b’] | 删除Series中索引b的值(在原有数据结构上删除) |
删-方式2 | ps.drop(‘g’) | 删除索引g 产生新的对象(删除一条) |
删-方式3 | ps1.drop([‘c’,‘d’]) | 删除多条 |
改-方式1 | ps[‘a’]=999 | 通过标签修改 |
改-方式2 | ps[0] = 888 | 通过位置索引修改 |
查-行索引 | ps[‘a’] | 查看标签索引a对应的值 |
查-行索引 | ps[0] | 查看位置索引0对应的值 |
查-切片索引 | ps[1:4] | 位置切片索引(取不到末位) |
查-切片索引 | ps[‘b’:‘d’] | 标签切片索引(可以取到末位) |
查-不连续索引 | ps[[‘b’,‘e’]] | 标签索引 |
查-不连续索引 | ps[[0,2]] | 位置索引 |
查-布尔索引 | ps[ps>2] | 查询出值大于2的数据 |
高级索引-loc标签索引 | ps.loc[‘a’:‘c’] | 截取索引a-c之间的行 |
高级索引-iloc位置索引 | ps.iloc[1:3] | 不包含末位数据 |
补充:创建Series对象时可通过index参数指定索引
2. DataFrame创建及增删改查
方式 | 示例 | 备注 |
---|---|---|
字典类 | data = {‘a’:[1,2,3,4],‘b’:[5,6,7,8],‘c’:np.arange(9,13)} frame = pd.DataFrame(data) | 数组、列表或元祖构成的字典构造dataframe |
字典类 | pd.DataFrame({‘a’:pd.Series(np.arange(3)),‘b’:pd.Series(np.arange(3,5))}) | Series构成的字典构造dataframe |
字典类 | data1 = {‘a’:{‘apple’:3.6,‘banana’:5.6},‘b’:{‘apple’:3,‘banana’:5},‘c’:{‘apple’:3.2}} pd2 = pd.DataFrame(data1) | 字典构成的字典构造dataframe |
列表类 | pd.DataFrame(np.arange(12).reshape(4,3)) | 2D ndarray 构造dataframe |
列表类 | l1 = [{‘apple’:3.6,‘banana’:5.6},{‘apple’:3,‘banana’:5},{‘apple’:3.2}] pd.DataFrame(l1) | 字典构成的列表构造dataframe |
列表类 | l2 = [pd.Series(np.random.rand(3)),pd.Series(np.random.rand(2))] pd.DataFrame(l2) | Series构成的列表构造dataframe |
重新行索引 | pd1.reindex([‘a’,‘b’,‘c’,‘d’]) | DataFrame行索引重建,可利用fill_value参数对缺失值进行填充 |
重新列索引 | pd1.reindex(columns=[‘C’,‘B’,‘A’]) | DataFrame列索引重建,可利用fill_value参数对缺失值进行填充 |
增(列)-方式1 | pd1[4] = 9 | 增加列(在原DataFrame上操作),新增列的值全为9 |
增(列)-方式2 | pd1.insert(0,‘E’,[9,99,999]) | 插入列(在原DataFrame上操作),第0个位置插入索引为E的列值为[9,99,999] |
增(行)-方式1 | pd1.loc[‘d’] = [1,1,1,1,1] | 标签索引loc,该方式在原DataFrame操作 |
增(行)-方式2 | pd1.append(row,ignore_index=True) | 追加新的行 生成新的dataframe (ignore_index忽略原来的索引) |
删(列)-方式1 | del pd1[‘E’] | 删除DataFrame中索引为E的列(在原有数据结构上删除) |
删(列)-方式2 | pd1.drop(‘A’,axis=1) | axis=1为删除列 |
删(列)-方式3 | pd1.drop(‘A’,axis=‘columns’) | 与axis=1等价 |
删(行)-方式1 | pd1.drop(‘a’) | drop默认删除行索引,删除索引为a的一行数据(删除一条) |
删(行)-方式2 | pd1.drop([‘a’,‘d’]) | 删除多条,drop可加参数inplace:True表示在原对象上删除,并不会返回新的对象 |
改(列)-方式1 | pd1[‘A’] = 9或pd1[‘A’] = [9,10,11] | 索引A列的数据全部更改为9或改为数组中的对应值 |
改(列)-方式2 | pd1.A = 6 | 对象.列的形式修改数据值 |
改(行) | pd1.loc[‘a’] = 777 | loc标签索引 |
改(某行某列) | pd1.loc[‘a’,‘A’] = 1000 | 修改a行A列的数值 |
查-列索引 | pd1[‘A’] | |
查-列索引 | pd1[[‘A’,‘C’]] | 取多列 |
查-选取一个值 | pd1[‘A’][‘a’] | 选取A列a行的数据值 |
查-切片 | pd1[:2] | 获取前两行 |
高级索引-loc标签索引 | pd1.loc[‘a’:‘b’,‘A’] | 取到a-b之间行的A列 |
高级索引-iloc位置索引 | pd1.iloc[0:2,0:3] | 取到0-1行的0-2列 |