最近把Pandas基础语法快速系统性的过了一遍,并把基础的知识点总结一下。
- pandas基础语法
- Series
- DataFrame
- 索引对象
- 基本功能
- 重新索引
- 丢弃指定轴上的项
- 索引/选取/过滤
- 算术运算和数据对齐
- DataFrame与Series之间的运算
- 函数应用与映射
- 排序和排名
- 带有重复值的轴索引
- 汇总和计算描述
- 汇总统计
- 相关系数与协方差
- 唯一值等
- 处理缺失数据
- 判断是否为缺失数据
- 滤除缺失数据
- 填充缺失数据
- 层次化索引
- 基本概况
- 重排分级排序
- 根据级别汇总统计
- 使用的DataFrame的列
下面将分别介绍
Pandas基础语法
1.Series
obj = Series([4.7,-5.3])/obj = Series([4.7,-5.3],index=['a','b'])
obj = Series({'a':4.7,'b':-5.3})
obj.values/obj.index #前者返回数组,后者返回Index,也类似于数组
obj[obj>0]/obj*2/np.exp(obj) #类似于数组的运算
pd.isnull(obj/df)/pd.notnull(obj/df)/obj.isnull() #判断是否有空值,返回Series/DataFrame
2.DataFrame(每列可以是不同的值类型)
data={'stata':['a','b','a','d'],'year':[2000,2001,2002,2001],'pop':[1.5,1.6,1.7,2.8]}
df = DataFrame(data)
df_2 = DataFrame(data,columns=['stata','year','pop'],index=['one','two','three','four'])
df.columns/df.index/df.values #前两个返回Series,最后一个返回Array
df['stata']/df.stata #列索引
df.iloc[0,:2]/df.loc['one','stata':'pop'] #前者是位置索引,纯数字,不包含末尾,后者是标签索引,包含末尾
del df['stata'] #删除某一列
二维ndarray/由数组、列表、元组、Series组成的字典 可以送来构造DataFrame
3.索引对象
pd.Index(np.arange(3)) #产生标签
Index/Int64Index/MultiIndex #标签类型
obj.index.append()/obj.index.diff() #标签方法
基本功能
1.重新索引
obj.reindex(['a','b','c'],fill_value =0)/obj.reindex(['a','b','c'],method='ffill')
df.reindex(index=['a','b','c'],method='ffill'/fill_value=0,columns=['stata','pop','mde']) #根据指定的新索引,没有的索引就根据方法填充值或填充固定值
2.丢弃指定轴的项
obj.drop(['c'])/obj.drop(['a','b']) #丢弃指定轴上的值
df.drop((['one','two'])/df.drop(['stata','pop'],axis=1) #axis默认为0,丢弃指行索引,axis=1丢弃列索引
3.索引/选取/过滤
obj['b']/obj[1]/obj[[1,3]]/obj[obj<2] #第二个是根据位置来索引,第四个是根据bool值索引
df['stata']/df[['stata','pop']]/df[:2]/df[df['pop']>1] #第一/二为列索引,第三个为位置行索引,第四个为bool行索引
4.算术运算与数据对齐
df1+df2 /对齐运算,索引扩充,值为NA
df.add(df2,fill_value=0)/df.sub(df2)/df.div(df2)/df.mul(df2)
5.DataFrame与Series之间的运算
df+obj/df.sub(obj.axis=0) #前者每行相减,后者每列相减,索引一定要对应,一般是df的某一行/某一列与df本身运算比较多,实质是对齐+广播运算
6.函数的应用和映射
np.abs(df)/df.apply(f) #前者是直接用数组函数,后者是定义函数,然后使用
7.排序与排名
obj.sortindex()/df.sort_index()/df.sort_index(axis=1, ascending=False) #前两个是行索引排序,后者是列索引排序,默认是升序,ascending=False为升序
obj.order()/df.sort_index(by=['pop']) #值排序
obj.rank(ascending=False,method='first')/df.rank(axis=1) #排名,有升降序,排名顺序,返回的数字
汇总计算描述
1.汇总统计
df.mean(axis,skipna) #前一个参数为沿着哪个轴,后一个参数表示是否跳过NA值,不调过改轴的统计值为NA
df.count()/df.sum()/df.describe()/df.max()/df.min()/df.quantile()
2.相关系数/协方差
df.corr()/df.cov()
3.唯一值/值计数
obj.unique() #得到数组
obj.value_counts() #值频率
pd.value_counts(obj.values,sort = False) # 该方法适用于数组及其它python序列
obj.isin(['b','c']) #得到series,里面值为为Bool,可作为布尔索引
df.apply(pd.value_counts).fillna(0) #对df中所有指去重为行索引,列索引不变
处理缺失数据
1.判断是否为缺失数据
pd/isnull()/pd.notnull #返回布尔值
2.滤除缺失数据
obj.dropna()
df.dropna(axis,how) #默认是删除有NA的行,axis=1删除列,how='all'表示所有行/列为NA才删
3.填充缺失值
df.fillna(value,method,axis,inplace,limit)
value:填充的值
method:插值方法,ffill/bfill
axis:插值依托哪个轴
inplace:True为视图,False为副本
limit:连续填充的最大数量
层次化索引
1.基本概括
obj[:,2] #两层变一层,取第二层索引的第二个值
obj.unstack() #转为df,第二层索引为列索引
obj.unstack().stack() /df.stack() #由df变为obj
2.重新分级顺序
df.swaplevel('key1','key2') #两个行索引或列索引交换位置,值不变
df.sortlevel(0,axis=1) # 指定某个行/列索引按照索引排序,值和行/列索引顺序会发生变化
3.根据级别汇总统计
df.sum(level='key1',axis) #指定行索引,axis默认为0,值当列索引,axis为1
4.使用DataFrame 的列值为索引
df.set_index(['stata','pop'],drop) #使用dff的列为索引,drop=False表示当成索引的列不删除,默认为True
df.resert_index() #将行索引变为列值,行索引名变为列索引
df.reindex() #重索引,括号里为索引
df.sort_index() #按照索引重排序,括号里为排序规则或者排序维度
df.set_index()/df.reset_index() #将列索引以及列值分别为行索引名以及行索引
参考:《利用Python进行数据分析》