国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python遍歷pandas數據方法總結

2020-02-22 23:11:15
字體:
來源:轉載
供稿:網友

前言

Pandas是python的一個數據分析包,提供了大量的快速便捷處理數據的函數和方法。其中Pandas定義了Series 和 DataFrame兩種數據類型,這使數據操作變得更簡單。Series 是一種一維的數據結構,類似于將列表數據值與索引值相結合。DataFrame 是一種二維的數據結構,接近于電子表格或者mysql數據庫的形式。

在數據分析中不可避免的涉及到對數據的遍歷查詢和處理,比如我們需要將dataframe兩列數據兩兩相除,并將結果存儲于一個新的列表中。本文通過該例程介紹對pandas數據遍歷的幾種方法。

for..in循環迭代方式

for語句是Python內置的迭代器工具,用于從可迭代容器對象(如列表、元組、字典、集合、文件等)中逐個讀取元素,直到容器中沒有更多元素為止,工具和對象之間只要遵循可迭代協議即可進行迭代操作。
具體的迭代的過程:可迭代對象通過__iter__方法返回迭代器,迭代器具有__next__方法,for循環不斷地調用__next__方法,每次按序返回迭代器中的一個值,直到迭代到最后,沒有更多元素時拋出異常StopIteration(python自動處理異常)。迭代的優點是無需把所有元素一次加載到內存中,可以在調用next方法時逐個返回元素,避免出現內存空間不夠的情況。

>>> x = [1,2,3]>>> its = x.__iter__() #列表是可迭代對象,否則會提示不是迭代對象>>> its<list_iterator object at 0x100f32198>>>> next(its) # its包含此方法,說明its是迭代器1>>> next(its) 2>>>next(its) 3>>> next(its) Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration

實現代碼如下:

def haversine_looping(df):disftance_list = []for i in range(0,len(df)): disftance_list.append(df.iloc[i][‘high']/df.iloc[i][‘open']) return disftance_list

關于上述代碼中range的實現方法,我們也可根據迭代器協議自實現相同功能的迭代器(自帶iter方法和next方法)應用在for循環中,代碼如下:

class MyRange: def __init__(self, num):  self.i = 0  self.num = num def __iter__(self):  return self def __next__(self):  if self.i < self.num:  i = self.i  self.i += 1  return i  else:  raise StopIteration() for i in MyRange(10): print(i) 

我們也可以通過列表解析的方式用更少的代碼實現數據處理功能

disftance_list = [df.iloc[i][‘high']/df.iloc[i][‘open'] for i in range(0,len(df))]

iterrows()生成器方式

iterrows是對dataframe行進行迭代的一個生成器,它返回每行的索引及包含行本身的對象。所謂生成器其實是一種特殊的迭代器,內部支持了迭代器協議。Python中提供生成器函數和生成器表達式兩種方式實現生成器,每次請求返回一個結果,不需要一次性構建一個結果列表,節省了內存空間。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孙吴县| 宜良县| 全南县| 清流县| 清水河县| 华蓥市| 襄汾县| 凤翔县| 嘉善县| 汉川市| 龙陵县| 本溪| 沁水县| 固原市| 广宁县| 奉贤区| 镇沅| 青川县| 平遥县| 当雄县| 平南县| 邯郸县| 成都市| 阿勒泰市| 临邑县| 六枝特区| 佛学| 迁西县| 江西省| 卢氏县| 榕江县| 鄂温| 凤阳县| 平遥县| 开阳县| 曲阳县| 滕州市| 修水县| 年辖:市辖区| 九江县| 彝良县|