溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Pandas庫是什么及怎么使用

發(fā)布時(shí)間:2023-02-22 16:38:10 來源:億速云 閱讀:302 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Pandas庫是什么及怎么使用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Pandas的介紹

pandas 是基于NumPy 的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會(huì)發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。

  • 2008年WesMcKinney開發(fā)出的庫

  • 專門用于數(shù)據(jù)挖掘的開源python庫

  • 以Numpy為基礎(chǔ),借力Numpy模塊在計(jì)算方面性能高的優(yōu)勢(shì)

  • 基于matplotlib,能夠簡便的畫圖

  • 獨(dú)特的數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)處理的時(shí)候經(jīng)常性需要整理出表格,在這里介紹pandas常見使用:

參考鏈接:10 minutes to pandas https://pandas.pydata.org/docs/user_guide/10min.html#min

數(shù)據(jù)結(jié)構(gòu)

Pandas常見的就兩種數(shù)據(jù)類型:Series和DataFrame,可以對(duì)應(yīng)理解為向量和矩陣,前者是一維的,后者是二維的。在DF中類似統(tǒng)計(jì)學(xué)中的數(shù)據(jù)組織方式,一行代表一項(xiàng)數(shù)據(jù),一列代表一種特征,用這種方式記憶能夠幫你更好理解DF。需要注意的是:在DF中index是行,column是列。

Pandas庫是什么及怎么使用

Pandas庫是什么及怎么使用

導(dǎo)入導(dǎo)出數(shù)據(jù)

常使用.csv格式的文件,我們?cè)趯?dǎo)入數(shù)據(jù)的時(shí)候使用pd.read_csv(),在導(dǎo)出數(shù)據(jù)的時(shí)候用df.write_csv(“/data/ymz.csv”).

# 讀入數(shù)據(jù)
In [144]: pd.read_csv("foo.csv")
Out[144]: 
     Unnamed: 0          A          B          C          D
0    2000-01-01   0.350262   0.843315   1.798556   0.782234
1    2000-01-02  -0.586873   0.034907   1.923792  -0.562651
2    2000-01-03  -1.245477  -0.963406   2.269575  -1.612566
3    2000-01-04  -0.252830  -0.498066   3.176886  -1.275581
4    2000-01-05  -1.044057   0.118042   2.768571   0.386039
..          ...        ...        ...        ...        ...
995  2002-09-22 -48.017654  31.474551  69.146374 -47.541670
996  2002-09-23 -47.207912  32.627390  68.505254 -48.828331
997  2002-09-24 -48.907133  31.990402  67.310924 -49.391051
998  2002-09-25 -50.146062  33.716770  67.717434 -49.037577
999  2002-09-26 -49.724318  33.479952  68.108014 -48.822030

[1000 rows x 5 columns]
# 寫出數(shù)據(jù)
In [143]: df.to_csv("foo.csv")

對(duì)數(shù)據(jù)進(jìn)行操作

對(duì)數(shù)據(jù)操作包括增(創(chuàng)建),刪,改,查。

增加數(shù)據(jù)(創(chuàng)建數(shù)據(jù))

相比較Series,我們更常使用DataFrame數(shù)據(jù)類型,常使用的創(chuàng)建DataFrame類型有兩種,一種是使用data創(chuàng)建(注意data得是一個(gè)二維list/array等),一種是使用字典創(chuàng)建。

1. 使用data創(chuàng)建DF
# 使用data導(dǎo)入
In [5]: dates = pd.date_range("20130101", periods=6)

In [6]: dates
Out[6]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06'],
              dtype='datetime64[ns]', freq='D')

In [7]: df = pd.DataFrame(data=np.random.randn(6, 4), index=dates, columns=list("ABCD"))

In [8]: df
Out[8]: 
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988
2. 使用字典創(chuàng)建DF
# 使用字典
In [9]: df2 = pd.DataFrame(
   ...:     {
   ...:         "A": 1.0,
   ...:         "B": pd.Timestamp("20130102"),
   ...:         "C": pd.Series(1, index=list(range(4)), dtype="float32"),
   ...:         "D": np.array([3] * 4, dtype="int32"),
   ...:         "E": pd.Categorical(["test", "train", "test", "train"]),
   ...:         "F": "foo",
   ...:     }
   ...: )
   ...: 

In [10]: df2
Out[10]: 
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo
3. 增加一行數(shù)據(jù)

1)使用loc在行尾增加

增加一行數(shù)據(jù)的方法有l(wèi)oc, iloc, append, concat, merge。這里介紹一下loc,loc[index]是在一行的最后增加數(shù)據(jù)。但是你需要注意loc[index]中的index,如果與已出現(xiàn)過的index相同,則會(huì)覆蓋原先index行,若不相同則才會(huì)增加一行數(shù)據(jù)。

Pandas庫是什么及怎么使用

