python统计图⽚数量_Python统计每个⽂件夹各类图⽚个数统计每个⽂件夹各类图⽚个数1 背景2 整体思路3 读⼊所有⽂件夹4 读每个⽂件夹下⾯图⽚4.1 判断空⽂件夹有多少个5 看每个⽂件夹平均有多少张图⽚6 数据筛选6.1 筛选出big_num为0的 然后去检查⼀下6.2 筛选出rec_num为0的 然后去检查⼀下7 结论
1 背景
现在已经通过爬⾍将所有商家⾸页的图⽚下载ok,但给导师汇报总的有个基本的结论吧,也就是说,多少⽂件夹没有图⽚,分为big和rec,两者任⼀为空有多少?均为空多少?平均每个⽂件夹有多少图⽚?这就需要去统计⼀波了!
2 整体思路
通过循环遍历每⼀个⽂件夹
获取⼀个⽂件夹下⾯所有⽂件的名称,然后如果出现rec或者big分别进⾏计数,所以⼀开始定义为0
每⼀个循环形成⼀个DataFrame 放到list 最后进⾏⼀个concat ⼤功告成
3 读⼊所有⽂件夹
import os
all_folds = os.listdir('702个美团商户上传图⽚/')
all_folds = [x for x in all_folds if '.' not in x]
print(len(all_folds))
all_folds[:5]
702
['150569726', '163443323', '177474079', '68654281', '178086221']
4 读每个⽂件夹下⾯图⽚
import pandas as pd
import time
data_need = []
t0 = time.time()
for i in range(len(all_folds)):
# for i in range(0,5):
print('正在统计第 %d 个⽂件夹' % (i+1))
# 定位每⼀个⽂件夹
path = all_folds[i]
# 遍历⽂件夹所有⽂件内容
all_files = os.listdir(path)
# 计数-big/rec
big_num = 0
rec_num = 0
for j in all_files:
big_num += 1
elif 'rec' in j:
rec_num += 1
else:
pass
# 构建数据框
# print(big_num)
# print(rec_num)
python怎么读文件夹下的文件夹y = pd.DataFrame({'mer_id': all_folds[i],
'big_num': [big_num],
'rec_num': [rec_num]})
# 加到全局的list⾥⾯
data_need.append(y)
# 合并数据
data_final = pd.concat(data_need, axis=0)
t1= time.time()
print('所有⽂件夹统计完毕,花费时间为 %.2f s' % (t1 - t0))正在统计第 1 个⽂件夹
正在统计第 2 个⽂件夹
正在统计第 3 个⽂件夹
正在统计第 4 个⽂件夹
正在统计第 5 个⽂件夹
......
正在统计第 698 个⽂件夹
正在统计第 699 个⽂件夹
正在统计第 700 个⽂件夹
正在统计第 701 个⽂件夹
正在统计第 702 个⽂件夹
所有⽂件夹统计完毕,花费时间为 0.62 s
data_final.index = range(len(data_final))
print(data_final.shape)
data_final.head()
(702, 3)
big_num
rec_num
150569726
5
6
1
163443323
2
6
2
177474079
5
6
3
68654281
2
4
178086221
4
data_final.head(10) mer_id
big_num
rec_num
150569726
5
6
1
163443323
2
6
2
177474079
5
6
3
68654281
2
4
178086221
4
5
95463330
6
50333471
7
4984182
2
8
182596141
1
9
4438304
3
6
4.1 判断空⽂件夹有多少个
思路:
使⽤map函数(配合使⽤lambda匿名函数),先定义⼀个函数(如果两项为0 则返回0)
def f(x,y):
if x == y == 0:
return 0
else:
return 1
data_final['count_0_0'] = data_final.index.map(lambda x: f(data_final['big_num'][x], data_final['rec_num'][x])) data_final.head(10)
mer_id
big_num
rec_num
count_0_0
150569726
5
6
1
1
163443323
2
6
1
2
177474079
5
6
1
3
68654281
2
1
4
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论