Python數據處理 ——pandas庫的常用操作

Python數據處理 ——pandas庫的常用操作

來自專欄 機器學習&數據科學

引言

眾所周知,python的pandas庫對於數據框的處理具有極其簡化的強大功能,官方document中涉及的功能(function)更是有好幾百個,要想做好數據處理的工作,那麼你必須熟練掌握pandas中的各種操作,做到得心應手,拿來即用。本文針對我最近在處理數據的時候,掌握到的一些關於pandas的行和列操作的使用方法,我決定將它大概總結出來,分享給大家,也希望能幫助大家提升對數據處理的操作。本文的代碼環境是Python3+Anaconda,推薦使用

內容

  • 查看數據框
  • 列切片
  • 按列排序
  • 合併數據框
  • 分組Groupby
  • 設置結果顯示限制
  • 讀取寫入excel

一、查看數據框的常用操作

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

df=pandas.Dataframe(columns=[],index=[],data=[]) ##創建一個Dataframedf.head(n=10) ## 顯示前n行的數據df.tail(n=10) ## 顯示尾n行的數據

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

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

3、查看dataframe的一些統計特性

df.describe(all) ##統計每列的min, max,mean,std,quantiledf.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) ##新建一個exceldf.to_excel(writer,sheetName=dfName,startcol=,startrow=,...)writer.save()


至此,相信大家基本已經了解了一些常用的pandas操作,下次我會講一些更加深入的東西,不局限於pandas,包括scikit-learn,machine learning,deep learning等知識,如果能對大家有一點點的幫助,我就很滿足啦~喜歡的話可以關注一下喔!


推薦閱讀:

自編碼器是什麼?有什麼用?這裡有一份入門指南(附代碼)
Teradata SQL基礎:從已有表創建新表
teradata SQL基礎:字元串處理
數據科學小白入門之環境搭建
如何擴充你的數據科學工具包?這裡有24款免費的數據科學工具!

TAG:Python庫 | 數據科學 | 數據處理 |