10分鐘快速入門Pandas庫
Pandas的介紹
pandas 是基于NumPy 的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫和一些標準的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會發(fā)現(xiàn),它是使Python成為強大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。
- 2008年WesMcKinney開發(fā)出的庫
- 專門用于數(shù)據(jù)挖掘的開源python庫
- 以Numpy為基礎(chǔ),借力Numpy模塊在計算方面性能高的優(yōu)勢
- 基于matplotlib,能夠簡便的畫圖
- 獨特的數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)處理的時候經(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,可以對應(yīng)理解為向量和矩陣,前者是一維的,后者是二維的。在DF中類似統(tǒng)計學中的數(shù)據(jù)組織方式,一行代表一項數(shù)據(jù),一列代表一種特征,用這種方式記憶能夠幫你更好理解DF。需要注意的是:在DF中index是行,column是列。


導(dǎo)入導(dǎo)出數(shù)據(jù)
常使用.csv格式的文件,我們在導(dǎo)入數(shù)據(jù)的時候使用pd.read_csv(),在導(dǎo)出數(shù)據(jù)的時候用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")對數(shù)據(jù)進行操作
對數(shù)據(jù)操作包括增(創(chuàng)建),刪,改,查。
增加數(shù)據(jù)(創(chuàng)建數(shù)據(jù))
相比較Series,我們更常使用DataFrame數(shù)據(jù)類型,常使用的創(chuàng)建DataFrame類型有兩種,一種是使用data創(chuàng)建(注意data得是一個二維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.5249882. 使用字典創(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 foo3. 增加一行數(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相同,則會覆蓋原先index行,若不相同則才會增加一行數(shù)據(jù)。

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


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

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ù)
對于刪除數(shù)據(jù),我們使用drop()方法,并指定參數(shù)為index(行)或者column(列)
1. 刪除一行數(shù)據(jù)

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

改動數(shù)據(jù)
改動一行,列數(shù)據(jù)常用loc()和[]方法。
1. 改動一行數(shù)據(jù)
改動一行我們使用loc[]=[…]進行更改。

2. 改動一列數(shù)據(jù)
改動一列數(shù)據(jù)我們使用[]進行更改。

查找數(shù)據(jù)
在查找數(shù)據(jù)的時候,我們常使用[]來查看行列數(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使用類似。這個方法其實是調(diào)用了__getitem__()方法。

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

3. 查看特定元素
確定第幾行第幾列后,使用.loc()方法或者.iloc()方法查找。
b = a.loc[ 1, "dir_name" ]
常用操作
數(shù)據(jù)分析時常用的兩個操作,轉(zhuǎn)置和計算統(tǒng)計量。
1. 轉(zhuǎn)置
使用.T便可以完成。

2. 計算統(tǒng)計量
使用.describe()。

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能存儲字符串,這會讓你處理數(shù)據(jù)的過程變得異常簡單。有幾個維度取決于你取了幾行或者幾列。
df = df[ ["channel"] ] ar = df.to_numpy()
5. 取出dataframe中特定位置的值
要取出 DataFrame 中特定位置的值,可以使用 .loc 或 .iloc 方法,具體取決于您想要使用的索引類型。
如果您使用標簽索引(例如,行和列都使用標簽名稱),則可以使用 .loc 方法。例如,如果您有一個名為 df 的 DataFrame,它具有行標簽為 row_label,列標簽為 column_label 的元素,則可以使用以下代碼獲取該元素的值:
value = df.loc[row_label, column_label]
如果您使用整數(shù)位置索引(例如,行和列都使用整數(shù)位置),則可以使用 .iloc 方法。例如,如果您有一個名為 df 的 DataFrame,它具有第一個行和第一個列的元素,則可以使用以下代碼獲取該元素的值:
value = df.iloc[0, 0]
請注意,索引從零開始,因此第一個行和第一個列的位置為 0。
到此這篇關(guān)于10分鐘快速入門Pandas庫的文章就介紹到這了,更多相關(guān)Pandas庫作用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python通過yield實現(xiàn)數(shù)組全排列的方法
這篇文章主要介紹了python通過yield實現(xiàn)數(shù)組全排列的方法,實例分析了全排列的概念及yield實現(xiàn)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
pandas修改DataFrame列名的實現(xiàn)方法
這篇文章主要介紹了pandas修改DataFrame列名的實現(xiàn)方法, 文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-02-02
使用Fastapi打包exe后無限啟動導(dǎo)致死機的解決辦法
將 fastapi 服務(wù)打包成 exe 后雙擊執(zhí)行,命令行中不斷創(chuàng)建服務(wù)導(dǎo)致cpu吃滿,最后死機,所以本文給大家介紹了Fastapi打包exe后無限啟動導(dǎo)致死機的解決辦法,需要的朋友可以參考下2024-03-03
numpy創(chuàng)建神經(jīng)網(wǎng)絡(luò)框架
本文介紹了使用numpy從零搭建了一個類似于pytorch的深度學習框架,可以用在很多地方,有需要的朋友可以自行參考一下2021-08-08
DJANGO-ALLAUTH社交用戶系統(tǒng)的安裝配置
django-allauth是集成了local用戶系統(tǒng)和social用戶系統(tǒng),其social用戶系統(tǒng)可以掛載多個賬戶。也是一個流行度非常高的Django user系統(tǒng),我們這里簡單介紹下,分享下個人的使用經(jīng)驗2014-11-11

