最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas數(shù)據(jù)結(jié)構(gòu)詳細說明及如何創(chuàng)建Series,DataFrame對象方法

 更新時間:2021年10月06日 13:46:26   投稿:wdc  
本篇文章中,我們主要側(cè)重于介紹Pandas數(shù)據(jù)結(jié)構(gòu)本身的特性,以及如何創(chuàng)建一個Series或者DataFrame數(shù)據(jù)對象,并填入一些數(shù)據(jù)

在網(wǎng)絡(luò)上的Pandas教程中,很多都提到了如何使用Pandas將已有的數(shù)據(jù)(如csv,如hdfs等)直接加載成Pandas數(shù)據(jù)對象,然后在其基礎(chǔ)上進行數(shù)據(jù)分析操作,但是,很多時候,我們需要自己創(chuàng)建Pandas數(shù)據(jù)對象,并填入一些數(shù)據(jù),常見的應(yīng)用場景如:我們想要將現(xiàn)有的數(shù)據(jù)進行處理,并生成一個新的Pandas數(shù)據(jù)對象,還有,我們想利用Pandas的數(shù)據(jù)保存功能(比如to_csv, to_json, to_hdf等等)把我們采集到的數(shù)據(jù)寫入到IO里邊,因此掌握Pandas對象的特性,以及如何創(chuàng)建也是很重要的。

有些時候我們需要利用pandas數(shù)據(jù)結(jié)構(gòu)創(chuàng)建自己的對象,按自己的方式保存新數(shù)據(jù),我們將在本文中介紹如何實現(xiàn)。

1. Pandas的兩種數(shù)據(jù)類型

Pandas支持兩種數(shù)據(jù)類型,分別為Series和DataFrame,其中:

Series - 是一個帶有標簽的一維數(shù)組,支持多種不同的類型,但是針對同一個Series里邊存儲的數(shù)據(jù)類型必須是一致的
DataFrame - 是一個帶有標簽的二維數(shù)組,是一個尺寸可以修改的表格,一個DataFrame由多個Series組成,每一列都是一個Series
一句話描述的話就是,Series是很多標量數(shù)據(jù)(Scalar)的集合,而DataFrame是很多Series的集合。

我們來看下圖這個例子,在1D的Series中,下圖中有三個Series,分別保存了姓名(name), 年齡(age)和得分(marks),而他們的每一行都分別對應(yīng)一個不同的人的信息,在每一個Series中的每一個單元格中(比如name series的第1行,對應(yīng)的Prasadi)都是一個標量(Scalar),而每一行前邊的0,1,2,3這些就是數(shù)據(jù)的索引(index),也可以叫做標簽,所以說,Series是帶有標簽的一維數(shù)組。

可以看出,利用Series只能存儲一種類型的數(shù)據(jù),比如說name series存儲的數(shù)據(jù)是字符串類型,而age series存儲的數(shù)據(jù)是整數(shù)型。如果我們想把name,age,marks存儲在一個數(shù)據(jù)結(jié)構(gòu)里,我們就需要使用DataFrame,從圖中看出,DataFrame類似于一個表格數(shù)據(jù),有行有列,行跟Series的行一致,是數(shù)據(jù)的標簽,而每一列就是原來的每一個Series。

2. Series類型

如我們在前文中所說,Series結(jié)構(gòu)中可以存儲任何類型的數(shù)據(jù),包括:整型,字符串類型,浮點型,甚至是Python對象等等,但是要求是,每一行的數(shù)據(jù)類型必須統(tǒng)一。那么如何創(chuàng)建一個Series對象呢,

通過numpy array

Pandas的一個主要用途是數(shù)據(jù)分析,而它也是基于Numpy實現(xiàn)的,因此,通過numpy array來創(chuàng)建Series是非常常見的。

np_array = np.random.randn(5)
pd.Series(np_array, index=['a', 'b', 'c', 'd', 'e'])

上邊這段代碼,利用np.random.randn隨機生成一個長度為5的numpy array,然后pd.Series使用這個numpy array來創(chuàng)建一個Series,在創(chuàng)建的同時,指定了每一行的index(標簽)分別是a,b,c,d,e,f,輸出結(jié)果為:

通過Python字典

通過上邊這個示例,大家有沒有發(fā)現(xiàn)Series跟Python內(nèi)置的dict類型是不是很類似,標簽相當于dict中的key,而數(shù)據(jù)內(nèi)容相當于dict中的value,它們有一一對應(yīng)的關(guān)系,因此,可以想象,我們能夠直接通過Python的dict來創(chuàng)建一個Series。

d = {'b': 1, 'a': 0, 'c': 2}
pd.Series(d)

上邊這段代碼,我們先創(chuàng)建了一個Python地點d,然后將這個字典傳遞給pd.Series來創(chuàng)建一個Pandas Series,運行結(jié)果為:

通過標量值(Scalar)

除了上邊這兩種方式,我們還可以通過一個簡單的標量值來創(chuàng)建Series,特別注意的是跟上邊兩種方式不同,在使用這種方式創(chuàng)建Series的時候,我們必須指定index

pd.Series(5, index=['a', 'b', 'c', 'd', 'e'])

