python数据处理必会 之 pandas包中DataFrame和Series的常用方法整理

13 篇文章 0 订阅


Pandas

pandas是python中用于处理数据的常用包,主要用于处理表格型或者异质型数据,其经常与numpy或者scipy等数值计算工具包一起使用。pandas常用的三种数据类型为logical(逻辑型)、Numeric(数值型)和Character(字符型)。最常用的两种数据结构为Series(系列)和DataFrame(数据框)。要使用pandas处理数据就一定得会使用这两种数据结构。同时不要将这两种数据结构分开,这两种结构相互联系,DataFrame实际上就是Series的容器或是Series的‘放大版’,DataFrame的一列就是一个Series。因此两者的方法很多都能共用。

Series
目的方法
创建一个Series:A=pd.Series([‘D’,‘B’,‘C’],index=[‘x’,‘y’,‘z’]) # 可依顺序传入index
根据索引访问A[1]、A[‘y’] # 索引位置或者索引名皆可访问
追加元素A.append([‘A’]) # Series只能追加一个Series,因此先将要追加的元素转换为Series即可添加。
判断值的存在‘p’ in A.values,还有isin,isnull或者notnull可以使用
切片A[0:2] # 包含尾部哦
找索引号对应的index名A.index[2]
删除元素A.drop(1)、A.drop(‘y’)、A.drop(A.index[2]) # 索引位置或者索引名皆可
修改indexA.index = [‘a’,‘b’,‘c’]
寻找某值存在的位置A.index(A.values==‘z’)
唯一值A.unique() # 返回唯一值,即所有出现过的值,但只输出一次
DataFrame
目的方法
创建DataFramedf=pd.DataFrame({‘a’:[1,2,3],‘b’:[‘m’,‘n’,‘x’]},index=[‘s’,‘w’,‘e’]) # 由于是Series的容器,因此多个Series即可合并为DataFrame,字典也可以转为Series或者DataFrame(后面介绍的方法很多都是以这个DataFrame为例子的哈!)当然最常见的还是直接读入(如使用read_csv、read_table等等方式)
访问列df[‘列名’],df.iloc[:,‘列的号码’],df.loc[:,‘列名’] # iloc使用排列的索引号进行访问,loc则使用索引名进行访问
访问行df[‘要访问的行号,如2’:‘要访问的行的下一行的行号,如3’],df.iloc[‘要访问的行号’,:],df.loc[‘要访问的行的索引名’] # 若通过第一种切片访问,不能直接只输入df[2],这样会报错
访问指定位置df.at[‘e’,‘a’] # 前面为行名,后面为列名,这是pandas的习惯,一般先解析行方向(axis=0)再解析列方向(axis=1)
寻找某值存在的位置使用np.where()进行寻找
修改列名df.columns=[‘第一列的新列名’,‘第二列的新列名’] 、df.rename(columns={‘某列的旧列名’:‘要改为的新列名’}) # 第一种方法传入的列名需要和之前的列的数量一样哦,要不然会报错!!
修改indexdf.index=[‘第一行的新行名’,‘第二行的新行名’,‘第三行的新行名’]、df.rename(index={‘某行的旧行名’:‘要改为的新行名’} # 大致同修改列名的方法哈,也可使用reindex方法
删除某行或某列df.drop(‘要删除的行名’,axis=0)、df.drop(‘要删除的列名’,axis=1) 、df.drop(columns=[要删除的列的列名列表])、del df[‘列名’] # 有的情况需要通过axis切换行列哦,默认为行(axis=0)
增加列df[‘new’] = [2,5,8] # 依次填入列中每行需要的值
根据已有列增加新列可以使用df[‘某列’]与df[‘某列’]的计算即可哦,加减乘除、还有各种apply函数等等都能使用。
增加行df.loc[‘新行要取的名字’] = [2,1] # 依次填入行中每列需要的值
合并DataFramedf.append(df1) # append可以选择使用ignore_index为True或False保留原来的索引,此外还有pd.concat(轴向),pd.merge(选择left_on,right_on,how等参数进行行方向的合并)
去重df.duplicated(‘选择的列名’)、df.drop_duplicates(‘选择的列名’) #前者查看重复,后者用于去重,使用keep参数选择保留某个重复值,如keep=first或keep=last等
处理缺失值df.dropna()、df.fillna(‘填入填充缺失值的值’) # 前者用于去除缺失值所在的行,后者用于填充缺失值,默认填充的值为0
排序df.sort_values([‘列名’]) # 选择某一列即Series作为排序依据,ascending可以选择升降序,df.rank也可排序,但只返回排名
将某列设为索引列df.set_index(‘列名’)
撤销对index的修改df.reset_index() # 有是否删除之前的索引的选项,drop=True
描述性统计df.count()、df.describe()、df.min、df.max、df.idxmin、df.idxmax、df.sum、df.mean、df.cumsum、df.median、df.quantile、df.percentile、df.argmax、df.argmin # 等等,都是数学上的描述统计,有需要再查吧!
使用函数将lambda函数使用apply或者map方法融入到对数据框的处理中
替换某个值df.replace() # 但是不是很好用,之前失败过
对索引排序df.sort_index() # 也可传入by=‘a’,效果同sort_values
分组使用DataFrame中的groupby方法进行分组操作,即可以使用数据框中的某一列作为分组依据来对数据进行分组。例:df.groupby(df[‘列名’])、df.cut(‘a’,bins,labes=’’) # bins为分组依据,a为要分组的列,label为对分组进行的命名
计算个数df[‘列名’].value_counts() # 用于计算Series中每个值出现的次数(唯一值的个数),对DataFrame可以使用apply方法来统计df.apply(pd.value_counts)
inplace在使用很多操作时可以加入inplace=True表示在原数据框上处理,并非新建数据框
对某些记录提取df[条件] #t条件可以设置比较类,范围类,字符匹配或逻辑运算等
读取文件pd.read_csv()、pd.read_table()、pd.read_Excel()等
输出文件df.to_csv() # 可以选择使用index=False不输出索引列
广播机制df - df[‘a’] # DataFrame可以减去Series从而得到新DataFrame,且是每一行都会减
转置(换方向)即将DataFrame转置,直接使用df.T即可
遍历for index, row in df.iterrows(): # 不是很好用,但是有时候还是能用上哈,比如说提取某些列的值的时候。提取可使用row.values
叮!

DataFrame和Series有很多方法,但是上面写的都是些比较常用的功能,或说是我比较常用吧,哈哈,有其它常用的再加!!!当然若是自己要使用的话,那自己也得探索一下嘛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值