python如何实现循环保存图片,以及怎么保存groupby的数据

这段代码演示了如何使用Python对数据集进行groupby操作,并保存结果。同时,它展示了如何循环遍历分组后的数据,分别保存每个分组对应的图片。在保存图片时,代码绘制了CPU利用率和内存利用率随时间的散点图。注意在保存数据时保留index,以保持分类信息完整。此外,代码中还提到了处理数据时的一些细节和注意事项。
摘要由CSDN通过智能技术生成

python如何实现循环保存图片,以及怎么保存groupby的数据

首先将代码放上来,方便一些伸手的兄弟,但如果兄弟不烦唠叨,可以继续往下看一下我发现的其中一些数以事项

# 首先通过groupby把数据集分组,然后进行保存
def get_m3044_container():
    columns = ['container_id', 'machine_id', 'time_stamp', 'cpu_util_percent',
               'mem_util_percent', 'cpi', 'mem_gps', 'mpki', 'net_in', 'net_out',
               'disk_io_percent']
    container_m3044 = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_usage_2.csv",names=columns)
    container_m3044['count'] = 0
    container_m3044_group = container_m3044.groupby(['container_id']).count()['count']
    container_m3044_group.to_csv("H:\\experiment\\data_set\\container_usage\\container_m3044_group.csv")
    pass
# 循环画图
def get_each_container_plt():
    columns = ['container_id', 'machine_id', 'time_stamp', 'cpu_util_percent',
               'mem_util_percent', 'cpi', 'mem_gps', 'mpki', 'net_in', 'net_out',
               'disk_io_percent']
    container_group = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_m3044_group.csv")
    container_m3044 = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_usage_2.csv",names=columns)
    # print(container_m3044.dtype)
    container_id_list = container_group['container_id'].values
    for container_id in container_id_list:
        if container_id == 'c_10997':
            continue
        df_1 = container_m3044.loc[container_m3044['container_id'].str.contains(container_id,na=False),:]
        df_1.to_csv("H:\\experiment\\data_set\\container_usage\\container_"+container_id+".csv", index=False,header=False,mode='a')
        pass
    for container_id in container_id_list:
        df = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_"+container_id+".csv",names=columns)
        df.sort_values(by='time_stamp', inplace=True, ascending=True)
        df.plot.scatter(y='cpu_util_percent',x='time_stamp',s=0.01)
        plt.xticks(rotation=90)
        plt.savefig(container_id + "_cpu_time.jpg")
        df.plot.scatter(y='mem_util_percent', x='time_stamp', s=0.01)
        # 重新铺一遍横轴
        plt.xticks(rotation=90)
        plt.savefig(container_id + "_mem_time.jpg")
        pass
    pass

注意事项

1.注意不要加上index = False

# 首先是分组的注意事项,首先代码中最后的保存,注意不要去掉index ,即:不要加上如下语句
index = False   #不然container_id 这一类用来分类的工具不会进行保存

2.在敲第二部分的代码发现一个有趣的事情,在最开始的代码中

def get_each_container_plt():
    columns = ['container_id', 'machine_id', 'time_stamp', 'cpu_util_percent',
               'mem_util_percent', 'cpi', 'mem_gps', 'mpki', 'net_in', 'net_out',
               'disk_io_percent']
    container_group = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_m3044_group.csv")
    container_m3044 = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_usage_2.csv",names=columns)
    # print(container_m3044.dtype)
    container_id_list = container_group['container_id'].values
    for container_id in container_id_list:
        if container_id == 'c_10997':
            continue
            # 一开始的代码是这样写的,但代码里面发现一件有趣的事情,这个df打印出来是一个字符串,名称为container_id
            for df in container_m3044:
        	df_1 = df.loc[df['container_id'].str.contains(container_id,na=False),:]
            	df_1.to_csv("H:\\experiment\\data_set\\container_usage\\container_"+container_id+".csv", index=False,header=False,mode='a')
        pass
    for container_id in container_id_list:
        df = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_"+container_id+".csv",names=columns)
        df.sort_values(by='time_stamp', inplace=True, ascending=True)
        df.plot.scatter(y='cpu_util_percent',x='time_stamp',s=0.01)
        plt.xticks(rotation=90)
        plt.savefig(container_id + "_cpu_time.jpg")
        df.plot.scatter(y='mem_util_percent', x='time_stamp', s=0.01)
        # 重新铺一遍横轴
        plt.xticks(rotation=90)
        plt.savefig(container_id + "_mem_time.jpg")
        pass
    pass

但如下代码中的df却有不一样,这是需要注意的地方

# 不排除可能受到chunksize的影响
def __cpu_time__():
    columns = ['container_id', 'machine_id', 'time_stamp', 'cpu_util_percent',
               'mem_util_percent', 'cpi', 'mem_gps', 'mpki', 'net_in', 'net_out',
               'disk_io_percent']
    pd.set_option('display.max_columns', None)
    container_usage = pd.read_csv("H:\\experiment\\data_set\\container_usage\\container_usage_1.csv", names=columns,chunksize=100000)
    i = 1
    for df in container_usage:

        df_1 = df.loc[df['container_id'].str.contains('c_10997',na=False),:]
        df_1.to_csv("D:\\experiment\\data_set\\container_usage\\container_c_10997.csv", index=False,header=False,mode='a')
        print(i)
        i += 1

上面的df是:

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值