python统计图片数量_Python | 统计每个文件夹各类图片个数

该博客介绍了一种使用Python统计每个文件夹中大图(big)和推荐图(rec)数量的方法。通过遍历所有文件夹,统计big和rec的数量,并生成包含这些信息的数据框。最终,博主发现有176个文件夹没有大图,226个文件夹没有推荐图,140个文件夹两者都无,平均每个文件夹有6.2张图片。
摘要由CSDN通过智能技术生成

统计每个文件夹各类图片个数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:

if 'big' in j:

big_num += 1

elif 'rec' in j:

rec_num += 1

else:

pass

# 构建数据框

# print(big_num)

# print(rec_num)

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)

mer_id

big_num

rec_num

0

150569726

5

6

1

163443323

2

6

2

177474079

5

6

3

68654281

2

0

4

178086221

0

4

data_final.head(10)

mer_id

big_num

rec_num

0

150569726

5

6

1

163443323

2

6

2

177474079

5

6

3

68654281

2

0

4

178086221

0

4

5

95463330

0

0

6

50333471

0

0

7

4984182

2

0

8

182596141

1

0

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

0

150569726

5

6

1

1

163443323

2

6

1

2

177474079

5

6

1

3

68654281

2

0

1

4

178086221

0

4

1

5

95463330

0

0

0

6

50333471

0

0

0

7

4984182

2

0

1

8

182596141

1

0

1

9

4438304

3

6

1

df_0_0 = data_final[data_final['count_0_0']==0]

print(df_0_0.shape) # 即140个双空!

(140, 4)

5 看每个文件夹平均有多少张图片

data_final['total'] = data_final['big_num'] + data_final['rec_num']

data_final['total'].describe()

count 702.000000

mean 6.200855

std 4.306827

min 0.000000

25% 2.000000

50% 8.000000

75% 11.000000

max 11.000000

Name: total, dtype: float64

6 数据筛选

6.1 筛选出big_num为0的 然后去检查一下

big_0 = data_final[data_final['big_num'] == 0]

print(big_0.shape)

big_0.head()

(176, 5)

mer_id

big_num

rec_num

count_0_0

total

4

178086221

0

4

1

4

5

95463330

0

0

0

0

6

50333471

0

0

0

0

10

179178989

0

0

0

0

15

154048692

0

0

0

0

6.2 筛选出rec_num为0的 然后去检查一下

rec_0 = data_final[data_final['rec_num'] == 0]

print(rec_0.shape)

rec_0.head()

(226, 5)

mer_id

big_num

rec_num

count_0_0

total

3

68654281

2

0

1

2

5

95463330

0

0

0

0

6

50333471

0

0

0

0

7

4984182

2

0

1

2

8

182596141

1

0

1

1

检查思路:

通过将上述id与原有数据匹配,selenium到每一个网址,肉眼判断是否有漏的!

7 结论

数据概况:

总共有702个文件夹,即有702个商户。

有176个商户没有大图

有226个商户没有推荐菜

有140个商户没有大图也没有推荐菜

平均每个文件夹有6张图片,一个文件夹下图片最多的有11张!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值