如上邊代碼所示,我們使用一個常量5,然后指定index為a,b,c,d,e,同樣使用pd.Series可以創(chuàng)建一個Series對象,看到這里我們就能夠明白為什么必須指定Index了吧,那是因為Series對象是有長度的,長度是可以大于1的,而標量的長度固定為1,我們可以通過指定Index的方式來控制生成的Series的長度,Series中的值則是重復(fù)使用這一個標量常量5。其運行結(jié)果為:

name屬性

當我們創(chuàng)建一個Series的時候,我們可以指定一個名稱,這個名稱會被存儲到Series的name屬性中,后續(xù)我們還可以使用rename方法來修改這個屬性,例如下邊這樣的代碼:

s = pd.Series(np.random.randn(5), name='this_is_name')
s

創(chuàng)建了一個名稱為this_is_name的Series,然后我們使用rename方法來重命名這個Series為this_is_new_name:

s = s.rename('this_is_new_name')
s

上邊這兩部分代碼的輸入如下圖:

那么這個名稱有什么作用呢,這里預(yù)告一下,我們將在DataFrame中用到(別忘了DataFrame是多個Series的集合)

3. DataFrame類型

在第一節(jié)中我們介紹到,DataFrame是一個二維的表格數(shù)據(jù)結(jié)構(gòu),它有行和列的概念,跟行標簽相對應(yīng)的,為了能夠按列索引數(shù)據(jù),每一列都可以有一個名稱,即列名,我們剛在Series章節(jié)中看到,Series可以表示一列數(shù)據(jù),我們在本節(jié)中介紹的DataFrame就是多個這樣的Series的組合,每一列就對應(yīng)一個Series,而每一行也對應(yīng)一個Series。讀到這里,你是不是能夠猜的出我們剛說的Series的name屬性的用途了,對了,使用Series創(chuàng)建DataFrame的列的時候,Series的名稱就會成為列名,如果Series作為行,則Series的名稱會成為行名。

接下來我們來講解如何創(chuàng)建DataFrame

通過一維numpy array或者Python List 組成的字典
大家可以想想,如果一個字典的value是array或者list的時候,那么這個字典其實就是一種表格結(jié)構(gòu),圖為DataFrame是一個表格結(jié)構(gòu)的數(shù)據(jù)類型,我們是可以通過這樣的字典來創(chuàng)建DataFrame,例如下邊這段代碼

d = {'one': [1., 2., 3., 4.],
     'two': [4., 3., 2., 1.]}
pd.DataFrame(d, index=['a', 'b', 'c', 'd'])

我們把d這個Python字典傳遞給pd.DataFrame來創(chuàng)建新的DataFrame,同時我們可以通過指定index來指定DataFrame的行名(標簽),上邊代碼的輸出為

通過包含列表的Python List

我們再來想想一下,除了字典之外可以表示表格數(shù)據(jù),還有沒有其他的方法,是的,還有Python List,例如下邊這段代碼

data = [(1, 2., 'Hello'), (2, 3., "World")]
pd.DataFrame(data)

我們可以用data這樣的Python List來表示表格數(shù)據(jù),不同于前邊提到的字典(dict),用List表示的表格數(shù)據(jù)其實是沒有行名和列名的,因此Pandas默認會自動生成行名和列名,所以上邊的代碼輸出為:

當然,自動生成的行名列名沒有任何意義,為了更好的操作數(shù)據(jù),我們還可以通過設(shè)置pd.DataFrame方法的index或者columns參數(shù)來指定自己的行名或者列名。

通過包含Python 字典的Python List

我們繼續(xù)想想,還有什么能夠表示表格數(shù)據(jù)?對了,包含Python字典的Python List也是可以表達表格數(shù)據(jù)的,例如下邊的代碼

data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
pd.DataFrame(data)

data是一個Python List,而列表中的每一個元素都是一個字典,運行結(jié)果為:

類似的,我們也可以通過指定index或者columns參數(shù)來修改行名和列名

通過Series

我們一直在提DataFrame是很多Series的集合(注:Series在DataFrame中可以是一行,也可以是一列),因此,我們也可以通過Series來創(chuàng)建DataFrame,例如下邊這段代碼

s1 = pd.Series(np.random.randn(5), name='this_is_name')
df = pd.DataFrame(s1)
df

利用s1這個Series來創(chuàng)建只有一列的DataFrame,輸出結(jié)果為:

還記得不,我們前邊提到了Series的name屬性,在使用Series創(chuàng)建DataFrame的時候,這個屬性會用來作為列名(或者行名,我們在下邊的列子可以看得出),例如下邊的這段代碼,如果有兩個Series,我們還可以用下邊這樣的方式創(chuàng)建DataFrame

s1 = pd.Series(np.random.randn(5), name='this_is_name')
s2 = s.rename('this_is_new_name')
df = pd.DataFrame([s1, s2])
df

這里我們使用了兩個名分別為this_is_name和this_is_new_name的Series來創(chuàng)建DataFrame,得到的結(jié)果為:

