0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹pandas的兩種數(shù)據(jù)結(jié)構(gòu)

lviY_AI_shequ ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-25 17:50 ? 次閱讀

對(duì)于Python而言,坊間早有這種說(shuō)法:在有了 pandas之后,Python才算有了數(shù)據(jù)分析的能力。在此之前,要想用Python來(lái)做數(shù)據(jù)分析,可能就沒(méi)那么友好了,可見(jiàn)pandas在學(xué)習(xí)數(shù)據(jù)分析時(shí)候的重要程度。對(duì)于 pandas來(lái)說(shuō),很多功能的實(shí)現(xiàn)也是要基于科學(xué)計(jì)算庫(kù) numpy的,所以 numpy+ pandas的組合在Python數(shù)據(jù)分析中就顯得尤為關(guān)鍵。

從本篇開(kāi)始,小編就給大家詳細(xì)講解 pandas的基本用法和應(yīng)用案例,熟悉R的朋友們也可以將其與R的數(shù)據(jù)分析功能進(jìn)行對(duì)比,定能有所收獲。本篇先對(duì) pandas的數(shù)據(jù)結(jié)構(gòu)進(jìn)行介紹,跟R大不相同的是,Python并沒(méi)有太多不同的數(shù)據(jù)結(jié)構(gòu)和對(duì)象, pandas中主要包括 Series和 DataFrame兩種數(shù)據(jù)結(jié)構(gòu)。

Series

Series有點(diǎn)類(lèi)似于 numpy中的一維數(shù)組對(duì)象,一般由一組數(shù)據(jù)和數(shù)據(jù)相關(guān)的標(biāo)簽或者索引構(gòu)成,由一組數(shù)構(gòu)成最簡(jiǎn)單的 Series如下:

from numpy import *

from pandas import *

創(chuàng)建 Series:

obj = Series([-1,3,-4,6])

print(obj)

0 -1

1 3

2 -4

3 6

dtype: int64

可以看到的是,由一組數(shù)創(chuàng)建的 Series對(duì)象索引在左邊,值在右邊。我們也可以通過(guò)索引和值標(biāo)簽分別訪問(wèn)相應(yīng)的對(duì)象:

#Series對(duì)象值

obj.values

array([-1, 3, -4, 6], dtype=int64)

#Series對(duì)象索引

obj.index

RangeIndex(start=0, stop=4, step=1)

當(dāng)然,我們可以在創(chuàng)建Series對(duì)象的時(shí)候就對(duì)索引進(jìn)行標(biāo)記或者命名:

#對(duì)Series索引進(jìn)行命名或者標(biāo)記

obj2 = Series([-1,3,-4,6],index = ['a','b','c','d'])

print(obj2)

a -1

b 3

c -4

d 6

dtype: int64

#查看索引

obj2.index

Index(['a', 'b', 'c', 'd'], dtype='object')

根據(jù) Series索引訪問(wèn)對(duì)象值:

obj2['a']

-1

obj2[['a','b','c']]

a -1

b 3

c -4

dtype: int64

也可以對(duì)Series對(duì)象進(jìn)行數(shù)組運(yùn)算:

obj2[obj2 > 0]

b 3

d 6

dtype: int64

obj2*2

a -2

b 6

c -8

d 12

dtype: int64

np.exp(obj2)

a 0.367879

b 20.085537

c 0.018316

d 403.428793

dtype: float64

除了直接以數(shù)組形式創(chuàng)建 Series對(duì)象之外,通過(guò)字典來(lái)生成 Series也是較為普遍的做法:

nba = {'Kobe Bryant':30.3,'Allen Iverson':29.4,'Tracy McGrady':30.1,'Vince Carter':25.6}

obj3 = Series(nba)

print(obj3)

AllenIverson 29.4

KobeBryant 30.3

TracyMcGrady 30.1

VinceCarter 25.6

dtype: float64

創(chuàng)建完之后可以對(duì) Series對(duì)象和索引進(jìn)行命名:

obj3.name = 'nbastats'

obj3.index.name = 'player'

print(obj3)

player

AllenIverson 29.4

KobeBryant 30.3

