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']]
上一篇:python-pandas库


下一篇:Python调用Cplex求解VRPTW问题