Python學(xué)習(xí)筆記(5):Pandas數(shù)據(jù)結(jié)構(gòu)介紹

目錄

  • 一夜畴、Pandas的數(shù)據(jù)結(jié)構(gòu)介紹
    • 1菱涤、Series
    • 2此再、DataFrame
      • (1)Dataframe創(chuàng)建
      • (2)讀取DataFrame的索引名和數(shù)值
      • (3)讀取DataFrame特定索引的值
      • (4)為DataFrame對(duì)象賦值
      • (5)列的刪除
    • 3瘩绒、index對(duì)象

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

1堕战、Series

Series類型類似于字典類型,每組數(shù)據(jù)都有一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成缀旁。
來看看最簡(jiǎn)單的Series:

from pandas import Series, DataFrame
import pandas as pd
obj = Series([4, 7, -5, 3])
obj
輸出:0    4
1    7
2   -5
3    3
dtype: int64

可以看到數(shù)值左邊都有一列索引。一個(gè)Series對(duì)象有一列index值和一列values值。

obj.values
輸出:array([ 4,  7, -5,  3])

obj.index
輸出:RangeIndex(start=0, stop=4, step=1)

索引值也是可以自定義的懈息。

obj2 = Series([4, 7, -5, 3], index = ['d', 'b', 'a', 'c'])
obj2
輸出:d    4
b    7
a   -5
c    3
dtype: int64

obj2['a']
輸出:-5

obj2[['c', 'a', 'd']]
輸出:c    3
a   -5
d    4
dtype: int64

對(duì)Series對(duì)象進(jìn)行運(yùn)算速种,也會(huì)保留其索引值亿絮。

obj2[obj2 > 0]
輸出:d    4
b    7
c    3
dtype: int64

obj2 * 2
輸出:d     8
b    14
a   -10
c     6
dtype: int64

import numpy as np
np.exp(obj2)
輸出:d      54.598150
b    1096.633158
a       0.006738
c      20.085537
dtype: float64

Series與字典五慈。Series對(duì)象可以像字典對(duì)象一樣,可以用在許多原本需要字典參數(shù)的函數(shù)中主穗。也可以通過字典類型來創(chuàng)建Series類型泻拦。

'b' in obj2
輸出:'b' in obj2

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj3 = Series(sdata)
obj3
輸出:Ohio      35000
Texas     71000
Oregon    16000
Utah       5000
dtype: int64

如果只傳入一個(gè)字典,則結(jié)果Series的索引就是原字典的鍵忽媒。

states = ['California', 'Ohio', 'Oregon', 'Texas']
obj4 = Series(sdata, index = states)
obj4
輸出:California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
dtype: float64

Series對(duì)象有name屬性及index.name屬性

obj4.name = 'population'
obj4.index.name = 'state'
obj4
輸出:state
California        NaN
Ohio          35000.0
Oregon        16000.0
Texas         71000.0
Name: population, dtype: float64

2聪轿、DataFrame

DataFrame類型可以簡(jiǎn)單理解為有行索引及列索引的數(shù)據(jù)類型,也可以理解為帶索引的Series猾浦。從創(chuàng)建開始說起。

(1)Dataframe創(chuàng)建

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
       'year': [2000, 2001, 2002, 2001, 2002],
       'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame = DataFrame(data)
frame
輸出: state   year    pop
0   Ohio    2000    1.5
1   Ohio    2001    1.7
2   Ohio    2002    3.6
3   Nevada  2001    2.4
4   Nevada  2002    2.9

可以看到在創(chuàng)建DataFrame時(shí)灯抛,自動(dòng)為數(shù)據(jù)增加了行索引金赦,0~4。
可以在創(chuàng)建DataFrame時(shí)規(guī)定列的順序对嚼。

DataFrame(data, columns = ['year', 'state', 'pop'])
輸出: year    state   pop
0   2000    Ohio    1.5
1   2001    Ohio    1.7
2   2002    Ohio    3.6
3   2001    Nevada  2.4
4   2002    Nevada  2.9

也可以自定義行索引的值夹抗。

frame2 = DataFrame(data, columns = ['year', 'state', 'pop', 'debt'], index = ['one', 'two', 'three', 'four', 'five'])
frame2
輸出:
year    state   pop debt
one 2000    Ohio    1.5 NaN
two 2001    Ohio    1.7 NaN
three   2002    Ohio    3.6 NaN
four    2001    Nevada  2.4 NaN
five    2002    Nevada  2.9 NaN

另一種創(chuàng)建方式是通過嵌套字典。

pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = DataFrame(pop)
frame3
輸出: Nevada  Ohio
2000    NaN 1.5
2001    2.4 1.7
2002    2.9 3.6

(2)讀取DataFrame的索引名和數(shù)值

可以通過DataFrame.columns讀取DataFrame的列索引名纵竖。

frame2.columns
輸出:Index(['year', 'state', 'pop', 'debt'], dtype='object')

