pandas[1]

匯入模組

import numpy as np
import pandas as pd

Pandas是建立在numpy的一個資料處理套件。

Pandas 數據結構

1) Series
2) DataFrame

♦Series 物件
常用的屬性或方法描述
axes返回行軸標籤的列表。
dtype返回對象的dtype。
empty如果系列為空,則返回True。
ndim根據定義1,返回基礎數據的維數。
size返回基礎數據中的元素數。
values將系列返回為ndarray。
head()返回前n行。
tail()返回最後n行。
  • 建立
    pandas.Series
    Pandas Series是被索引資料的一維數組,他可以使用Array、Dict、Scalar value or constant來建立。

pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

參數描述
1.data數據採用各種形式,如ndarray,list,常量
2.index索引值必須是唯一且可清除的,與數據長度相同。如果沒有傳遞索引,則默認為np.arrange(n)。
3.dtypedtype用於數據類型。如果為None,則將推斷數據類型
4.copy複製數據。默認為False

Series建立及索引 Series索引 以dict建立

範例

♦DataFrame 物件
常用的屬性或方法描述
T轉置行和列。
axes返回一個列表,其中行軸標籤和列軸標籤為唯一成員。
dtypes返回此對像中的dtypes。
empty如果NDFrame完全為空,則為True [無項目]; 如果任何軸的長度為0。
ndim軸數/數組尺寸。
shape返回表示DataFrame維度的元組。
sizeNDFrame中的元素數。
valuesNDFrame的Numpy表示。
head()返回前n行。
tail()返回最後n行。

可以使用各種輸入創建pandas DataFrame,包括 Lists、dict、Series、Numpy ndarrays、另一個 DataFrame
pandas.DataFrame
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

參數描述
data數據採用各種形式,如ndarray,系列,地圖,列表,字典,常量以及另一個DataFrame。
index對於行標籤,如果沒有傳遞索引,則用於結果幀的索引是Optional Default np.arrange(n)。
columns對於列標籤,可選的默認語法是 - np.arrange(n)。僅當沒有傳遞索引時才會出現這種情況。
dtype每列的數據類型。
copy如果默認值為False,則此命令(或其他任何命令)用於復制數據。
  • 建立
    以list(or ndarray)及tuple建立 以dict建立 以Series建立

  • 索引、添加、修改
    簡單索引示例 添加 修改 使用切片索引修改值

  • 刪除
    DataFrame.drop
    DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

參數描述
labels要刪除的索引標籤或列標籤。
axis{0或’index’,1或’columns’},默認為0
index, columns要刪除的索引標籤跟列標籤。
levelint或level name,可選,對於MultiIndex,將從中刪除標籤的級別。
inplacebool,默認為False,如果為True,則進行就地操作並返回None。
errors{‘ignore’, ‘raise’}, 默認‘raise’,如果“忽略”,則禁止錯誤,僅刪除現有標籤。

資料建立 刪除演示

  1. DataFrame.append
    DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
參數描述
otherDataFrame或Series / dict-like對象,或者這些對象的列表。(要追加的數據)
ignore_indexboolean,默認為False,如果為True,請不要使用索引標籤。
verify_integrityboolean,默認為False,如果為True,則在創建具有重複項的索引時引發ValueError。
sortboolean, 默認為 None,如果self和other的列未對齊,請對列進行排序。不推薦使用默認排序,並將在未來版本的pandas中更改為not-sorting。 顯式傳遞sort = True以使警告靜音並排序。 顯式傳遞sort = False以使警告靜音而不進行排序。

加入演示 使用ignore_index忽略原索引

  1. pandas.concat
    pandas.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True)
