【python】统计训练集的样本量-使用matplotlib绘制总文件夹下的各个文件夹内的数量柱状图,

两个学习点:

  • 1、使用matplotlib绘制柱状图;
  • 2、统计总的文件夹内的各个文件夹内文件的数量,并写入txt文件中

1、统计文件夹内的文件数

if __name__ == "__main__":
    #path = input("输入需要复制文件目录:")
    # 获取总的目录
    path="/home/scsc/dataset/images262_aug/images262"
    #获取总目录下的文件夹
    fileNames = os.listdir(path)
    #最后结果保存到txt文件中
    file_name="/home/scsc/dataset/log.train"
    #用于统计样本总量
    sum=0
    #打开txt文档,首先将存在的类型写入:这里我们有两项分别为 类别-数量
    #第一个参数表示打开的文件名称,第二个参数a+表示可读可写,r表示可读,w表示可写
    with open(file_name,"a+") as f:
        f.writelines("category"+','+"count")
        f.writelines("\n")
    #遍历刚刚得到的总目录下的文件夹
    for fileName in fileNames:
        #patha为每个文件夹
        patha=path + '/' + fileName
        #统计每个文件夹内的数量
        count=len(os.listdir(patha))
        sum=count+sum
        #再次打开,这次写入每个文件夹对应的结果:类别-数量
        with open(file_name,"a+") as f:
             f.writelines(str(fileName)+','+str(count)+'\n')
             #f.writelines("\n")
    print(sum)
    #将绘制柱状图抽取为单独的方法,参数为txt所在的地址。
    draw(file_name)

 这里参考了一下读写方面的延伸:https://blog.csdn.net/huo_1214/article/details/79153847

2、绘制柱状图结果

def draw(file_name):
    #使用pandas第三方库读取txt文件
    train_log = pd.read_csv(file_name)
    #设置对应的坐标轴和具体的内容
    _, ax1 = plt.subplots()

    ax1.set_title("category and count")
    #使用的折线图的方式
    #ax1.plot(train_log["category"], train_log["count"], alpha=0.5)
    #bar方法使用的是柱状图的形式
    plt.bar(train_log["category"], train_log["count"])
    ax1.set_xlabel('category')
    ax1.set_ylabel('count')
    plt.legend(loc='upper left')
    plt.savefig("/home/scsc/dataset/log1.png")
    plt.show()

3、效果图

子文件夹缩略图,这里最开始输入的是上一次目录。

【python】统计训练集的样本量-使用matplotlib绘制总文件夹下的各个文件夹内的数量柱状图,_第1张图片

最终统计结果图

【python】统计训练集的样本量-使用matplotlib绘制总文件夹下的各个文件夹内的数量柱状图,_第2张图片

 

 

 

你可能感兴趣的:(Python)