1. 程式人生 > >Pandas學習筆記(不定期更新)

Pandas學習筆記(不定期更新)

1.如何使用Pandas處理大資料檔案

reader=pd.read_csv('xxx.csv', iterator=True) #分塊讀取
chunkSize = 10000000 #一次讀取一千萬條記錄
chunks = []
while True:
    try:
        chunk = reader.get_chunk(chunkSize) #一次獲得1kw的資料量
        chunks.append(chunk)
    except StopIteration:
        print "Iteration is stopped."
        break
df = pd.concat(chunks, ignore_index=True
) #讀取完資料後再利用pandas的concate連線DataFrame

2.處理時間序列索引的小tips

df['time'] = pd.to_datetime(df['time']) #要將時間轉為DateTime格式,才方便後面操作(否則無法對時間序列進小操作)
df.set_index('time', inplace=True)

一個小提醒,如果要使用時間索引,先要將相關時間轉換為DataTime格式。否則之後針對時間索引的切片選取就會出毛病。

#加入我需要選取7天前到現在的資料
date1 = today - relativedelta(days=7) #在DataTime中使用relativedelta()函式來選取相應的時間
df_date = df_table[str(date1):str(today)] # 使用str可以使切片選取變成模糊選取。如果使用DataTime格式。當表中沒有date這個時間點,程式就會報錯。

3.修改DataFrame中的單個值

# 獲取單個值.df是DataFrame相關資料
df.get_value('行名', '列名') #第一種方法 採用行名和列名
df.get_value(行索引, 列索引, takeable = True) #第二種方法 採用行索引和列索引(只能int型)
# 修改單個值
df.set_value('行名','列名', 修改的值) #第一種方法 採用行名和列名
df.set_value(行索引, 列索引, 修改的值, takeable = True) #第二種方法 採用行索引和列索引(只能int型)
    4.