在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

介紹pandas的兩種數據結構

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

對于Python而言,坊間早有這種說法:在有了 pandas之后,Python才算有了數據分析的能力。在此之前,要想用Python來做數據分析,可能就沒那么友好了,可見pandas在學習數據分析時候的重要程度。對于 pandas來說,很多功能的實現也是要基于科學計算庫 numpy的,所以 numpy+ pandas的組合在Python數據分析中就顯得尤為關鍵。

從本篇開始,小編就給大家詳細講解 pandas的基本用法和應用案例,熟悉R的朋友們也可以將其與R的數據分析功能進行對比,定能有所收獲。本篇先對 pandas的數據結構進行介紹,跟R大不相同的是,Python并沒有太多不同的數據結構和對象, pandas中主要包括 Series和 DataFrame兩種數據結構。

Series

Series有點類似于 numpy中的一維數組對象,一般由一組數據和數據相關的標簽或者索引構成,由一組數構成最簡單的 Series如下:

from numpy import *

from pandas import *

創建 Series:

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

print(obj)

0 -1

1 3

2 -4

3 6

dtype: int64

可以看到的是,由一組數創建的 Series對象索引在左邊,值在右邊。我們也可以通過索引和值標簽分別訪問相應的對象:

#Series對象值

obj.values

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

#Series對象索引

obj.index

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

當然,我們可以在創建Series對象的時候就對索引進行標記或者命名:

#對Series索引進行命名或者標記

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')

根據 Series索引訪問對象值:

obj2['a']

-1

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

a -1

b 3

c -4

dtype: int64

也可以對Series對象進行數組運算:

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

除了直接以數組形式創建 Series對象之外,通過字典來生成 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

創建完之后可以對 Series對象和索引進行命名:

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索引可以隨時進行更改:

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

除了上述創建 Series對象的方法以外,從 DataFrame中單獨拿出一行也可以用來創建 Series。關于 Series數據結構的基本內容就介紹到這里,下面看 DataFrame。

DataFrame

說到 DataFrame,可能大家更熟悉的是R語言中的 data.frame,Python中的 DataFrame跟它也較為類似。在Python中, DataFrame是一個表格型的數據結構,它含有一組有序的列,每列的數據類型可以不一樣,與R中的數據框相比,Python中的 DataFrame行列操作較為平衡。 構建DataFrame方法很多,最常用的是直接傳入一個由等長列表或NumPy數組組成的字典:

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

可以看到,字典在轉化為數據框的過程中,鍵是作為列名而存在的。

#按指定列進行排列

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

根據字典傳入時,若是指定列找不到數據則會自動填補為缺失:

#若傳入的列找不到數據則會產生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

如前述,我們可以通過 data.frame來獲取一個 Series對象:

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

也可以通過 loc方法訪問 DataFrame的行:

frame2.loc[3]

year 1996

city PHI

score 29.4

assist NaN

Name: 3, dtype: object

對缺失的變量進行重新賦值:

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

按索引傳入時,沒有被指定的記錄產生缺失:

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

對于嵌套字典轉化為 DataFrame,一般外層字典的鍵作為列,內層字典的鍵作為行索引:

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

關于pandas的兩種基本數據結構Series和DataFrame,小編就暫且介紹到這里了,關于如何在實際的數據分析過程熟練使用這兩種數據結構的基本操作,小編在后續的推文中會進一步的講解。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據分析
    +關注

    關注

    2

    文章

    1461

    瀏覽量

    34184
  • python
    +關注

    關注

    56

    文章

    4810

    瀏覽量

    85074