參數描述
objsSeries,DataFrame或Panel對象的序列或映射,如果傳遞了dict,則排序的鍵將用作keys 參數,除非它被傳遞,在這種情況下將選擇值(見下文)。任何None對像都將以靜默方式刪除,除非它們都是None,在這種情況下將引發ValueError
axis{0 /‘index’,1 /‘columns’},默認為0,軸連接起來
join{‘inner’,‘outer’},默認’outer’,如何處理其他軸上的索引(inner使用交集、outer使用聯集)
join_axes索引對象列表,用於其他n - 1軸的特定索引,而不是執行內部/外部設置邏輯
ignore_indexboolean,默認為False,如果為True,請不要使用串聯軸上的索引值。生成的軸將標記為0,…,n - 1.如果要連接並置軸沒有有意義的索引信息的對象,這將非常有用。請注意,在連接中仍然遵循其他軸上的索引值。
keys序列,默認None,如果傳遞了多個級別,則應包含元組。使用傳遞的鍵作為最外層來構造層次索引
levels要判斷的序列列表,默認為None,用於構造MultiIndex的特定級別(唯一值)。否則,他們將從鍵中推斷出來
nameslist,默認None,生成的分層索引中的級別的名稱
verify_integrityboolean,默認為False,檢查新的連鎖軸是否包含重複項。相對於實際數據連接,這可能非常昂貴
sortboolean, 默認 None,如果在連接 為“外部” 時尚未對齊,則對非連接軸進行排序。不推薦使用當前的排序默認值,並且將在未來版本的pandas中更改為not-sorting。明確地傳遞sort=True警告並排序。明確地通過sort=False沉默警告而不是排序。當join='inner’已經保留非連接軸的順序時,這沒有效果。版本0.23.0中的新功能。
copyboolean,默認為True,如果為False,則不要複制數據

axis參數演示 ignore_index、verify_integrity(如果有重複像則報錯)演示 keys 建立資料 sort、join join_axes

  1. DataFrame.merge
    默認會自動對應相同欄位內容進行合併。
    DataFrame.merge(right, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’), copy=True, indicator=False, validate=None)