到這里,相信讀者已經(jīng)對Pandas提供的數(shù)據(jù)類型有了一個全面的認識了,并且有能力自己創(chuàng)建Pandas數(shù)據(jù)結(jié)構(gòu),并存儲自己的數(shù)據(jù)了,一個常見的應(yīng)用場景就是我們通過爬蟲獲取到數(shù)據(jù)以后,可以將這些非結(jié)構(gòu)化的數(shù)據(jù)以Pandas的表格格式保存,值得注意的是數(shù)據(jù)存儲在Pandas數(shù)據(jù)結(jié)構(gòu)中的時候,數(shù)據(jù)其實是在內(nèi)存中的,當程序被關(guān)閉以后,數(shù)據(jù)就丟失了,如果我們需要將數(shù)據(jù)持久化保存到硬盤或者數(shù)據(jù)庫中的話,則可以通過簡單的調(diào)用Pandas提供的to_csv, to_json, to_hdf等等接口將數(shù)據(jù)永久保存下來。

更多Python Pandas庫的相關(guān)文章,請點擊下面的相關(guān)文章

相關(guān)文章

  • python提取字符串中的數(shù)字的實現(xiàn)

    python提取字符串中的數(shù)字的實現(xiàn)

    本文主要介紹了python提取字符串中的數(shù)字的實現(xiàn),主要介紹了幾種常見的方法,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • python如何復(fù)制別人的虛擬環(huán)境

    python如何復(fù)制別人的虛擬環(huán)境

    這篇文章主要介紹了python如何復(fù)制別人的虛擬環(huán)境問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Python列表的循環(huán)遍歷與嵌套使用詳解

    Python列表的循環(huán)遍歷與嵌套使用詳解

    在編程中,遍歷列表的每個元素是處理數(shù)據(jù)的重要任務(wù)之一,此外,列表的嵌套使用可以幫助我們處理更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),本文將探討列表的循環(huán)遍歷方法及其嵌套使用,并提供具體示例以幫助理解這些高級用法,需要的朋友可以參考下
    2025-01-01
  • 詳解python string類型 bytes類型 bytearray類型

    詳解python string類型 bytes類型 bytearray類型

    這篇文章主要介紹了python string類型 bytes類型 bytearray類型,需要的朋友可以參考下
    2017-12-12
  • Python?time時間格式化操作指南

    Python?time時間格式化操作指南

    這篇文章主要給大家介紹了關(guān)于Python?time時間格式化操作的相關(guān)資料,Python中日期格式化是非常常見的操作,Python中能用很多方式處理日期和時間,轉(zhuǎn)換日期格式是一個常見的功能,需要的朋友可以參考下
    2023-10-10
  • Python實現(xiàn)以時間換空間的緩存替換算法

    Python實現(xiàn)以時間換空間的緩存替換算法

    緩存是指可以進行高速數(shù)據(jù)交換的存儲器,它先于內(nèi)存與CPU交換數(shù)據(jù),因此速度很快。緩存就是把一些數(shù)據(jù)暫時存放于某些地方,可能是內(nèi)存,也有可能硬盤。下面給大家介紹Python實現(xiàn)以時間換空間的緩存替換算法,需要的朋友參考下
    2016-02-02
  • 一文教會你用Python繪制動態(tài)可視化圖表

    一文教會你用Python繪制動態(tài)可視化圖表

    數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)中關(guān)鍵的一步,下面這篇文章主要給大家介紹了關(guān)于如何利用Python繪制動態(tài)可視化圖表的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 分位數(shù)回歸模型quantile regeression應(yīng)用詳解及示例教程

    分位數(shù)回歸模型quantile regeression應(yīng)用詳解及示例教程

    這篇文章主要為大家介紹了介紹了分位數(shù)回歸quantile regeression的概念詳解及代碼示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python + OpenCV 實現(xiàn)LBP特征提取的示例代碼

    Python + OpenCV 實現(xiàn)LBP特征提取的示例代碼

    這篇文章主要介紹了Python + OpenCV 實現(xiàn)LBP特征提取的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python-OpenCV實戰(zhàn):利用 KNN 算法識別手寫數(shù)字

    Python-OpenCV實戰(zhàn):利用 KNN 算法識別手寫數(shù)字

    K-最近鄰(KNN)是監(jiān)督學(xué)習(xí)中最簡單的算法之一,KNN可用于分類和回歸問題。本文將為大家介紹的是通過KNN算法實現(xiàn)識別手寫數(shù)字。文中的示例代碼介紹詳細,需要的朋友可以參考一下
    2021-12-12

最新評論

桂平市| 上林县| 新龙县| 凤凰县| 汪清县| 遂宁市| 呼伦贝尔市| 玉田县| 普洱| 长汀县| 佛山市| 抚顺县| 朝阳区| 江城| 蓝田县| 翼城县| 麟游县| 怀集县| 四川省| 仁寿县| 兴国县| 扎兰屯市| 汽车| 沾化县| 茂名市| 新绛县| 林芝县| 绍兴县| 尚志市| 洛浦县| 武清区| 阿拉尔市| 茌平县| 紫云| 泾阳县| 衢州市| 上思县| 衡水市| 景洪市| 滕州市| 九寨沟县|