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型)