Pandas資料處理(一)

2021-10-24 09:59:57 字數 4013 閱讀 1942

pandas是非常著名的開源資料處理庫,我們可以通過它完成對資料集進行快速讀取、轉換、過濾、分析等一系列操作。除此之外,pandas 擁有強大的缺失資料處理與資料****,可謂是資料預處理中的必備利器。

特有的資料結構是 pandas 的優勢和核心。我們可以將任意格式的資料轉換為 pandas 的資料型別,並使用 pandas 提供的一系列方法進行轉換、操作,最終得到我們期望的結果。

資料讀取
df = pd.read_csv(

"檔名.csv"

)df

pandas 提供了head()tail()方法,它可以幫助我們只預覽一小塊資料。

df.head(

)# 預設顯示前 5 條

df.tail(n)

# 指定顯示後 n 條

describe()相當於對資料集進行概覽,會輸出該資料集每一列資料的計數、最大值、最小值等。

df.describe(

)

df.values將 dataframe 轉換為 numpy 陣列

df.index  # 檢視索引
df.columns  # 檢視列名
df.shape  # 檢視形狀
資料選擇

基於索引數字選擇

選擇前 3 行資料

df.iloc[:3

]

我們還可以選擇特定的一行

df.iloc[

5]

df.iloc的 [[行],[列]] 裡面可以同時接受行和列的位置。

因此,選擇 1,3,5 行的**應該是

df.iloc[[1

,3,5

]]

選擇第 2-4 列

df.iloc[:,

1:4]

基於標籤名稱選擇

選擇前 3 行

df.loc[0:

2]

選擇 1,3,5 行

df.loc[[0

,2,4

]]

選擇列名為「列名n」到「列名m」的列

df.loc[:,

'列名n'

:'列名m'

]

選擇 1,3 行和 列名為"列名i"後面的列

df.loc[[0

,2],

'列名i'

:]

資料刪減
雖然我們可以通過資料選擇方法從乙個完整的資料集中拿到我們需要的資料,但有的時候直接刪除不需要的資料更加簡單直接。pandas 中,以 .drop 開頭的方法都與資料刪減有關。

dataframe.drop可以直接去掉資料集中指定的列和行。指定 labels 標籤引數,通過 axis 指定按列或按行刪除即可。

df.drop(labels=

['median age'

,'total males'

], axis=

1)

dataframe.drop_duplicates則通常用於資料去重,即剔除資料集中的重複值。通過指定去除重複值規則,以及axis按列還是按行去除即可。

df.drop_duplicates(

)

dataframe.dropna刪除缺少值,即資料集中空缺的資料列或行

df.dropna(

)

資料填充

在真實的生產環境中,我們需要處理的資料檔案很大機率會遇到的情況就是缺失值。

缺失值主要是指資料丟失的現象,也就是資料集中的某一塊資料不存在。除此之外、存在但明顯不正確的資料也被歸為缺失值一類。

檢測缺失值

pandas 中用於檢測缺失值主要用到兩個方法,分別是:isna()notna(),故名思意就是「是缺失值」和「不是缺失值」。缺省會返回布林值用於判斷。

通過isna()notna()中的乙個即可確定資料集中的缺失值

df.isna(

)df.notna(

)

填充缺失值fillna()方法

用相同的標量值替換 nan,比如用 0

df.fillna(

0)

通過引數,將缺失值前面或者後面的值填充給相應的缺失值

df.fillna(method=

'pad'

)# 使用缺失值前面的值進行填充

df.fillna(method=

'bfill'

)# 使用缺失值後面的值進行填充

通過limit=引數設定連續填充的限制數量

df.fillna(method=

'pad'

, limit=1)

# 最多填充一項

通過 pandas 自帶的求平均值方法等來填充特定列或行,對 c 列到 e 列用平均值填充

df.fillna(df.mean()[

'c':

'e']

)

插值填充
插值是數值分析中一種方法。簡而言之,就是借助於乙個函式(線性或非線性),再根據已知資料去求解未知資料的值。插值在資料領域非常常見,它的好處在於,可以盡量去還原資料本身的樣子。

通過interpolate()方法完成線性插值

df_interpolate = df.interpolate(

)df_interpolate

對於interpolate()支援的插值演算法,也就是method=。下面給出幾條選擇的建議:

如果你的資料增長速率越來越快,可以選擇method='quadratic'二次插值。

如果資料集呈現出累計分布的樣子,推薦選擇method='pchip'

如果需要填補預設值,以平滑繪圖為目標,推薦選擇method='akima'

當然,最後提到的method='akima',需要你的環境中安裝了 scipy 庫。除此之外,method='barycentric'method='pchip'同樣也需要 scipy 才能使用。

資料視覺化

當我們的資料是以 dataframe 格式呈現時,可以直接使用 pandas 提供的 dataframe.plot 方法呼叫

matplotlib 介面繪製常見的圖形。

使用插值後的資料 df_interpolate 繪製線形圖

df_interpolate.plot(

)

選擇其他樣式的圖形通過指定 kind= 引數即可

df_interpolate.plot(kind=

'bar'

)

pandas常用的還有:

Pandas資料處理(一)

pandas資料處理 一 import pandas as pd import numpy as np 利用numpy生成一組datafrome資料 df pd.dataframe np.arange 16 reshape 4,4 print df out 0 1 2 3 0 0 1 2 3 1 4...

pandas 資料處理

pandas中資料可以分為series,dataframe,panel分別表示一維至三維資料。其中在構造時,index表示行名,columns表示列名 構造方式 s pd.series data index index s pd series np random randn 5 index a b ...

pandas資料處理

dataframe.duplicated subset none,keep first 判斷dataframe中的資料是否有重複 必須一行中所有資料都重複才算重複,只能判斷行,不能判斷列 返回series dataframe.drop duplicates subset none,keep firs...