Python資料分析pandas模組用法例項詳解
阿新 • • 發佈:2020-01-09
本文例項講述了Python資料分析pandas模組用法。分享給大家供大家參考,具體如下:
pandas
pandas10分鐘入門,可以檢視官網:10 minutes to pandas
也可以檢視更復雜的cookbook
- pandas是非常強大的資料分析包,pandas 是基於 Numpy 構建的含有更高階資料結構和工具的資料分析包。就好比 Numpy的核心是 ndarray,pandas 圍繞著 Series 和 DataFrame 兩個核心資料結構展開 。Series和DataFrame 分別對應於一維的序列和二維表結構。
建立物件
常規匯入方式:
import pandas as pd import numpy as np import matplotlib.pyplot as plt
Series
- Series 可以看做一個定長的有序字典,它是能夠儲存任何資料型別(整數,字串,浮點數,Python物件等)的一維標記陣列。
- Series物件包含兩個主要的屬性:index 和 values。
- 資料可以是Python字典、 ndarray、scalar value標量值(如5)等
- 建立時有沒有index都會設定預設下標,但是索引用的是陣列時會預設使用建立時的索引
- 建立時還可以指定name名字屬性,之後可以修改 rename
ser1 = pd.Series(range(10,15),index=list('ABCDE')) print(ser1) # 下標和索引等同 print(ser1['A']) print(ser1[0])
輸出:
A 10
B 11
C 12
D 13
E 14
dtype: int64
10
10
取連續多個數據時,下標取值不包含結束位置,索引切片包括結束位置
print(ser1['A':'D']) print(ser1[0:3])
輸出:
A 10
B 11
C 12
D 13
dtype: int64
A 10
B 11
C 12
dtype: int64
取多個數據、條件篩選(布林索引)
# 注意裡面是一個列表 print(ser1[[0,1,3]]) # 布林索引 print(ser1[(ser1>12)&(ser1<15)])
DataFrame
DataFrame是二維標記資料結構。 您可以將其視為電子表格或SQL表,或Series物件。 它通常是最常用的pandans物件。 像Series一樣,DataFrame接受許多不同種類的輸入:
- Dict of 1D ndarrays,lists,dicts,or Series
- 2-D numpy.ndarray
- Structured or record ndarray
- A Series
- Another DataFrame
df1 = pd.DataFrame(np.random.randint(10,50,(3,4)),- index=list('ABC'),columns=list('abcd'))
- index是行索引,colums是列索引
- 用字典建立時,鍵名就是列索引,而且鍵值可以為列表,會自動補齊
取單行或單列資料,取單個數據
# 列取值,取出的是一個series物件 print(df1['a']) print(df1['a'].values) # 取出一行資料的某一行資料,也就是單個數據 print(df1['a']['B']) # 這兩個一樣 print(df1['a'][1])
取不連續多列,取連續多列(預設不支援連續,需要高階索引)
# 取不連續多列 print(df1[['a','c']])
行索引,可以直接切片,但是預設不能不連續多行取值,下標同理
print('行索引取值##############') print(df1['A':'A']) # 取連續多行就是df1['A':'C']
高階索引(花式索引)
一般情況用於DataFrame,這裡直接略過Series
loc標籤索引
df1 = pd.DataFrame(np.random.randint(10,(5,index=list('ABCDE'),columns=list('abcd')) # 取單行,型別是series print(df1.loc['A']) print(type(df1.loc['A'])) # 取連續多行,型別是DataFrame print(df1.loc['A':'C']) # 如果沒有index索引就用下標,可以取連續多行連續多列 print(df1.loc['A':'D','a':'c']) # 取不連續多行不連續多列 print(df1.loc[['A','C'],['a','c']])
iloc 位置索引
iloc是下標和lo用法一樣,但是下標索引左閉右開,loc是包括最後一位
# DataFrame print(df1.iloc[0:2,0]) # 注意和df1.loc['A':'C','a']的區別 print(df1.loc['A':'C','a'])
ix 標籤與位置混合索引
博主使用的pandas 0.24.2版本已經棄用.ix了(warning但還能使用),所以也就不寫了
- ix是以上二者的綜合,既可以使用索引編號,又可以使用自定義索引,要視情況不同來使用,
- 如果索引既有數字又有英文,那麼這種方式是不建議使用的,容易導致定位的混亂。
增加資料
1 | 2 |
---|---|
增加一行資料 | 1.df1.loc[‘D'] = [1,2,3,4,5] 2.df1.loc[‘D'] = [np.random.randint(10,20)] |
增加一列資料 | df1. |
更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python數學運算技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》
希望本文所述對大家Python程式設計有所幫助。