Pandas數(shù)據(jù)結(jié)構(gòu)介紹

Pandas數(shù)據(jù)結(jié)構(gòu)介紹

Series

  • 聲明對(duì)象
    Series是帶索引功能的一維數(shù)組澜躺,其對(duì)象包含value和index基本屬性
    s=pd.Series([1,2,3],index=['a','b','c'])
    s.index #['a','b','c']
    s.value #[1,2,3]

  • 取元素
    s[索引] # s[['b','c']]

  • 用Numpy數(shù)組或其他Series對(duì)象定義新的Series對(duì)象
    a=np.arrat([1,2,3])
    s1=pd.Series(a)
    s2=pd.Series(s)
    這樣生成的新對(duì)象并不是副本而是原對(duì)象的引用

  • 篩選元素
    因?yàn)閜andas是以Numpy為基礎(chǔ)的讯蒲,所以可以直接用Numpy中的一些辦法
    s[s>5]

  • 運(yùn)算
    運(yùn)算的原理也與numpy相通
    np.log(s)

  • Series對(duì)象的組成元素
    unique()函數(shù)用來取出對(duì)象中不重復(fù)出現(xiàn)的元素
    vlaues_count()函數(shù)用來統(tǒng)計(jì)每個(gè)值的個(gè)數(shù)
    isin([值])返回是否在其中来庭,布爾型

  • NaN處理
    s[s.isnull()]輸出空值
    s[s.notnull()]輸出非空值

  • Series與字典
    mydict={'red':1,'green':2,'yellow':3}
    s5=pd.Series(mydict)
    字典的索引自動(dòng)變?yōu)镾eries的索引

  • Series對(duì)象之間的運(yùn)算
    s1+s2只會(huì)進(jìn)行索引值相同部分的相加生成新的Series對(duì)象,兩者獨(dú)有的索引值會(huì)也會(huì)存在陕壹,運(yùn)算后對(duì)應(yīng)的值為NaN

DataFrame

DataFrame對(duì)象就是一張強(qiáng)行帶上索引列的二維表,出去index的那一列其余的列名保存在column屬性中。

定義對(duì)象

  • 傳入字典
    dict={'color':['red','green','yellow'],'name':['ball','pen','pencil'],'price':[1,1,2,1,2]}
    frame=pd.DataFrame(dict)
    這樣index列會(huì)默認(rèn)設(shè)置為0,1,2,3.凡伊。。
    frame=pd.DataFrame(dict,index=['','',''])等
  • DataFrame(數(shù)據(jù)窒舟,index,column)
    frame=pd.DataFram(np.random.random(16).reshape((4,4)),index=[],columns=[])

選取元素

按列選认得Α:frame['color']與fram.color的效果是一樣的,返回的是Series對(duì)象
按行選然莶颉:frame.ix[行的索引值] frame.ix[2]
也可以:
frame[0:1]選取第0行
frame[1:3]選取第1银还,2行
最后,如果獲取存儲(chǔ)在DataFrame中的一個(gè)元素洁墙,需要依次指定元素所在的列的名稱蛹疯、行的索引值或標(biāo)簽 frame['name'][3]

賦值

按照取值的邏輯自然就可以賦值、增加的新的行和列
fram['new']=[...] 插入某列
fram['new'][0]=
fram['new']=Series
疑問热监?DataFrame插入某行怎么辦捺弦?

元素所屬關(guān)系

frame[frame.isin([1.0,'pen'])]

轉(zhuǎn)置

DataFrame的轉(zhuǎn)置很簡(jiǎn)單直接 Fram.T即可實(shí)現(xiàn)

刪除一列

del fram['new']

篩選

frame[frame<12] 符合條件的會(huì)被留下且位置不變。不符合條件的變成NaN

嵌套字典生成DataFrame

mydict={'red':['l1':1,'l2':2,'l3':3],'yellow':['l1':4孝扛,'l2':5,'l3':6],'green':['l1':7,'l2':8,'l3':9]}
第一層嵌套是列列吼,里面重復(fù)嵌套行。