TracyMcGrady 30.1

VinceCarter 25.6

Name: nbastats, dtype: float64

另外, Series索引可以隨時(shí)進(jìn)行更改:

obj3.index = ['A.Iverson','K.Bryant','T.McGrady','V.Carter']

print(obj3)

A.Iverson 29.4

K.Bryant 30.3

T.McGrady 30.1

V.Carter 25.6

Name: nbastats, dtype: float64

除了上述創(chuàng)建 Series對(duì)象的方法以外,從 DataFrame中單獨(dú)拿出一行也可以用來(lái)創(chuàng)建 Series。關(guān)于 Series數(shù)據(jù)結(jié)構(gòu)的基本內(nèi)容就介紹到這里,下面看 DataFrame。

DataFrame

說(shuō)到 DataFrame,可能大家更熟悉的是R語(yǔ)言中的 data.frame,Python中的 DataFrame跟它也較為類(lèi)似。在Python中, DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列的數(shù)據(jù)類(lèi)型可以不一樣,與R中的數(shù)據(jù)框相比,Python中的 DataFrame行列操作較為平衡。 構(gòu)建DataFrame方法很多,最常用的是直接傳入一個(gè)由等長(zhǎng)列表或NumPy數(shù)組組成的字典:

data = {'city':['LAL','HOU','PHI','TOR'],

'year':[1996,1997,1996,1997],

'score':[30.3,30.1,29.4,25.6]}

frame = DataFrame(data)

frame

city score year

0 LAL 30.3 1996

1 HOU 30.1 1997

2 PHI 29.4 1996

3 TOR 25.6 1997

可以看到,字典在轉(zhuǎn)化為數(shù)據(jù)框的過(guò)程中,鍵是作為列名而存在的。

#按指定列進(jìn)行排列

DataFrame(data,columns=['year','city','score'])

year city score

0 1996 LAL 30.3

1 1997 HOU 30.1

2 1996 PHI 29.4

3 1997 TOR 25.6

根據(jù)字典傳入時(shí),若是指定列找不到數(shù)據(jù)則會(huì)自動(dòng)填補(bǔ)為缺失:

#若傳入的列找不到數(shù)據(jù)則會(huì)產(chǎn)生NA

frame2 = DataFrame(data,columns=['year','city','score','assist'],

index=[1,2,3,4])

print(frame2)

year city score assist

11996 LAL 30.3 NaN

21997 HOU 30.1 NaN

31996 PHI 29.4 NaN

41997 TOR 25.6 NaN

如前述,我們可以通過(guò) data.frame來(lái)獲取一個(gè) Series對(duì)象:

frame2['city']

1 LAL

2 HOU

3 PHI

4 TOR

Name: city, dtype: object

frame2.score

1 30.3

2 30.1

3 29.4

4 25.6

Name: score, dtype: float64

也可以通過(guò) loc方法訪問(wèn) DataFrame的行:

frame2.loc[3]

year 1996

city PHI

score 29.4

assist NaN

Name: 3, dtype: object

對(duì)缺失的變量進(jìn)行重新賦值:

frame2['assist']=5.6

print(frame2)

year city score assist

11996 LAL 30.3 5.6

21997 HOU 30.1 5.6

31996 PHI 29.4 5.6

41997 TOR 25.6 5.6

按索引傳入時(shí),沒(méi)有被指定的記錄產(chǎn)生缺失:

val = Series([4.5,3.9],index=[1,4])

frame2['assist']=val

print(frame2)

year city score assist

11996 LAL 30.3 4.5

21997 HOU 30.1 NaN

31996 PHI 29.4 NaN

41997 TOR 25.6 3.9

對(duì)于嵌套字典轉(zhuǎn)化為 DataFrame,一般外層字典的鍵作為列,內(nèi)層字典的鍵作為行索引:

nba = {'kobe':{2005:35.6,2006:32.1},'McGrady':{2005:26.7,2006:24.3}}

frame3 = DataFrame(nba)

print(frame3)

McGrady kobe

2005 26.735.6

2006 24.332.1

