Pandas是數據處理和數據分析中最流行的Python庫。本文將為大家介紹一些有用的Pandas信息,介紹如何使用Pandas的不同函數進行數據探索和操作。 包括如何導入數據集以及瀏覽,選擇,清理,索引,合併和導出數據等常用操作的函數使用,這是一個很好的快速入門指南,如果你已經學習過pandas,那麼這將是一個不錯的複習。
pandas導入與設置
一般在使用pandas時,我們先導入pandas庫。
import pandas as pd
pandas在默認情況下,如果數據集中有很多列,則並非所有列都會顯示在輸出顯示中。 您可以使用以下代碼行來設置輸出顯示中的列數:
pd.set_option('display.max_columns', 500)
500表示列的最大寬度。 也就是說,500意味著在調用數據幀時最多可以顯示500列。 默認值僅為50。此外,如果想要擴展輸顯示的行數。 可以通過如下代碼進行設置:
pd.set_option('display.max_rows', 500)
讀取數據集
導入數據是開始的第一步,使用pandas可以很方便的讀取excel數據或者csv數據,使用代碼如下:
pd.read_csv("Soils.csv")
pd.read_excel("Soils.xlsx")
在括號內 "Soils.csv"是上傳的數據文件名,一般如果數據文件不在當前工作路徑,則需要加上路徑信息。如果讀取的文件沒有列名,需要在程序中設置header,舉例如下:
pd.read_csv("Soils.csv",header=None)
如果碰巧數據集中有日期時間類型的列,那麼就需要在括號內設置參數parse_dates = [column_name],以便Pandas可以將該列識別為日期。 例如,如果數據集中有一個名為Collection_Date的日期列,則讀取代碼如下:
pd.read_excel("Soils.xls", parse_dates = ['Collection_Date'])
以下是成功導入後的數據預覽。
探索DataFrame
以下是查看數據信息的5個最常用的函數:
df.head():默認返回數據集的前5行,可以在括號中更改返回的行數。 示例: df.head(10)將返回10行。
df.tail():返回數據集的最後5行。同樣可以在括號中更改返回的行數。
df.shape:返回表示維度的元組。 例如輸出(48,14)表示48行14列。
df.info():提供數據摘要,包括索引數據類型,列數據類型,非空值和內存使用情況。
df.describe():提供描述性統計數據。
統計某列數據信息
以下是一些用來查看數據某一列信息的幾個函數:
df['Contour'].value_counts() : 返回計算列中每個值出現次數。
df['Contour'].isnull().sum():返回'Contour'列中的空值計數
df['pH'].notnull().sum():返回“pH”列中非空值的計數
df['Depth'].unique():返回'Depth'列中的唯一值
df.columns:返回所有列的名稱
選擇數據
列選擇:如果只想選擇一列,可以使用df['Group']. 這裡'Group'是列名。
要選擇多個列,可以使用df[['Group', 'Contour', 'Depth']]。
子集選擇/索引:如果要選擇特定的子集,我們可以使用.loc或.iloc方法。 基本使用方法如下:
df.loc[:,['Contour']]:選擇'Contour'列的所有數據。 其中單冒號:選擇所有行。 在逗號的左側,您可以指定所需的行,並在逗號的右側指定列。
df.loc[0:4,['Contour']]:選擇“Contour”列的0到4行。
df.iloc[:,2]:選擇第二列的所有數據。
df.iloc[3,:]:選擇第三行的所有數據。
數據清洗
數據清洗是數據處理一個繞不過去的坎,通常我們收集到的數據都是不完整的,缺失值、異常值等等都是需要我們處理的,Pandas中給我們提供了多個數據清洗的函數。
數值替換
df.replace({'Topk': 'Top'}, inplace=True)
刪除空值
df['pH'].dropna(inplace=True)
輸入空值
df['pH'].fillna(df['pH'].mean(), inplace=True) #nulls are imputed with mean of pH column
刪除行和列
df.drop(columns = ['Na'], inplace = True) #This drops the 'Na' column
df.drop(2, axis=0, inplace=True) #This drops the row at index 2
值得注意的是,axis = 0表示刪除行。 您可以使用axis = 1來刪除列。
更改列名稱
df.rename(columns = {'Conduc' : 'Cond', 'Dens' : 'Density'}, inplace = True)
數據處理
您可以使用.apply在數據.apply的行或列中應用函數。 下面的代碼將平方根應用於“Cond”列中的所有值。
df['Cond'].apply(np.sqrt)
數據分組
有時我們需要將數據分組來更好地觀察數據間的差異。Pandas中提供以下幾種方式對數據進行分組。 下面的示例按“Contour”列對數據進行分組,並計算“Ca”列中記錄的平均值,總和或計數。
df.groupby(by=['Contour'])['Ca'].mean()
df.groupby(by=['Contour'])['Ca'].count()
df.groupby(by=['Contour'])['Ca'].sum()
也可以按多列進行數據分組。
df.groupby(by=['Contour', 'Gp'])['Ca'].mean()
合併多個DataFrame
將兩個數據合併在一起有兩種方法,即concat和merge。Concat適用於堆疊多個數據幀的行。
按列連接數據
pd.concat([df, df2], axis=1)
按行連接數據
pd.concat([df, df2], axis=0)
當您的數據幀之間有公共列時,合併適用於組合數據幀。
合併數據
pd.merge(df, df2, left_on='Contour', right_on='Contour', how='outer')
數據保存
在完成數據清洗後,就需要將數據輸出到csv或excel文件中保存。如果要將數據輸出到由製表符分隔的csv文件,請使用以下代碼。 ''表示您希望它以製表符分隔。
df.to_csv('myDataFrame.csv', sep='')
輸出到excel:
writer = pd.ExcelWriter('myDataFrame.xlsx')
df.to_excel(writer,'DataFrame')
writer.save()
文末福利
很多讀者私信我說缺少Python的視頻教程,今天小編用了一整天的時間整理了400集Python的視頻教程出來,現在免費分享給各位讀者朋友,附贈一些Python學習書籍PDF版
領取書籍和400集python視頻教程的方式:
2、私信小編:“學習”就可以免費領取啦
視頻教程部分截圖:
書籍資料部分截圖:
閱讀更多 編程糰子 的文章