原文標題:利用pandas進行數據分析(一):Series和DataFrame數據結構

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Python的列表和元組兩種數據結構區別差異分析

    前言 相信大家對于Python的列表和元組兩種數據結構并不陌生了,如果我問大家這兩種數據結構有什么區別呢?列表和元組都是數組,列表是動態的數組可以修改,元組是靜態的數組不可修改。除此之外,大家還能
    發表于 11-20 15:31 ?2203次閱讀
    Python的列表和元組<b class='flag-5'>兩種數據結構</b>區別差異分析

    盤點幾種常見的數據結構

    這里主要總結下在工作中常碰到的幾種數據結構:Array,ArrayList,List,LinkedList,Queue,Stack,Dictionary。
    的頭像 發表于 05-13 15:58 ?6145次閱讀
    盤點幾種常見的<b class='flag-5'>數據結構</b>

    數據結構

    1.數據結構的概念 所謂數據結構是指由某一數據對象及該對象中所有數據成員之間的關系組成的集合。成員之間的關系有很多種,最常見的是前后件關系。 2.
    發表于 03-04 14:13

    請問大神這種數據結構一般如何解析額?

    請問大神,這種數據結構一般如何解析額。。 不太懂。。
    發表于 06-10 09:27

    labview利用tcp協議同時傳輸兩種數據

    如何通過tcp傳輸兩種數據
    發表于 09-02 11:07

    數據結構教學軟件

    數據結構教學軟件:有C語言,pascal語言兩種
    發表于 10-24 12:15 ?51次下載
    <b class='flag-5'>數據結構</b>教學軟件

    數據結構是什么_數據結構有什么用

    數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高
    發表于 11-17 14:45 ?1.6w次閱讀
    <b class='flag-5'>數據結構</b>是什么_<b class='flag-5'>數據結構</b>有什么用

    java中幾種常用數據結構

    對于數組和鏈表這兩種數據結構,如果要查找它們存儲的某個特定元素卻不知道它的位置,就需要從頭開始訪問元素直到找到匹配的為止;如果數據結構中包含很多的元素,就會浪費時間。這時最好使用散列表來存儲要查找的數據
    的頭像 發表于 02-08 16:12 ?1.5w次閱讀
    java中幾種常用<b class='flag-5'>數據結構</b>

    為什么要學習數據結構數據結構的應用詳細資料概述免費下載

    本文檔的主要內容詳細介紹的是為什么要學習數據結構數據結構的應用詳細資料概述免費下載包括了:數據結構在串口通信當中的應用,數據結構在按鍵監測
    發表于 09-11 17:15 ?13次下載
    為什么要學習<b class='flag-5'>數據結構</b>?<b class='flag-5'>數據結構</b>的應用詳細資料概述免費下載

    什么是數據結構?為什么要學習數據結構數據結構的應用實例分析

    本文檔的主要內容詳細介紹的是什么是數據結構?為什么要學習數據結構數據結構的應用實例分析包括了:數據結構在串口通信當中的應用,
    發表于 09-26 15:45 ?14次下載
    什么是<b class='flag-5'>數據結構</b>?為什么要學習<b class='flag-5'>數據結構</b>?<b class='flag-5'>數據結構</b>的應用實例分析

    數據結構解決滑動窗口問題

    前文用 [單調棧解決三道算法問題]介紹了單調棧這種特殊數據結構,本文寫一個類似的數據結構「單調隊列」。 也許這種數據結構的名字你沒聽過,其實沒啥難的,就是一個「隊列」,只是使用了一點
    的頭像 發表于 04-19 10:50 ?709次閱讀
    <b class='flag-5'>數據結構</b>解決滑動窗口問題

    Linux內核中使用的數據結構

    Linux內核代碼中廣泛使用了數據結構和算法,其中最常用的個是鏈表和紅黑樹。 鏈表 Linux內核代碼大量使用了鏈表這種數據結構。鏈表是在解決數組不能動態擴展這個缺陷而產生的一種數據結構
    的頭像 發表于 11-09 14:24 ?558次閱讀
    Linux內核中使用的<b class='flag-5'>數據結構</b>

    redis的五種數據類型底層數據結構

    Redis是一種內存數據存儲系統,支持多種數據結構。這些數據結構不僅可以滿足常見的存儲需求,還能夠通過其底層數據結構提供高效的操作和查詢。以下是Redis中常用的五
    的頭像 發表于 11-16 11:18 ?749次閱讀

    redis數據結構的底層實現

    Redis是一種內存鍵值數據庫,常用于緩存、消息隊列、實時數據分析等場景。它的高性能得益于其精心設計的數據結構和底層實現。本文將詳細介紹Redis常用的
    的頭像 發表于 12-05 10:14 ?672次閱讀

    矢量與柵格數據結構各有什么特征

    矢量數據結構和柵格數據結構是地理信息系統(GIS)中最常用的兩種數據結構。它們在存儲和表示地理要素上有著不同的方法和特征。在接下來的文章中,我們將詳細介紹
    的頭像 發表于 02-25 15:06 ?2789次閱讀
    主站蜘蛛池模板: 五月婷婷久久综合 | 亚洲综合春色另类久久 | 色色色色色色色色色色色色色色 | 明日花绮罗在线观看 | bt天堂网www连接 | 男人j进女人j的视频一进一出 | 91精品国产91久久久久久青草 | jiucao视频在线观看 | 中国一级特黄剌激爽毛片 | 日本成人小视频 | 色性视频 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 国产精品毛片天天看片 | 97se亚洲综合 | 亚洲人成电影在在线观看网色 | 濑亚美莉vs黑人欧美视频 | 一级毛片一级毛片一级毛片 | 天天操夜夜艹 | 俺去鲁婷婷六月色综合 | 五月婷婷在线播放 | 国产福利精品视频 | 亚洲乱码一区二区三区在线观看 | 7m视频精品凹凸在线播放 | 黄色成人在线网站 | 一级特级aaaa毛片免费观看 | 人人干人人草 | 亚洲最大色网站 | 91福利视频网 | 毛片一区 | 四虎精品影院2022 | 天天插天天 | 男校霸把男校草玩出水男男 | 国产精品漂亮美女在线观看 | 色天天天天综合男人的天堂 | 亚洲阿v天堂2018在线观看 | 日本视频一区在线观看免费 | 天天综合网色 | 免费高清在线视频色yeye | 夜夜橹橹网站夜夜橹橹 | 三级在线观看 | 色多多污网站在线观看 |