刪除某行某列

frame.drop([index1,index2...]) 刪除行
frame.drip([column1,column2....],axis=1) 刪除列

數(shù)據(jù)結(jié)構(gòu)之間的運(yùn)算

就是Series和DataFrame之間的運(yùn)算
除了用運(yùn)算符苦始,以下函數(shù)也是可以的

  • add()
  • sub()
  • div()
  • mul()
    比如 frame1+frame2與 frame1.add(frame2)的效果是一樣的
    Series和DataFrame之間的運(yùn)算就有些復(fù)雜了寞钥,簡(jiǎn)而言之,兩者運(yùn)算靠共同的索引陌选,不同的索引會(huì)造成打量的NaN

可以看到Frame中的列索引與Ser想同的部分都做了相減理郑。如果索引值沒有想同的就會(huì)
產(chǎn)生NaN

函數(shù)與映射

按行或列執(zhí)行操作的函數(shù)

f=lambda x: x.max()-x.min()
frame.apply(f)按列執(zhí)行
frame.apply(f,axis=1) 按行執(zhí)行

統(tǒng)計(jì)函數(shù)

frame.sum() fram.mean() 等依然可以按照列進(jìn)行相關(guān)統(tǒng)計(jì)量的計(jì)算
frame.describe() 將會(huì)列出所有描述性統(tǒng)計(jì)量

排序

sort_index() 可以對(duì)Series和DataFrame的索引進(jìn)行排序
sort_index(axis=1) 可以對(duì)DataFrame的橫軸進(jìn)行排序
值排序
ser.order() 默認(rèn)升序 改變:ser.order(ascending=False)
對(duì)frame 需要制定按照哪一列:
frame.sort_index(by='price')

NaN的處理

過濾NaN

  • ser.dropna() 但fram.dropna()會(huì)刪除NaN存在的整個(gè)行和列
    fram.dropna(how='all')刪除行或列整個(gè)都是NaN的情況
  • 也可以索引過濾: ser[ser.notnull()]

為NaN填充其他值

  • fram.fillna(值)
  • 不同的列填充不同:fram.fillna({'price':1,'color':null,'name':null})

最后說一下蹄溉,Series是可以層級(jí)的形式出現(xiàn)的。Series和DataFrame之間可以用stack(), unstack()函數(shù)互相轉(zhuǎn)換

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末香浩,一起剝皮案震驚了整個(gè)濱河市类缤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邻吭,老刑警劉巖餐弱,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異囱晴,居然都是意外死亡膏蚓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門畸写,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驮瞧,“玉大人,你說我怎么就攤上這事枯芬÷郾剩” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵千所,是天一觀的道長(zhǎng)狂魔。 經(jīng)常有香客問我,道長(zhǎng)淫痰,這世上最難降的妖魔是什么最楷? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮待错,結(jié)果婚禮上籽孙,老公的妹妹穿的比我還像新娘。我一直安慰自己火俄,他們只是感情好犯建,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓜客,像睡著了一般胎挎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忆家,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天犹菇,我揣著相機(jī)與錄音,去河邊找鬼芽卿。 笑死揭芍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卸例。 我是一名探鬼主播称杨,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肌毅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了姑原?” 一聲冷哼從身側(cè)響起悬而,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锭汛,沒想到半個(gè)月后笨奠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唤殴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年般婆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朵逝。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔚袍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出配名,到底是詐尸還是另有隱情啤咽,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布渠脉,位于F島的核電站宇整,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏连舍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一涩哟、第九天 我趴在偏房一處隱蔽的房頂上張望索赏。 院中可真熱鬧,春花似錦贴彼、人聲如沸潜腻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽融涣。三九已至,卻和暖如春精钮,著一層夾襖步出監(jiān)牢的瞬間威鹿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工轨香, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忽你,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓臂容,卻偏偏與公主長(zhǎng)得像科雳,于是被迫代替她去往敵國和親根蟹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容