參數描述
rightDataFrame
how{‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’,left:僅使用左框架中的鍵,類似於SQL左外連接; 保留關鍵順序,right:僅使用右框架中的鍵,類似於SQL右外連接; 保留關鍵順序,outer:使用來自兩個幀的鍵的並集,類似於SQL全外連接; 按字典順序排序鍵,inner:使用兩個幀的鍵交集,類似於SQL內連接; 保留左鍵的順序。
on標籤或列表,要加入的列或索引級別名稱。這些必須在兩個DataFrame中找到。如果on為None且未合併索引,則默認為兩個DataFrame中列的交集。
left_on標籤或列表,或類似數組,要在左側DataFrame中連接的列級或索引級別名稱。也可以是左數據幀長度的數組或數組列表。這些數組被視為列。
right_on標籤或列表,或類似數組,要在右側DataFrame中連接的列級或索引級別名稱。也可以是右側DataFrame長度的數組或數組列表。這些數組被視為列。
left_index布爾值,默認為False,使用左側DataFrame中的索引作為連接鍵。如果是MultiIndex,則其他DataFrame中的鍵數(索引或列數)必須與級別數相匹配
right_index布爾值,默認為False,使用右側DataFrame中的索引作為連接鍵。與left_index相同的警告
sort布爾值,默認為False,在結果DataFrame中按字典順序對連接鍵進行排序。如果為False,則連接鍵的順序取決於連接類型(關鍵字如何)
suffixes2長度序列(元組,列表,…),後綴分別應用於左側和右側的重疊列名稱
copyboolean,默認為True,如果為False,則不要不必要地複制數據
indicator布爾值或字符串,默認為False,如果為True,則添加一列以輸出名為“_merge”的DataFrame,其中包含每行源的信息。如果string,具有每行源的信息的列將被添加到輸出DataFrame,並且列將被命名為string的值。信息列為分類型,對於其合併鍵僅出現在“左”DataFrame中的觀察值為“left_only”,對於其合併鍵僅出現在“右”DataFrame中的觀察值為“right_only”,如果為觀察的合併密鑰在兩者中找到。
validatestring, default None,如果指定,則檢查merge是否為指定類型。one_to_one”或“1:1”檢查合併鍵是否在左右數據集中都是唯一的。 “one_to_many”或“1:m”檢查合併鍵在左數據集中是否唯一。 “many_to_one”或“m:1”檢查合併鍵在右側數據集中是否唯一。 “many_to_many”或“m:m”允許,但不會導致檢查。

資料建立 merge直接操作及資料建立 on演示及資料建立 left_on、right_on、left_index、right_index演示 suffixes演示 資料建立 how演示

  1. DataFrame.join
    DataFrame.join(other, on=None, how=‘left’, lsuffix=’’, rsuffix=’’, sort=False)
參數描述
otherDataFrame,具有名稱字段集的系列或DataFrame列表,索引應該類似於此列中的一列。如果傳遞了Series,則必須設置其name屬性,並將其用作生成的連接DataFrame中的列名
onname,tuple / names of list或array-like,調用者中的列或索引級別名稱,用於連接其他索引,否則加入index-on-index。如果給定多個值,則另一個 DataFrame必須具有MultiIndex。如果數組尚未包含在調用DataFrame中,則可以將數組作為連接鍵傳遞。像Excel VLOOKUP操作一樣
how{‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘left’,如何處理這兩個對象的操作。left:使用調用框架的索引(如果指定了on,則使用列),right:使用其他框架的索引,outer:調用框架索引的形式聯合(或指定的列,如果指定)與其他框架的索引,並按字典順序對其進行排序,inner:調用框架索引(或指定的列,如果指定)與其他框架索引的形式交集,保留調用框架的索引順序
lsuffixstring,從左框架的重疊列使用的後綴
rsuffixstring,從右框架的重疊列使用後綴
sort布爾值,默認為False,按連接鍵按字典順序排序結果DataFrame。如果為False,則連接鍵的順序取決於連接類型(關鍵字如何)
  • 索引調換
    DataFrame.reindex
    DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)
    範例 範例2

  • 複製
    複製DataFrame以及DataFrame切片(與numpy相同切片是原DataFrame視圖,需要維新資料時須使用.copy() )資料。
    DataFrame.copy
    DataFrame.copy(deep=True)
    copy方法

  • 遍歷(iterrows)
    DataFrame.iterrows


Index、column 索引

♦Index 物件

Index 、columns都是Index物件。
Index 、columns索引及修改

♦索引操作
  • lociloc
    loc可傳入index或column名稱,iloc可傳入index或column代號(數字),loc也可傳入相應形狀的bool值(1維),多維需要直接使用[]。
    建立資料及比較操作(傳回真值表) loc及iloc操作 不連續直接索引 混和運用 混和運用 (與 [filter3 , :]同義),可以直接使用[ ] 混和運用 配合flatnonzero 配合flatnonzero
  • 查找NAN值
    np.nan需要使用pandas.isnull查找。
    查找nan值 修改nan值
  • 最大直索引(常用於one hot reverse)
    pandas.DataFrame.idxmax

計算

♦基本運算

運算符的使用 運算符的使用及使用numpy計算方法 describe方法 計算密度

♦Broadcasting(廣播)

numpy的Broadcasting特性:
array的Broadcasting特性 pandas的Broadcasting特性


缺失資料

♦類型

pandas使用NaN與None來表示空值。

  • None
    有None資料,只能維python的Object形式,會降低整個資料的運算效率。
    *補充:pandas的字串是以Object形式儲存的。

  • NaN
    NaN是一個IEEE浮點數的一個特殊值,NaN做運算=NaN。

♦Null值操作(NA值)
  1. isnull()
  2. notnull()
  3. dropna()
  4. fillna()

階層(多重)索引

類似pandas.panel,但panel以棄用,pandas建議使用多重索引方式來表示。

♦MultiIndex 物件

MultiIndex

MultiIndex.from_arrays
將數組列表轉換為MultiIndex
MultiIndex.from_product
從迭代的笛卡爾積中創建一個MultiIndex
MultiIndex.from_tuples
將元組列表轉換為MultiIndex
  • 建立
    MultiIndex建立 MultiIndex建立

-刪除
刪除

  • 添加索引名稱
    建立資料 添加索引名稱index 添加索引名稱columns
  • 多重索引切片
    多重索引切片
  • 多重索引排序
    Pandas索引若無進行排序,使用切片取連續資料會出現錯誤,可使用numpy方法或下面介紹的pandas方法進行排序。
    ::錯誤示例:: 錯誤示例
  1. DataFrame.sort_index() :按照索引排序。
    DataFrame.sort_index
    資料建立 按照索引排序

  2. DataFrame.sort_values() :按照內容(值)排序。
    DataFrame.sort_values
    資料建立 按照內容(值)排序(單欄) 按照內容(值)排序(多欄) 按照內容(值)排序(行)

  • 快速轉換
  1. 單層
    資料建立 stack() unstack()
  2. 多層
    unstack() stack()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值