可以通過DataFrame.index讀取DataFrame的行索引名漠烧。

frame2.index
輸出:Index(['one', 'two', 'three', 'four', 'five'], dtype='object')

可以通過DataFrame.values方法讀取DataFrame除索引外的純數(shù)據(jù)值。

frame2.values
輸出:array([[2000, 'Ohio', 1.5, nan],
       [2001, 'Ohio', 1.7, -1.2],
       [2002, 'Ohio', 3.6, nan],
       [2001, 'Nevada', 2.4, -1.5],
       [2002, 'Nevada', 2.9, -1.7]], dtype=object)

(3)讀取DataFrame特定索引的值

可以通過['索引名']或.索引名的方式讀取某列的數(shù)據(jù)靡砌。

frame2['state']
輸出:one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object

frame2.year
輸出:one      2000
two      2001
three    2002
four     2001
five     2002
Name: year, dtype: int64

frame2.year['one']
輸出:2000

(4)為DataFrame對(duì)象賦值

可以用標(biāo)量數(shù)值直接為某列數(shù)據(jù)進(jìn)行賦值已脓,或者用Series類型數(shù)據(jù)為DataFrame某幾列賦值。

frame2['debt'] = 16.5
frame2
輸出: year    state   pop debt
one 2000    Ohio    1.5 16.5
two 2001    Ohio    1.7 16.5
three   2002    Ohio    3.6 16.5
four    2001    Nevada  2.4 16.5
five    2002    Nevada  2.9 16.5

frame2['debt'] = np.arange(5.)
frame2
輸出: year    state   pop debt
one 2000    Ohio    1.5 0.0
two 2001    Ohio    1.7 1.0
three   2002    Ohio    3.6 2.0
four    2001    Nevada  2.4 3.0
five    2002    Nevada  2.9 4.0

val = Series([-1.2, -1.5, -1.7], index = ['two', 'four', 'five'])
frame2['debt'] = val
frame2
輸出: year    state   pop debt
one 2000    Ohio    1.5 NaN
two 2001    Ohio    1.7 -1.2
three   2002    Ohio    3.6 NaN
four    2001    Nevada  2.4 -1.5
five    2002    Nevada  2.9 -1.7

(5)列的刪除

frame2['eastern'] = (frame2.state == 'Ohio')
frame2
輸出: year    state   pop debt    eastern
one 2000    Ohio    1.5 NaN True
two 2001    Ohio    1.7 -1.2    True
three   2002    Ohio    3.6 NaN True
four    2001    Nevada  2.4 -1.5    False
five    2002    Nevada  2.9 -1.7    False

del frame2['eastern']
frame2.columns
輸出:Index(['year', 'state', 'pop', 'debt'], dtype='object')

3通殃、index對(duì)象

首先來看看index對(duì)象是什么度液。

obj = Series(range(3), index = ['a', 'b', 'c'])
index = obj.index
index
輸出:Index(['a', 'b', 'c'], dtype='object')

可見,對(duì)Series和DataFrame對(duì)象使用index方法,返回的就是一個(gè)index對(duì)象堕担。
index是不可以被手動(dòng)修改的已慢。不可修改性非常重要,這樣才能使index在多個(gè)數(shù)據(jù)結(jié)構(gòu)之間安全共享霹购。
index常用的方法有很多佑惠,可以參照如下表格。

index的方法和屬性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末齐疙,一起剝皮案震驚了整個(gè)濱河市膜楷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剂碴,老刑警劉巖把将,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異忆矛,居然都是意外死亡察蹲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門催训,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洽议,“玉大人,你說我怎么就攤上這事漫拭⊙切郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵采驻,是天一觀的道長(zhǎng)审胚。 經(jīng)常有香客問我,道長(zhǎng)礼旅,這世上最難降的妖魔是什么膳叨? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮痘系,結(jié)果婚禮上菲嘴,老公的妹妹穿的比我還像新娘。我一直安慰自己汰翠,他們只是感情好龄坪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著复唤,像睡著了一般健田。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佛纫,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天抄课,我揣著相機(jī)與錄音唱星,去河邊找鬼。 笑死跟磨,一個(gè)胖子當(dāng)著我的面吹牛间聊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抵拘,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哎榴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了僵蛛?” 一聲冷哼從身側(cè)響起尚蝌,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎充尉,沒想到半個(gè)月后飘言,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驼侠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年姿鸿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倒源。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苛预,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笋熬,到底是詐尸還是另有隱情热某,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布胳螟,位于F島的核電站昔馋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏糖耸。R本人自食惡果不足惜绒极,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔬捷。 院中可真熱鬧,春花似錦榔袋、人聲如沸周拐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妥粟。三九已至,卻和暖如春吏够,著一層夾襖步出監(jiān)牢的瞬間勾给,已是汗流浹背滩报。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留播急,地道東北人脓钾。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像桩警,于是被迫代替她去往敵國(guó)和親可训。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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