Python数据处理 ——pandas库的常用操作

引言

众所周知,python的pandas库对于数据框的处理具有极其简化的强大功能,官方document中涉及的功能(function)更是有好几百个,要想做好数据处理的工作,那么你必须熟练掌握pandas中的各种操作,做到得心应手,拿来即用。本文针对我最近在处理数据的时候,掌握到的一些关于pandas的行和列操作的使用方法,我决定将它大概总结出来,分享给大家,也希望能帮助大家提升对数据处理的操作。本文的代码环境是Python3+Anaconda,推荐使用

内容

  • 查看数据框
  • 列切片
  • 按列排序
  • 合并数据框
  • 分组Groupby
  • 设置结果显示限制
  • 读取写入excel

一、查看数据框的常用操作

1、查看dataframe的前n行或尾n行

df=pandas.Dataframe(columns=[],index=[],data=[]) ##创建一个Dataframe
df.head(n=10) ## 显示前n行的数据
df.tail(n=10) ## 显示尾n行的数据

2、查看索引名,列名,values

df.index      ##返回df的行索引值,是一个array
df.columns ##返回df的列名,是一个array
df.values    ##返回df的所有值,是一个2D array

3、查看dataframe的一些统计特性

df.describe('all') ##统计每列的min, max,mean,std,quantile
df.dtypes  ##返回每列数据的类型
df.T  ##转置数据框
df.sort_index(axis=1,ascending=False) ##按索引排序所有列,升序或者降序

二、常用的列切片操作

1、取一列的所有数据

df['column_name'] ##利用列名直接取某一列
df[df.columns[index]] ##适合于你不知道列名,但是知道它在第几列

2、根据位置取行列数据df.loc

df.loc[index] ##根据行的位置,取特定行数据(列全取)
df.loc[[index],['a','b']] ##取index行的,ab两列数据
df.loc[[index],'a':'b'] ##取index行的,列名为'a' 到 列名为 'b'的所有列
##总之,列不能通过索引来取数

3、根据索引位置来取数df.iloc

df.iloc[0:10,0:10] ##切片后面的值取不到,即col_index=10,row_indx=10取不到
df.iloc[[0,5,10],[1,8,10]] ##可按照需求,选择特定的行和列
##总之iloc之内的数据都是数字,不能是行名列名

4、根据条件,逻辑值索引取数

df[df.A>0] ##取出A列中大于0的数,
df[df['A'].isin(['one','two'])] ##取出A列中包含'one','two'的数据,这个功能很强大,##可以帮助我们filter出符合条件的数据。

5、给列赋值

df['A']=np.array([1]*len(df)) ##用数组给某列赋值
df.loc[:,['a','c']]=[]  ##根据位置赋值
##知道如何取数,就能轻松给数据框赋值啦。

三、按列排序

df.sort_values(by='column_Name',ascending=True) ##按某列升序排序
df.sort_index(axis=1,ascending=True) ##索引排序

四、合并操作

1、将数据框的行或列合并(concat)

pd.concat([df1[:],df2[:],...],axis=0) ##按列拼接数据,要求列数和列名一样
pd.concat([df1,df2,...],axis=1##按行拼接数据,行数和行索引相同
##如果数据结构不一样,可以选择join="inner","outer",..sql中的操作

2、append将一行或多行数据添加

df.append(df1[:],ignore_index=True) ##将会重新设定index

3、将多个dataframe整合在一起Merge

df.merge(df1,on=['column_name',...],how=inner) ##内联表,根据主键来拼接
how="inner","left","right","outer"分别表示内连接左连接右连接外连接
##具体如何连接,大家去温习一下sql中的表连接操作吧.

五、分组操作Groupby

1、Groupby for splitting 把数据分成已有的几种类别

grouped=df.groupby(key) ##将某个主键按照类别分组,默认是列主键
grouped=df.groupby(key,axis=1) ##按照某个key分组,行操作
grouped=df.groupby([key1,key2,...]) ##可以依次group多个key。
grouped.groups ##返回分组的结果
grouped.get_group('a') ## 选择其中一个分组的类别,查看该类别的数据

2、Groupby for aggregation 分组聚合

grouped.aggregate(np.sum) ##分组求和,常见操作
grouped.size() ##分组统计数量
grouped.describe() ##分组查看描述统计结果

3、Groupby for applying 分组求各种函数

grouped.agg([np.sum,np.std,np.mean]) ##同时求和,均值方差。
grouped.apply(lambda x: function(x)) ##可以接上apply函数,进行自定义操作

4、Groupby for filtering 分组过滤数据

grouped.filter(lambda x : len(x)>2,dropna=True) ##类似这种filter操作
##根据自己需求,都能够相应地实现。

六、设置结果显示限制

很多情况下,我们查看数据操作的结果时,很多想要的行或列数据由于输出限制,而无法看到,这时,我们可以重新设置显示结果的限制条件,来获得更多想查看的数据结果。

pd.set_option("display.height",200) ##设置显示结果的高度
pd.set_option("display.max_seq_items",200) ##设置序列显示的最大个数
pd.set_option("display.max_columns",120) ##设置数据框显示的列数
pd.set_option("display.max_rows",50) ##设置数据框显示的行数

七、数据框写入excel或者csv

很多情况下,你的分析汇总结果需要保存到excel文件中,发给你的上司。因此这项技能你必须学会。基本的函数使用如下:

##先是读取数据
pd.read_csv(file_path,header=,sep=',',index_col=,...) ##常用的取数据函数
pd.read_excel(file_path,sheetName='',startcol=,startrow=,header=,...)
##保存数据相对规范的话是如下代码:
writer=pd.ExcelWriter('excel name.xlsx') ##新建一个excel
df.to_excel(writer,sheetName='dfName',startcol=,startrow=,...)
writer.save()

猜你喜欢

转载自blog.csdn.net/qq_35203425/article/details/80224245