日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas教程(一)Series与DataFrame

發(fā)布時間:2025/4/5 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas教程(一)Series与DataFrame 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

如何學習:先隨著小編看一下幾個重要的函數方法,然后用實例加以鞏固

預備知識:NumPy數組是一個多維數組對象,稱為ndarray。其由兩部分組成:實際的數據、描述這些數據的元數據

此外小編為你準備了:Python系列


開始使用pandas,你需要熟悉它的兩個重要的數據結構:?

Series:是一個值的序列,它只有一個列,以及索引。

DataFrame:是有多個列的數據表,每個列擁有一個 label,當然,DataFrame 也有索引。

首先我們導入包:

In [1]: from pandas import Series, DataFrame In [2]: import pandas as pd

下面我們將詳細介紹Series、DataFrame這倆個部分


一、Series

Series是一個一維的類似的數組對象,包含一個數組的數據(任何NumPy的數據類型)和一個與數組關聯(lián)的數據標簽,被叫做 索引 。最簡單的Series是由一個數組的數據構成:

In [3]: obj = Series([4, 7, -5, 3]) In [4]: obj Out[4]: 0 4 1 7 2 -5 3 3 dtype: int64

通常,需要創(chuàng)建一個帶有索引來確定沒一個數據點的Series:

In [5]: obj2 = Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c']) In [6]: obj2 Out[6]: d 4 b 7 a -5 c 3 dtype: int64 In [7]: obj2.index Out[7]: Index(['d', 'b', 'a', 'c'], dtype='object')

與正規(guī)的NumPy數組相比,你可以使用索引里的值來選擇一個單一值或一個值集:

In [8]: obj2['a'] Out[8]: -5 In [9]: obj2['d'] = 6 In [10]: obj2[['c', 'a', 'd']] Out[10]: c 3 a -5 d 6 dtype: int64

我們也可以對Series進行一些處理,然后,再進行輸出:

In [11]: obj2 Out[11]: d 6 b 7 a -5 c 3 dtype: int64In [12]: obj2[obj2 > 0] Out[12]: d 6 b 7 c 3 dtype: int64In [13]: obj2 * 2 Out[13]: d 12 b 14 a -10 c 6 dtype: int64

另一種思考的方式是,Series是一個定長的,有序的字典,因為它把索引和值映射起來了。它可以適用于許多期望一個字典的函數:

In [14]: 'b' in obj2 Out[14]: TrueIn [15]: 'e' in obj2 Out[15]: False

如果你有一些數據在一個Python字典中,你可以通過傳遞字典來從這些數據創(chuàng)建一個Series:

In [16]: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000} In [17]: obj3 = Series(sdata) In [18]: obj3 Out[18]: Ohio 35000 Oregon 16000 Texas 71000 Utah 5000 dtype: int64

只傳遞一個字典的時候,結果Series中的索引將是排序后的字典的鍵:

In [19]: states = ['California', 'Ohio', 'Oregon', 'Texas'] In [20]: obj4 = Series(sdata, index=states) In [21]: obj4 Out[21]: California NaN Ohio 35000.0 Oregon 16000.0 Texas 71000.0 dtype: float64

在這種情況下, sdata 中的3個值被放在了合適的位置,但因為沒有發(fā)現(xiàn)對應于 ‘California’ 的值,就出現(xiàn)了 NaN (不是一個數),這在pandas中被用來標記數據缺失或 NA 值。在pandas中用函數 isnull 和 notnull 來檢測數據丟失:

In [22]: pd.isnull(obj4) Out[22]: California True Ohio False Oregon False Texas False dtype: boolIn [23]: pd.notnull(obj4) Out[23]: California False Ohio True Oregon True Texas True dtype: boolSeries的索引可以通過賦值就地更改:
In [24]: obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan'] In [25]: obj Out[25]: Bob 4 Steve 7 Jeff -5 Ryan 3 dtype: int64


二、DataFrame

一個Datarame表示一個表格,類似電子表格的數據結構,包含一個經過排序的列表集,它們每一個都可以有不同的類型值(數字,字符串,布爾等等)。Datarame有行和列的索引;它可以被看作是一個Series的字典(每個Series共享一個索引)。與其它你以前使用過的(如 R 的 data.frame )類似Datarame的結構相比,在DataFrame里的面向行和面向列的操作大致是對稱的。在底層,數據是作為一個或多個二維數組存儲的,而不是列表,字典,或其它一維的數組集合。

直接指定列數據來創(chuàng)建DataFrame

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

以Series數組來創(chuàng)建DataFrame


這兩種創(chuàng)建方法的不同之處在于:第一種方法創(chuàng)建的DataFrame的列(column)的數據類型是相同的,第二種方法創(chuàng)建的DataFramed的行(row)的數據類型是相同的。

設置DataFrame列的排列順序:

In [3]: DataFrame(data, columns=['year', 'state', 'pop']) Out[3]: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

和Series一樣,如果你傳遞了一個行,但不包括在 data 中,在結果中它會表示為NAN值:

In [4]: frame2 = DataFrame(data, columns=['year', 'state', 'pop', 'debt'],...: index=['one', 'two', 'three', 'four', 'five'])In [5]: frame2 Out[5]: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 NaNIn [6]: frame2.columns Out[6]: Index(['year', 'state', 'pop', 'debt'], dtype='object')

和Series一樣,在DataFrame中的一列可以通過字典記法或屬性來檢索:

In [7]: frame2['state'] Out[7]: one Ohio two Ohio three Ohio four Nevada five Nevada Name: state, dtype: objectIn [8]: frame2.year Out[8]: one 2000 two 2001 three 2002 four 2001 five 2002 Name: year, dtype: int64

列可以通過賦值來修改。例如,空的 ‘debt’ 列可以通過一個純量或一個數組來賦值:

In [9]: frame2['debt'] = 16.5In [10]: frame2 Out[10]: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.5In [11]: frame2['debt'] = np.arange(5.)In [12]: frame2 Out[12]: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

通過列表或數組給一列賦值時,所賦的值的長度必須和DataFrame的長度相匹配。如果你使用Series來賦值,它會代替在DataFrame中精確匹配的索引的值,Series沒有的數據在DataFrame中就會被更新為NaN:

In [13]: val = Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])In [14]: frame2['debt'] = valIn [15: frame2 Out[15]: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

給一個不存在的列賦值,將會創(chuàng)建一個新的列。 像字典一樣 del 關鍵字將會刪除列:

In [16]: frame2['eastern'] = frame2.state = 'Ohio'In [17]: frame2 Out[17]:year state pop debt eastern one 2000 Ohio 1.5 NaN Ohio two 2001 Ohio 1.7 -1.2 Ohio three 2002 Ohio 3.6 NaN Ohio four 2001 Ohio 2.4 -1.5 Ohio five 2002 Ohio 2.9 -1.7 OhioIn [18]: del frame2['eastern']In [19]: frame2.columns Out[19]: Index(['year', 'state', 'pop', 'debt'], dtype='object')




總結

以上是生活随笔為你收集整理的pandas教程(一)Series与DataFrame的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。