1. 程式人生 > 程式設計 >Python資料分析pandas模組用法例項詳解

Python資料分析pandas模組用法例項詳解

本文例項講述了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程式設計有所幫助。