python数据处理,pandas包中DataFrame和Series的常用方法整理
程序员文章站
2022-05-09 21:38:09
pandas是python数据处理绝对会接触到的必备包,pandas也是python中最完备的数据处理工具。pandas所包含的Series和DataFrame工具分别处理数据列及数据框,学好这两个工具就再不用担心python数据处理啦。...
Pandas
pandas是python中用于处理数据的常用包,主要用于处理表格型或者异质型数据,其经常与numpy或者scipy等数值计算工具包一起使用。pandas常用的三种数据类型为logical(逻辑型)、Numeric(数值型)和Character(字符型)。最常用的两种数据结构为Series(系列)和DataFrame(数据框)。要使用pandas处理数据就一定得会使用这两种数据结构。同时不要将这两种数据结构分开,这两种结构相互联系,DataFrame实际上就是Series的容器或是Series的‘放大版’,DataFrame的一列就是一个Series。因此两者的方法很多都能共用。
Series
目的 | 方法 |
---|---|
创建一个Series: | A=pd.Series([‘A’,‘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]) # 索引位置或者索引名皆可 |
修改index | A.index = [‘a’,‘b’,‘c’] |
寻找某值存在的位置 | A.index(A.values==‘z’) |
唯一值 | A.unique() # 返回唯一值,即所有出现过的值,但只输出一次 |
DataFrame
目的 | 方法 |
---|---|
创建DataFrame | df=pd.DataFrame({‘a’:[1,2,3],‘b’:[‘m’,‘n’,‘x’]},index=[‘s’,‘w’,‘e’]) # 由于是Series的容器,因此多个Series即可合并为DataFrame,字典也可以转为Series或者DataFrame |
访问列 | df[‘b’],df.iloc[:,1],df.loc[:,‘a’] # iloc使用排列的索引号进行访问,loc则使用索引名进行访问 |
访问行 | df[2:3],df.iloc[2,:],df.loc[‘s’] # 若通过第一种切片访问,不能直接只输入df[2],这样会报错 |
访问指定位置 | df.at[‘e’,‘a’] # 前面为行名,后面为列名,这是pandas的习惯,一般先解析行方向(axis=0)再解析列方向(axis=1) |
寻找某值存在的位置 | 使用np.where()进行寻找 |
修改列名 | df.columns=[‘f’,‘g’] 、df.rename(columns={‘a’:‘f’}) # 第一种传入的列名需要和之前的列的数量一样 |
修改index | df.index=[‘q’,‘r’,‘t’]、df.rename(index={‘s’,‘q’} # 也可使用reindex方法 |
删除某行或某列 | df.drop(‘s’,axis=0)、df.drop(‘b’,axis=1) 、del df[‘a’] #通过axis切换行列,默认为行(axis=0) |
增加列 | df[‘new’] = [2,5,8] |
增加行 | df.loc[‘e’] = [2,1] |
合并DataFrame | df.append(df1) # append可以选择使用ignore_index为True或False保留原来的索引,此外还有pd.concat(轴向),pd.merge(选择left_on,right_on,how等参数进行行方向的合并) |
去重 | df.duplicated(‘a’)、df.drop_duplicates(‘a’) #前者查看重复,后者用于去重,使用keep参数选择保留某个重复值,如keep=first或keep=last等 |
处理缺失值 | df.dropna()、df.fillna() # 前者用于去除,后者用于填充缺失值 |
排序 | df.sort_values([‘b’]) # 选择某一列即Series作为排序依据,ascending可以选择升降序,df.rank也可排序,但只返回排名 |
将某列设为索引列 | df.set_index(‘a’) |
撤销对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 |
分组 | df.cut(‘a’,bins,labes=’’) # bins为分组依据,a为要分组的列,label为对分组进行的命名 |
计算个数 | df[‘a’].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(): |
叮!
DataFrame和Series有很多方法,但是上面写的都是些比较常用的功能,或说是我比较常用吧,哈哈,有其它常用的再加!!!当然若是自己要使用的话,那自己也得探索一下嘛。
本文地址:https://blog.csdn.net/keepaware/article/details/108246550
上一篇: 杜蕾斯带你玩转微博营销
下一篇: python安装gdal库