python 小记
- 读写文件
- 读取文件
-
1 # 利用pandas读取文件,数据类型为DataFrame; 若需指定分隔符使用sep='',默认',',只能单个字符; 2 data = pd.read_csv(datafile, header=None, usecols=[0, 1, 3, 5, 6, 15]) 3 # header指示列标签位置所在行号,默认第一行; nrows指定读取文件前n列 4 5 # 指定列标签名,通常配合header=None使用 6 data.columns = ['start', 'end', 'taskId', 'cpu_uti', 'memory', 'CPI'] 7 8 # 删除指定列存在空值的 所在行 9 data.dropna(subset=['CPI'], inplace=True) # 删除存在空值的行
-
- 写入文件
-
1 # 此法输出分隔符只能用单个字符,同样用sep标签 2 data.to_csv('filtedData', index=False, header=False) 3 # index, header=False表示不输出行号和列表签名 4 5 # 此法分隔符可用多个字符,使用numpy模块,delimiter标签 6 # fmt标签指定输出每个数据的格式 7 fmt = '%d', '%d', '%d', '%.1f', '%d', '%f', '%f', '%d', '%d' 8 np.savetxt('filtedData', data.values, delimiter=', ', fmt=fmt)
-
- 顺带一提,DataFrame相关操作:
-
1 # 取数 2 data.loc[x, y] 3 4 # 新增一列 5 # 可用其余列做运算得到新列,或复制,或直接赋值 6 data.loc[:, 'size'] = (data.loc[:, 'end'] - data.loc[:, 'start']) / data.loc[:, 'CPI'] / 1e3 7 data.loc[:, 'mobileId'] = [random.randint(0, 9) for x in range(Num)] # mobileId随机生成 8 data['taskType'] = 0 9 data['uploadSize'] = data['size'] 10 11 #删除多余列 12 data.drop(labels=['end', 'CPI'], axis=1, inplace=True) 13 # inplace=True表示对原数据保存修改 14 15 # 列重排,换位置 16 data = data[['mobileId', 'taskId', 'taskType', 'start', 'size', 'memory', 'cpu_uti', 'uploadSize', 'downloadSize']]
-
- 读取文件