pandas導(dǎo)入與設(shè)置
一般在使用pandas時(shí),我們先導(dǎo)入pandas庫(kù)。
pandas在默認(rèn)情況下,如果數(shù)據(jù)集中有很多列,則并非所有列都會(huì)顯示在輸出顯示中。 您可以使用以下代碼行來(lái)設(shè)置輸出顯示中的列數(shù):
pd.set_option('display.max_columns', 500)
500表示列的最大寬度。 也就是說(shuō),500意味著在調(diào)用數(shù)據(jù)幀時(shí)最多可以顯示500列。 默認(rèn)值僅為50。此外,如果想要擴(kuò)展輸顯示的行數(shù)。 可以通過(guò)如下代碼進(jìn)行設(shè)置:
讀取數(shù)據(jù)集
導(dǎo)入數(shù)據(jù)是開(kāi)始的第一步,使用pandas可以很方便的讀取excel數(shù)據(jù)或者csv數(shù)據(jù),使用代碼如下:
pd.read_csv('Soils.csv')pd.read_excel('Soils.xlsx')
在括號(hào)內(nèi) 'Soils.csv'是上傳的數(shù)據(jù)文件名,一般如果數(shù)據(jù)文件不在當(dāng)前工作路徑,則需要加上路徑信息。如果讀取的文件沒(méi)有列名,需要在程序中設(shè)置header,舉例如下:
如果碰巧數(shù)據(jù)集中有日期時(shí)間類型的列,那么就需要在括號(hào)內(nèi)設(shè)置參數(shù)parse_dates = [column_name],以便Pandas可以將該列識(shí)別為日期。 例如,如果數(shù)據(jù)集中有一個(gè)名為Collection_Date的日期列,則讀取代碼如下:
pd.read_excel('Soils.xls', parse_dates = ['Collection_Date'])
以下是成功導(dǎo)入后的數(shù)據(jù)預(yù)覽。
探索DataFrame
以下是查看數(shù)據(jù)信息的5個(gè)最常用的函數(shù):
df.head():默認(rèn)返回?cái)?shù)據(jù)集的前5行,可以在括號(hào)中更改返回的行數(shù)。 示例: df.head(10)將返回10行。
df.tail():返回?cái)?shù)據(jù)集的最后5行。同樣可以在括號(hào)中更改返回的行數(shù)。
df.shape:返回表示維度的元組。 例如輸出(48,14)表示48行14列。
df.info():提供數(shù)據(jù)摘要,包括索引數(shù)據(jù)類型,列數(shù)據(jù)類型,非空值和內(nèi)存使用情況。
df.describe():提供描述性統(tǒng)計(jì)數(shù)據(jù)。
統(tǒng)計(jì)某列數(shù)據(jù)信息
以下是一些用來(lái)查看數(shù)據(jù)某一列信息的幾個(gè)函數(shù):
df['Contour'].value_counts() : 返回計(jì)算列中每個(gè)值出現(xiàn)次數(shù)。
df['Contour'].isnull().sum():返回'Contour'列中的空值計(jì)數(shù)
df['pH'].notnull().sum():返回“pH”列中非空值的計(jì)數(shù)
df['Depth'].unique():返回'Depth'列中的唯一值
df.columns:返回所有列的名稱
選擇數(shù)據(jù)
列選擇:如果只想選擇一列,可以使用df['Group']. 這里'Group'是列名。
要選擇多個(gè)列,可以使用df[['Group', 'Contour', 'Depth']]。
子集選擇/索引:如果要選擇特定的子集,我們可以使用.loc或.iloc方法。 基本使用方法如下:
df.loc[:,['Contour']]:選擇'Contour'列的所有數(shù)據(jù)。 其中單冒號(hào):選擇所有行。 在逗號(hào)的左側(cè),您可以指定所需的行,并在逗號(hào)的右側(cè)指定列。
df.loc[0:4,['Contour']]:選擇“Contour”列的0到4行。
df.iloc[:,2]:選擇第二列的所有數(shù)據(jù)。
df.iloc[3,:]:選擇第三行的所有數(shù)據(jù)。
數(shù)據(jù)清洗
數(shù)據(jù)清洗是數(shù)據(jù)處理一個(gè)繞不過(guò)去的坎,通常我們收集到的數(shù)據(jù)都是不完整的,缺失值、異常值等等都是需要我們處理的,Pandas中給我們提供了多個(gè)數(shù)據(jù)清洗的函數(shù)。
數(shù)值替換
刪除空值
df['pH'].dropna(inplace=True)
輸入空值
刪除行和列
df.drop(columns = ['Na'], inplace = True) #This drops the 'Na' columndf.drop(2, axis=0, inplace=True) #This drops the row at index 2
值得注意的是,axis = 0表示刪除行。 您可以使用axis = 1來(lái)刪除列。
更改列名稱
數(shù)據(jù)處理
您可以使用.apply在數(shù)據(jù).apply的行或列中應(yīng)用函數(shù)。 下面的代碼將平方根應(yīng)用于“Cond”列中的所有值。
df['Cond'].apply(np.sqrt)
數(shù)據(jù)分組
有時(shí)我們需要將數(shù)據(jù)分組來(lái)更好地觀察數(shù)據(jù)間的差異。Pandas中提供以下幾種方式對(duì)數(shù)據(jù)進(jìn)行分組。 下面的示例按“Contour”列對(duì)數(shù)據(jù)進(jìn)行分組,并計(jì)算“Ca”列中記錄的平均值,總和或計(jì)數(shù)。
也可以按多列進(jìn)行數(shù)據(jù)分組。
df.groupby(by=['Contour', 'Gp'])['Ca'].mean()
合并多個(gè)DataFrame
將兩個(gè)數(shù)據(jù)合并在一起有兩種方法,即concat和merge。Concat適用于堆疊多個(gè)數(shù)據(jù)幀的行。
按列連接數(shù)據(jù)
按行連接數(shù)據(jù)
pd.concat([df, df2], axis=0)
當(dāng)您的數(shù)據(jù)幀之間有公共列時(shí),合并適用于組合數(shù)據(jù)幀。
合并數(shù)據(jù)
數(shù)據(jù)保存
在完成數(shù)據(jù)清洗后,就需要將數(shù)據(jù)輸出到csv或excel文件中保存。如果要將數(shù)據(jù)輸出到由制表符分隔的csv文件,請(qǐng)使用以下代碼。 '\t'表示您希望它以制表符分隔。
df.to_csv('myDataFrame.csv', sep='\t')
輸出到excel:
聯(lián)系客服