【Python基礎(chǔ)】Pandas筆記---概述與數(shù)據(jù)結(jié)構(gòu)
點擊上方“潛心的Python小屋”關(guān)注我們,第一時間推送優(yōu)質(zhì)文章。
前言
大家好,我是潛心。因為最近做實驗發(fā)現(xiàn)Pandas的數(shù)據(jù)處理技術(shù)忘記了,所以準備系統(tǒng)的概述一下Pandas的使用方法。
本文約1.5k字,預計閱讀5分鐘。
Pandas概覽

Pandas?是 Python的核心數(shù)據(jù)分析支持庫,提供了快速、靈活、明確的數(shù)據(jù)結(jié)構(gòu),旨在簡單、直觀地處理關(guān)系型、標記型數(shù)據(jù)。Pandas 的目標是成為 Python 數(shù)據(jù)分析實踐與實戰(zhàn)的必備高級工具,其長遠目標是成為最強大、最靈活、可以支持任何語言的開源數(shù)據(jù)分析工具。
數(shù)據(jù)結(jié)構(gòu)
Pandas 的主要數(shù)據(jù)結(jié)構(gòu)是 Series(一維數(shù)據(jù))與 DataFrame(二維數(shù)據(jù)),這兩種數(shù)據(jù)結(jié)構(gòu)足以處理金融、統(tǒng)計、社會科學、工程等領(lǐng)域里的大多數(shù)典型用例。
為什么要有兩個數(shù)據(jù)結(jié)構(gòu)??因為Pandas 數(shù)據(jù)結(jié)構(gòu)就像是低維數(shù)據(jù)的容器。比如,DataFrame 是 Series 的容器,Series 則是標量的容器。使用這種方式,可以在容器中以字典的形式插入或刪除對象。
Pandas 里,軸的概念主要是為了給數(shù)據(jù)賦予更直觀的語義,即用“更恰當”的方式表示數(shù)據(jù)集的方向。
Series
Series是帶標簽的一維數(shù)組,可存儲整數(shù)、浮點數(shù)、字符串、Python 對象等類型的數(shù)據(jù),軸標簽統(tǒng)稱為索引。
創(chuàng)建Series對象:
s?=?pd.Series(data=None,?index=None)
其中,data可以為:數(shù)組、字典、標量等,index可選,長度必須與data一致,默認為數(shù)值型索引。
導入包:
import?pandas?as?pd
import?numpy?as?np
例:
In[5]:?pd.Series([1,?2,?3,?4,?5])
Out[5]:?
0????1
1????2
2????3
3????4
4????5
dtype:?int64
??
In[6]:?d?=?{'a':1,?'b':2,?'c':3}
In[7]:?pd.Series(d)
Out[7]:?
a????1
b????2
c????3
dtype:?int64
Dataframe
DataFrame?是由多種類型的列構(gòu)成的二維標簽數(shù)據(jù)結(jié)構(gòu), 是最常用的 Pandas 對象。
創(chuàng)建DataFrame對象:
df?=?pd.DataFrame(data=None,?index=None,?columns=None,?dtype=None)
其中,data可以為:一維二維的ndarray、列表、字典等,index為行標簽(索引),columns為列標簽(特征),dtype為對象類型。
例:
In[8]:?d?=?{'one':?pd.Series([1.,?2.,?3.],?index=['a',?'b',?'c']),?'two':?pd.Series([1.,?2.,?3.,?4.],?index=['a',?'b',?'c',?'d'])}
In[9]:?pd.DataFrame(d)
Out[9]:?
???one??two
a??1.0??1.0
b??2.0??2.0
c??3.0??3.0
d??NaN??4.0
In[10]:?l?=?[[1,?2,?3],?[4,?5,?6]]
In[11]:?pd.DataFrame(l,?columns=['a',?'b',?'c'])
Out[11]:?
???a??b??c
0??1??2??3
1??4??5??6
大小可變與數(shù)據(jù)復制
Pandas 所有數(shù)據(jù)結(jié)構(gòu)的值都是可變的,但數(shù)據(jù)結(jié)構(gòu)的大小并非都是可變的,比如,Series 的長度不可改變,但 DataFrame 里就可以插入列。
Pandas 里,絕大多數(shù)方法都不改變原始的輸入數(shù)據(jù),而是復制數(shù)據(jù),生成新的對象。一般來說,原始輸入數(shù)據(jù)不變更穩(wěn)妥。所以大多數(shù)方法都是返回一個對象,若不進行復制,那原對象不會進行改變。
In[12]:?df1?=?pd.DataFrame(d)
In[13]:?df2?=?df1.transpose()
In[14]:?df1
Out[14]:?
???one??two
a??1.0??1.0
b??2.0??2.0
c??3.0??3.0
d??NaN??4.0
In[15]:?df2
Out[15]:?
???????a????b????c????d
one??1.0??2.0??3.0??NaN
two??1.0??2.0??3.0??4.0
Pandas優(yōu)勢
Pandas的優(yōu)勢部分包括如下:
處理浮點與非浮點數(shù)據(jù)里的缺失數(shù)據(jù),表示為? NaN;大小可變:插入或刪除?DataFrame 等多維對象的列; 自動、顯式數(shù)據(jù)對齊:顯式地將對象與一組標簽對齊,也可以忽略標簽,在 Series、DataFrame 計算時自動與數(shù)據(jù)對齊; 強大、靈活的分組(group by)功能:拆分-應用-組合數(shù)據(jù)集,聚合、轉(zhuǎn)換數(shù)據(jù); 把 Python 和 NumPy 數(shù)據(jù)結(jié)構(gòu)里不規(guī)則、不同索引的數(shù)據(jù)輕松地轉(zhuǎn)換為 DataFrame 對象; 基于智能標簽,對大型數(shù)據(jù)集進行切片、花式索引、子集分解等操作;
總結(jié)
Pandas 速度很快,適用于各個數(shù)據(jù)分析領(lǐng)域,它的數(shù)據(jù)結(jié)構(gòu)有Series和DataFrame兩種結(jié)構(gòu),實際中主要是對DataFrame對象進行處理分析。接下來會根據(jù)各個實例數(shù)據(jù)集,如:鳶尾花、紅酒、乳腺癌數(shù)據(jù)集進行實際操作,鞏固Pandas數(shù)據(jù)分析技術(shù)。
參考文獻
[1]. Pandas中文文檔: https://www.pypandas.cn/docs/getting_started/overview.html
往期精彩回顧
獲取一折本站知識星球優(yōu)惠券,復制鏈接直接打開:
https://t.zsxq.com/662nyZF
本站qq群1003271085。
加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):