關(guān)于pandas的兩種基本數(shù)據(jù)結(jié)構(gòu)Series和DataFrame,小編就暫且介紹到這里了,關(guān)于如何在實(shí)際的數(shù)據(jù)分析過(guò)程熟練使用這兩種數(shù)據(jù)結(jié)構(gòu)的基本操作,小編在后續(xù)的推文中會(huì)進(jìn)一步的講解。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1393

    瀏覽量

    33909
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84076

原文標(biāo)題:利用pandas進(jìn)行數(shù)據(jù)分析(一):Series和DataFrame數(shù)據(jù)結(jié)構(gòu)

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python的列表和元組兩種數(shù)據(jù)結(jié)構(gòu)區(qū)別差異分析

    前言 相信大家對(duì)于Python的列表和元組兩種數(shù)據(jù)結(jié)構(gòu)并不陌生了,如果我問(wèn)大家這兩種數(shù)據(jù)結(jié)構(gòu)有什么區(qū)別呢?列表和元組都是數(shù)組,列表是動(dòng)態(tài)的數(shù)組可以修改,元組是靜態(tài)的數(shù)組不可修改。除此之外,大家還能
    發(fā)表于 11-20 15:31 ?2042次閱讀
    Python的列表和元組<b class='flag-5'>兩種數(shù)據(jù)結(jié)構(gòu)</b>區(qū)別差異分析

    盤(pán)點(diǎn)幾種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)

    這里主要總結(jié)下在工作中常碰到的幾種數(shù)據(jù)結(jié)構(gòu):Array,ArrayList,List,LinkedList,Queue,Stack,Dictionary。
    的頭像 發(fā)表于 05-13 15:58 ?5931次閱讀
    盤(pán)點(diǎn)幾種常見(jiàn)的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

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

    1.數(shù)據(jù)結(jié)構(gòu)的概念 所謂數(shù)據(jù)結(jié)構(gòu)是指由某一數(shù)據(jù)對(duì)象及該對(duì)象中所有數(shù)據(jù)成員之間的關(guān)系組成的集合。成員之間的關(guān)系有很多種,最常見(jiàn)的是前后件關(guān)系。 2.
    發(fā)表于 03-04 14:13

    請(qǐng)問(wèn)大神這種數(shù)據(jù)結(jié)構(gòu)一般如何解析額?

    請(qǐng)問(wèn)大神,這種數(shù)據(jù)結(jié)構(gòu)一般如何解析額。。 不太懂。。
    發(fā)表于 06-10 09:27

    labview利用tcp協(xié)議同時(shí)傳輸兩種數(shù)據(jù)

    如何通過(guò)tcp傳輸兩種數(shù)據(jù)
    發(fā)表于 09-02 11:07

    數(shù)據(jù)結(jié)構(gòu)教學(xué)軟件

    數(shù)據(jù)結(jié)構(gòu)教學(xué)軟件:有C語(yǔ)言,pascal語(yǔ)言兩種。
    發(fā)表于 10-24 12:15 ?51次下載
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>教學(xué)軟件

    數(shù)據(jù)結(jié)構(gòu)是什么_數(shù)據(jù)結(jié)構(gòu)有什么用

    數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。通常情況下,精心選擇的數(shù)據(jù)結(jié)構(gòu)可以帶來(lái)更高
    發(fā)表于 11-17 14:45 ?1.6w次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>是什么_<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>有什么用

    java中幾種常用數(shù)據(jù)結(jié)構(gòu)

    對(duì)于數(shù)組和鏈表這兩種數(shù)據(jù)結(jié)構(gòu),如果要查找它們存儲(chǔ)的某個(gè)特定元素卻不知道它的位置,就需要從頭開(kāi)始訪問(wèn)元素直到找到匹配的為止;如果數(shù)據(jù)結(jié)構(gòu)中包含很多的元素,就會(huì)浪費(fèi)時(shí)間。這時(shí)最好使用散列表來(lái)存儲(chǔ)要查找的數(shù)據(jù)。
    的頭像 發(fā)表于 02-08 16:12 ?1.5w次閱讀
    java中幾種常用<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的應(yīng)用詳細(xì)資料概述免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)的應(yīng)用詳細(xì)資料概述免費(fèi)下載包括了:數(shù)據(jù)結(jié)構(gòu)在串口通信當(dāng)中的應(yīng)用,數(shù)據(jù)結(jié)構(gòu)在按鍵監(jiān)測(cè)
    發(fā)表于 09-11 17:15 ?13次下載
    為什么要學(xué)習(xí)<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>?<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>的應(yīng)用詳細(xì)資料概述免費(fèi)下載

    什么是數(shù)據(jù)結(jié)構(gòu)?為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的應(yīng)用實(shí)例分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是什么是數(shù)據(jù)結(jié)構(gòu)?為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)的應(yīng)用實(shí)例分析包括了:數(shù)據(jù)結(jié)構(gòu)在串口通信當(dāng)中的應(yīng)用,
    發(fā)表于 09-26 15:45 ?14次下載
    什么是<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>?為什么要學(xué)習(xí)<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>?<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>的應(yīng)用實(shí)例分析

    數(shù)據(jù)結(jié)構(gòu)解決滑動(dòng)窗口問(wèn)題

    前文用 [單調(diào)棧解決三道算法問(wèn)題]介紹了單調(diào)棧這種特殊數(shù)據(jù)結(jié)構(gòu),本文寫(xiě)一個(gè)類(lèi)似的數(shù)據(jù)結(jié)構(gòu)「單調(diào)隊(duì)列」。 也許這種數(shù)據(jù)結(jié)構(gòu)的名字你沒(méi)聽(tīng)過(guò),其實(shí)沒(méi)啥難的,就是一個(gè)「隊(duì)列」,只是使用了一點(diǎn)
    的頭像 發(fā)表于 04-19 10:50 ?563次閱讀
    <b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>解決滑動(dòng)窗口問(wèn)題

    Linux內(nèi)核中使用的數(shù)據(jù)結(jié)構(gòu)

    Linux內(nèi)核代碼中廣泛使用了數(shù)據(jù)結(jié)構(gòu)和算法,其中最常用的個(gè)是鏈表和紅黑樹(shù)。 鏈表 Linux內(nèi)核代碼大量使用了鏈表這種數(shù)據(jù)結(jié)構(gòu)。鏈表是在解決數(shù)組不能動(dòng)態(tài)擴(kuò)展這個(gè)缺陷而產(chǎn)生的一種數(shù)據(jù)結(jié)構(gòu)
    的頭像 發(fā)表于 11-09 14:24 ?383次閱讀
    Linux內(nèi)核中使用的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    redis的五種數(shù)據(jù)類(lèi)型底層數(shù)據(jù)結(jié)構(gòu)

    Redis是一種內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),支持多種數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)不僅可以滿(mǎn)足常見(jiàn)的存儲(chǔ)需求,還能夠通過(guò)其底層數(shù)據(jù)結(jié)構(gòu)提供高效的操作和查詢(xún)。以下是Redis中常用的五
    的頭像 發(fā)表于 11-16 11:18 ?605次閱讀

    redis數(shù)據(jù)結(jié)構(gòu)的底層實(shí)現(xiàn)

    Redis是一種內(nèi)存鍵值數(shù)據(jù)庫(kù),常用于緩存、消息隊(duì)列、實(shí)時(shí)數(shù)據(jù)分析等場(chǎng)景。它的高性能得益于其精心設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)和底層實(shí)現(xiàn)。本文將詳細(xì)介紹Redis常用的
    的頭像 發(fā)表于 12-05 10:14 ?517次閱讀

    矢量與柵格數(shù)據(jù)結(jié)構(gòu)各有什么特征

    矢量數(shù)據(jù)結(jié)構(gòu)和柵格數(shù)據(jù)結(jié)構(gòu)是地理信息系統(tǒng)(GIS)中最常用的兩種數(shù)據(jù)結(jié)構(gòu)。它們?cè)诖鎯?chǔ)和表示地理要素上有著不同的方法和特征。在接下來(lái)的文章中,我們將詳細(xì)介紹
    的頭像 發(fā)表于 02-25 15:06 ?1656次閱讀