pandas reindex_Pandas 基础语法入门

最近把Pandas基础语法快速系统性的过了一遍,并把基础的知识点总结一下。

  • pandas基础语法
  1. Series
  2. DataFrame
  3. 索引对象
  • 基本功能
  1. 重新索引
  2. 丢弃指定轴上的项
  3. 索引/选取/过滤
  4. 算术运算和数据对齐
  5. DataFrame与Series之间的运算
  6. 函数应用与映射
  7. 排序和排名
  8. 带有重复值的轴索引
  • 汇总和计算描述
  1. 汇总统计
  2. 相关系数与协方差
  3. 唯一值等
  • 处理缺失数据
  1. 判断是否为缺失数据
  2. 滤除缺失数据
  3. 填充缺失数据
  • 层次化索引
  1. 基本概况
  2. 重排分级排序
  3. 根据级别汇总统计
  4. 使用的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进行数据分析》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值