pandas[1]

pandas1
pandas2


匯入模組

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.dtype dtype用於數據類型。如果為None,則將推斷數據類型
4.copy 複製數據。默認為False
Series建立及索引

Series索引

以dict建立
♦DataFrame 物件
常用的屬性或方法 描述
T 轉置行和列。
axes 返回一個列表,其中行軸標籤和列軸標籤為唯一成員。
dtypes 返回此對像中的dtypes。
empty 如果NDFrame完全為空,則為True [無項目]; 如果任何軸的長度為0。
ndim 軸數/數組尺寸。
shape 返回表示DataFrame維度的元組。
size NDFrame中的元素數。
values NDFrame的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 要刪除的索引標籤跟列標籤。
level int或level name,可選,對於MultiIndex,將從中刪除標籤的級別。
inplace bool,默認為False,如果為True,則進行就地操作並返回None。
errors {‘ignore’, ‘raise’}, 默認‘raise’,如果“忽略”,則禁止錯誤,僅刪除現有標籤。
資料建立

刪除演示
  1. DataFrame.append
    DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
參數 描述
other DataFrame或Series / dict-like對象,或者這些對象的列表。(要追加的數據)
ignore_index boolean,默認為False,如果為True,請不要使用索引標籤。
verify_integrity boolean,默認為False,如果為True,則在創建具有重複項的索引時引發ValueError。
sort boolean, 默認為 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)
參數 描述
objs Series,DataFrame或Panel對象的序列或映射,如果傳遞了dict,則排序的鍵將用作keys 參數,除非它被傳遞,在這種情況下將選擇值(見下文)。任何None對像都將以靜默方式刪除,除非它們都是None,在這種情況下將引發ValueError
axis {0 /'index',1 /'columns'},默認為0,軸連接起來
join {'inner','outer'},默認'outer',如何處理其他軸上的索引(inner使用交集、outer使用聯集)
join_axes 索引對象列表,用於其他n - 1軸的特定索引,而不是執行內部/外部設置邏輯
ignore_index boolean,默認為False,如果為True,請不要使用串聯軸上的索引值。生成的軸將標記為0,...,n - 1.如果要連接並置軸沒有有意義的索引信息的對象,這將非常有用。請注意,在連接中仍然遵循其他軸上的索引值。
keys 序列,默認None,如果傳遞了多個級別,則應包含元組。使用傳遞的鍵作為最外層來構造層次索引
levels 要判斷的序列列表,默認為None,用於構造MultiIndex的特定級別(唯一值)。否則,他們將從鍵中推斷出來
names list,默認None,生成的分層索引中的級別的名稱
verify_integrity boolean,默認為False,檢查新的連鎖軸是否包含重複項。相對於實際數據連接,這可能非常昂貴
sort boolean, 默認 None,如果在連接 為“外部” 時尚未對齊,則對非連接軸進行排序。不推薦使用當前的排序默認值,並且將在未來版本的pandas中更改為not-sorting。明確地傳遞sort=True警告並排序。明確地通過sort=False沉默警告而不是排序。當join='inner'已經保留非連接軸的順序時,這沒有效果。版本0.23.0中的新功能。
copy boolean,默認為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)
參數 描述
right DataFrame
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,則連接鍵的順序取決於連接類型(關鍵字如何)
suffixes 2長度序列(元組,列表,...),後綴分別應用於左側和右側的重疊列名稱
copy boolean,默認為True,如果為False,則不要不必要地複制數據
indicator 布爾值或字符串,默認為False,如果為True,則添加一列以輸出名為“_merge”的DataFrame,其中包含每行源的信息。如果string,具有每行源的信息的列將被添加到輸出DataFrame,並且列將被命名為string的值。信息列為分類型,對於其合併鍵僅出現在“左”DataFrame中的觀察值為“left_only”,對於其合併鍵僅出現在“右”DataFrame中的觀察值為“right_only”,如果為觀察的合併密鑰在兩者中找到。
validate string, 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)
參數 描述
other DataFrame,具有名稱字段集的系列或DataFrame列表,索引應該類似於此列中的一列。如果傳遞了Series,則必須設置其name屬性,並將其用作生成的連接DataFrame中的列名
on name,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:調用框架索引(或指定的列,如果指定)與其他框架索引的形式交集,保留調用框架的索引順序
lsuffix string,從左框架的重疊列使用的後綴
rsuffix string,從右框架的重疊列使用後綴
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查找。


  • 多重查找



計算

♦基本運算
運算符的使用

運算符的使用及使用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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容