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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Pandas 基础 (2)—— DataFrame

發布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pandas 基础 (2)—— DataFrame 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. DataFrame 介紹

DataFrame 是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾值等)。

DataFrame 既有行索引也有列索引,它可以被看做由 Series 組成的字典(共用一個索引)。

DataFrame 中的數據是以一個或者多個二維塊存放的(而不是列表、字典或者別的一維數據結構)

2. DataFrame 使用

2.1 創建 DataFrame

最常用的方法是直接傳入一個由等長列表或者 NumPy 數組組成的字典

   In [153]: data = {'city':['beijing','shanghai','guangzhou','shenzhen','chongqing'],...: 'year':[2000,2001,2002,2003,2004],...: 'people':[1.5,1.7,3.6,2.4,2.9]}In [154]: frame = DataFrame(data)In [155]: frameOut[155]: city  people  year0    beijing     1.5  20001   shanghai     1.7  20012  guangzhou     3.6  20023   shenzhen     2.4  20034  chongqing     2.9  2004

可以指定列的顯示順序

   In [159]: frame = DataFrame(data,columns=['year','people','city'])In [160]: frameOut[160]: year  people       city0  2000     1.5    beijing1  2001     1.7   shanghai2  2002     3.6  guangzhou3  2003     2.4   shenzhen4  2004     2.9  chongqing

如果傳入的列找不到,就會產生 NaN 值

   In [161]: frame = DataFrame(data,columns=['year','people','city','area'])In [162]: frameOut[162]: year  people       city area0  2000     1.5    beijing  NaN1  2001     1.7   shanghai  NaN2  2002     3.6  guangzhou  NaN3  2003     2.4   shenzhen  NaN4  2004     2.9  chongqing  NaNIn [163]: frame.columnsOut[163]: Index([u'year', u'people', u'city', u'area'], dtype='object')

通過類似字典標記的方式或屬性的方式,可以將 DataFrame 的列獲取為一個 Series

   In [164]: frame['city']Out[164]: 0      beijing1     shanghai2    guangzhou3     shenzhen4    chongqingName: city, dtype: objectIn [165]: frame.peopleOut[165]: 0    1.51    1.72    3.63    2.44    2.9Name: people, dtype: float64

列可以通過賦值的方式進行修改

   In [166]: frame.area = np.arange(5)In [167]: frameOut[167]: year  people       city  area0  2000     1.5    beijing     01  2001     1.7   shanghai     12  2002     3.6  guangzhou     23  2003     2.4   shenzhen     34  2004     2.9  chongqing     4

將列表或者數組賦值給某個列時,其長度必須跟 DataFrame 的長度相匹配。如果賦值的是一個 Series,就會精確匹配 DataFrame 的索引,所有的空位都將被填上缺失值。

   In [168]: val = Series([100,200,300],index=[0,2,4])In [169]: frame['area'] = valIn [170]: frameOut[170]: year  people       city   area0  2000     1.5    beijing  100.01  2001     1.7   shanghai    NaN2  2002     3.6  guangzhou  200.03  2003     2.4   shenzhen    NaN4  2004     2.9  chongqing  300.0

為不存在的列賦值會創建出一個新列,可以使用關鍵字 del 刪除列

   In [171]: frame['bool_value'] = frame.city == 'shenzhen'In [172]: frameOut[172]: year  people       city   area  bool_value0  2000     1.5    beijing  100.0       False1  2001     1.7   shanghai    NaN       False2  2002     3.6  guangzhou  200.0       False3  2003     2.4   shenzhen    NaN        True4  2004     2.9  chongqing  300.0       FalseIn [173]: del frame.bool_value---------------------------------------------------------------------------AttributeError                            Traceback (most recent call last)<ipython-input-173-cc8fbbe0efd2> in <module>()----> 1 del frame.bool_valueAttributeError: bool_valueIn [174]: del frame['bool_value']In [175]: frame.columnsOut[175]: Index([u'year', u'people', u'city', u'area'], dtype='object')

另外一種常見的數據形式是嵌套字典,將一個嵌套字典傳給 DataFrame,它就會被解釋為:外層字典的鍵作為列,內層鍵則作為行索引。

   In [180]: people = {'beiijng':{2000:1.5,2001:1.7,2002:3.6},...: 'shanghai':{2000:1.2,2001:1.3,2002:1.8}}In [181]: frame2 = DataFrame(people)In [182]: frame2Out[182]: beiijng  shanghai2000      1.5       1.22001      1.7       1.32002      3.6       1.8# 對其進行轉置In [183]: frame2.TOut[183]: 2000  2001  2002beiijng    1.5   1.7   3.6shanghai   1.2   1.3   1.8

如果設置了 DataFrame 的 index 和 columns 的 name 屬性,則這些信息會顯示出來

   In [187]: frame2.index.name = 'year'In [188]: frame2.columns.name = 'city'In [189]: frame2Out[189]: city  beiijng  shanghaiyear                   2000      1.5       1.22001      1.7       1.32002      3.6       1.8# values 屬性會以二維 ndarray 形式返回 DataFrame 中的數據In [190]: frame2.valuesOut[190]: array([[1.5, 1.2],[1.7, 1.3],[3.6, 1.8]])

下圖給出了 DataFrame 構造函數所能接受的各種數據

2.2 索引對象

構建 Series 或 DataFrame 時,所用到的任何數組或其他序列的標簽都會轉換成一個 index

   In [191]: obj = Series(range(3), index=['a','b','c'])In [192]: index = obj.indexIn [193]: indexOut[193]: Index([u'a', u'b', u'c'], dtype='object')In [194]: index[1:]Out[194]: Index([u'b', u'c'], dtype='object')

index 對象必須是不可修改的,這樣才能保證 index 對象在多個數據結構之間安全共享

   In [195]: index = pd.Index(np.arange(3))In [196]: indexOut[196]: Int64Index([0, 1, 2], dtype='int64')In [197]: obj2 = Series(range(3), index=index)In [198]: obj2Out[198]: 0    01    12    2dtype: int64In [199]: obj2.index is indexOut[199]: True

   In [200]: frame2Out[200]: city  beiijng  shanghaiyear                   2000      1.5       1.22001      1.7       1.32002      3.6       1.8In [202]: 'shanghai' in frame2.columnsOut[202]: TrueIn [203]: 2003 in frame2.indexOut[203]: False


?

總結

以上是生活随笔為你收集整理的Pandas 基础 (2)—— DataFrame的全部內容,希望文章能夠幫你解決所遇到的問題。

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