2)使用concat將兩個(gè)DF合并

concat()也是一個(gè)增加數(shù)據(jù)常用的方法,常見于兩個(gè)表的拼接與爬蟲使用中,作用類似于append(),但是append()將在不久后被pandas舍棄,所以還是推薦使用concat()。

Pandas庫是什么及怎么使用

Pandas庫是什么及怎么使用

4. 增加一列數(shù)據(jù)

增加一列數(shù)據(jù)的方法直接用[]便可,例子如下:

Pandas庫是什么及怎么使用

Series用的比較少,案例如下:

In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8])

In [4]: s
Out[4]: 
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

刪除數(shù)據(jù)

對(duì)于刪除數(shù)據(jù),我們使用drop()方法,并指定參數(shù)為index(行)或者column(列)

1. 刪除一行數(shù)據(jù)

Pandas庫是什么及怎么使用

2. 刪除一列數(shù)據(jù)

Pandas庫是什么及怎么使用

改動(dòng)數(shù)據(jù)

改動(dòng)一行,列數(shù)據(jù)常用loc()和[]方法。

1. 改動(dòng)一行數(shù)據(jù)

改動(dòng)一行我們使用loc[]=[…]進(jìn)行更改。

Pandas庫是什么及怎么使用

2. 改動(dòng)一列數(shù)據(jù)

改動(dòng)一列數(shù)據(jù)我們使用[]進(jìn)行更改。

Pandas庫是什么及怎么使用

查找數(shù)據(jù)

在查找數(shù)據(jù)的時(shí)候,我們常使用[]來查看行列數(shù)據(jù),配合.T來將矩陣轉(zhuǎn)置。也可以使用head(),tail()來查看前幾行和后幾行數(shù)據(jù)。

1. 查看特定行數(shù)據(jù)

使用.loc[index]來查看特定行數(shù)據(jù),或者[]。建議使用.loc[]方法或者.iloc[]方法,loc[]通過行的名字尋找,iloc[]通過索引尋找。

使用類似[0:2]來查看特定行數(shù)據(jù),和python中l(wèi)ist使用類似。這個(gè)方法其實(shí)是調(diào)用了__getitem__()方法。

Pandas庫是什么及怎么使用

2. 查看特定列數(shù)據(jù)

我們需要使用兩層[]嵌套來訪問數(shù)據(jù),例如[ [“j”, “i”] ]。

Pandas庫是什么及怎么使用

3. 查看特定元素

確定第幾行第幾列后,使用.loc()方法或者.iloc()方法查找。

b = a.loc[ 1, "dir_name" ]

常用操作

數(shù)據(jù)分析時(shí)常用的兩個(gè)操作,轉(zhuǎn)置和計(jì)算統(tǒng)計(jì)量。

1. 轉(zhuǎn)置

使用.T便可以完成。

Pandas庫是什么及怎么使用

2. 計(jì)算統(tǒng)計(jì)量

使用.describe()。

Pandas庫是什么及怎么使用

3. 舍棄一列中多余重復(fù)數(shù)據(jù)

使用.drop_duplicates()

id_df = self.frames_meta_sub[['time_idx', 'pos_idx', 'slice_idx']].drop_duplicates()
4. 將特定列轉(zhuǎn)成numpy后處理

使用.to_numpy()方法將你所選擇的數(shù)據(jù)全部轉(zhuǎn)成二維的或者一維的ndarray,需要注意的是to_numpy()并不僅僅局限于數(shù)字,字符串也是可以轉(zhuǎn)換的(雖然這樣開銷比較大),ndarray能存儲(chǔ)字符串,這會(huì)讓你處理數(shù)據(jù)的過程變得異常簡單。有幾個(gè)維度取決于你取了幾行或者幾列。

df = df[ ["channel"] ]
ar = df.to_numpy()
5. 取出dataframe中特定位置的值

要取出 DataFrame 中特定位置的值,可以使用 .loc 或 .iloc 方法,具體取決于您想要使用的索引類型。

如果您使用標(biāo)簽索引(例如,行和列都使用標(biāo)簽名稱),則可以使用 .loc 方法。例如,如果您有一個(gè)名為 df 的 DataFrame,它具有行標(biāo)簽為 row_label,列標(biāo)簽為 column_label 的元素,則可以使用以下代碼獲取該元素的值:

value = df.loc[row_label, column_label]

如果您使用整數(shù)位置索引(例如,行和列都使用整數(shù)位置),則可以使用 .iloc 方法。例如,如果您有一個(gè)名為 df 的 DataFrame,它具有第一個(gè)行和第一個(gè)列的元素,則可以使用以下代碼獲取該元素的值:

value = df.iloc[0, 0]

請(qǐng)注意,索引從零開始,因此第一個(gè)行和第一個(gè)列的位置為 0。

以上就是“Pandas庫是什么及怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI