pandas 學習 第1篇:pandas基礎 - 數據結構和數據類型


pandas是基於NumPy構建的模塊,含有使數據分析更快更簡單的操作工具和數據結構,是數據分析必不可少的五個包之一。pandas包含序列Series和數據框DataFrame兩種最主要數據結構,索引Index是跟序列和數據框密切相關的數據結構。

通常情況下,引入pandas的約定,只要在代碼中看到pd,就要聯想到pandas:

import pandas as pd

一,數據結構

序列是由一組數據(各種NumPy數據類型),以及一組與之相關的數據標簽(索引)組成,序列不要求數據類型是相同的。序列可以看作是一維數組:

>>> obj=pd.Series([4,5,'a'])
>>> obj
0    4
1    5
2    a
dtype: object

序列的表現形式為:索引在左邊,值在右邊。由於沒有顯式為Series指定索引,pandas會自動創建一個從0到N-1的整數型索引。

數據框(DataFrame)是二維的關系表格型數據結構,含有一組有序的列,每列的數據類型是相同的,列與列之間的數據類型可以不同,也可以相同。數據框的邏輯結構是行和列,列有列名(或叫做列索引),行有行索引,還可以為行或列索引設置標簽。

序列和數據框之間是密切關聯的,可以認為序列(Series)是二維表格中的一列或者一行。實際上,當訪問DataFrame的一行時,pandas自動把該行轉換為序列;當訪問DataFrame的一列時,Pandas也自動把該列轉換為序列。

Index對象是序列和數據框必不可少的成分,負責管理軸標簽,軸名稱等元數據,對於數據框,行有行索引,列有列索引;對於序列,行索引是必備的。索引對象是不可修改的,類似一個固定大小的數組。

二,數據類型

在大多數情況下,pandas使用NumPy的數組和dtypes作為序列和數據框中列的數據類型,NumPy支持的數據類型是float、int、bool、timedelta64[ns]。pandas擴展了NumPy的類型系統,用dtype屬性來顯示元素的數據類型,pandas主要有以下幾種dtype:

  • 字符串類型:object
  • 整數類型:Int64,Int32,Int16, Int8 
  • 無符號整數:UInt64,UInt32,UInt16, UInt8 
  • 浮點數類型:float64,float32
  • 日期和時間類型:datetime64[ns]、datetime64[ns, tz]、timedelta[ns]
  • 布爾類型:bool

1,查看變量的類型

查看變量的數據類型,使用type(var)函數

type(obj)

2,特殊的objct類型

通常情況下,使用object表示字符類型;

>>> pd.Series(['a', 'b', 'c'], dtype="object")
0    a
1    b
2    c
dtype: object

對於object類型,如果一個pandas對象在單列中包括多個dtype,那么使用object來容納所有的dtype。

# string data forces an ``object`` dtype
In [333]: pd.Series([1, 2, 3, 6., 'foo'])
Out[333]: 
0      1
1      2
2      3
3      6
4    foo
dtype: object

3,數值類型

pandas中的整數類型和浮點數類型可以為空(NULL),在定義數據組或序列時,使用dtype參數來定義整數類型:

arr = pd.array([1, 2, np.nan], dtype=pd.Int64Dtype())
pd.array([1, 2, np.nan], dtype="Int64")
pd.Series([1, 2, np.nan], dtype="Int32")

使用float32、float64定義浮點數類型:

>>> pd.Series([1, 2, np.nan], dtype="float32")
0    1.0
1    2.0
2    NaN
dtype: float32

4,日期和時間類型類型

datetime64[ns] 表示的是日期和時間類型

>>> pd.Series(['2018-07-01', '2019-07-01', '2019-10-01'], dtype="datetime64[ns]")
0   2018-07-01
1   2019-07-01
2   2019-10-01
dtype: datetime64[ns]

三,類型轉換

可以使用astype()函數,顯式把對象的類型從一個類型強制轉換為指定的數據類型:

>>> pd.Series(['2018-07-01', '2019-07-01', '2019-10-01']).astype('datetime64[ns]')
0   2018-07-01
1   2019-07-01
2   2019-10-01
dtype: datetime64[ns]

pandas還有類型轉換的特殊函數,用於轉換為特定的數據類型:

  • to_numeric() 
  • to_datetime() 
  • to_timedelta() 

比如,把序列轉換為日期類型:

>>> pd.to_datetime(pd.Series(['2018-07-01', '2019-07-01', '2019-10-01']))
0   2018-07-01
1   2019-07-01
2   2019-10-01
dtype: datetime64[ns]

 

 

參考文檔:

pandas overview


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM