Let’s do an experiment. Ada mirror Wikipedia bahasa indonesia lokal (entah kapan downloadnya).


$ cd wikipedia_id
$ du . -sh
4.1G .
Total ukurannya 4.1 Gigabyte termasuk file gambar, html dan file pendukung lain. Langkah pertama generate data ukuran file hanya yang bertipe html, gunakan du, grep dan cut.

$ du . -ab | grep .html$ | cut -f 1 > /tmp/stats.txt
$ head /tmp/stats.txt
7519
8254
8910
8907
8560
8834
10463
8776
9558
10196
$ wc -l /tmp/stats.txt
277899 /tmp/stats.txt
Ada sekitar 277.899 file html dengan informasi ukuran dalam byte tersimpan pada file stats.txt. Untuk pembuatan graph histogram statistik, saya menggunakan Python modul matplotlib.

#!/usr/bin/env python
# generate_hist.py

import matplotlib.pyplot as plt

data = open(‘/tmp/stats.txt’).readlines()

data = map(int, data)

plt.hist(data, 50)

plt.title(‘Histogram ukuran file HTML Wikipedia ID offline’)
plt.xlabel(‘Ukuran file (byte)’)
plt.ylabel(‘Jumlah file’)

plt.savefig(‘hist1.png’)

hist1.png
Wah, ternyata tampilannya kurang informatif, data terlalu mengelompok pada tiga pertama bins. Sekarang coba plot ukuran file dari yang terkecil sampai terbesar.


#!/usr/bin/env python
# generate_plot.py

import matplotlib.pyplot as plt

data = open(‘/tmp/stats.txt’).readlines()

data = map(lambda x: int(x)/1024, data)
data = set(data)
data = list(data)
data.sort()

plt.plot(data)

plt.title(‘Ukuran file HTML Wikipedia ID offline kecil ke besar’)
plt.ylabel(‘Ukuran file (kilo byte)’)

plt.savefig(‘plot.png’)
plot.png
Terjadi lonjakan ukuran file pada sekitar 500 kB. Kemudian coba exclude file dengan ukuran lebih besar dari 500 kB.


#!/usr/bin/env python
# generate_plot2.py

import matplotlib.pyplot as plt

data = open(‘/tmp/stats.txt’).readlines()

data = map(int, data)
data = filter(lambda x: x/1024 < 500, data)

plt.hist(data, 50)

plt.title(‘Histogram ukuran file HTML Wikipedia ID offline\n< 500 kb’)
plt.xlabel(‘Ukuran file (byte)’)
plt.ylabel(‘Jumlah file’)

plt.savefig(‘hist2.png’)
hist2.png

Sekarang data mengelompok pada sekitar 8 bins yang semuanya terletak pada ukuran kurang dari ~ 100.000 byte. Saya coba perkecil lagi sample data < 100 kB.

#!/usr/bin/env python
# generate_plot3.py

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

data = open(‘/tmp/stats.txt’).readlines()

data = map(lambda x: int(x)/1024 , data)
data = filter(lambda x: x < 100, data)


minor_locator = MultipleLocator(5)
ax = plt.subplot(111)

# menggunakan 100 bins
plt.hist(data, 100)

ax.xaxis.set_minor_locator(minor_locator)

plt.title(‘Histogram ukuran file HTML Wikipedia ID offline\n< 100 kb’)
plt.xlabel(‘Ukuran file (kilo byte)’)
plt.ylabel(‘Jumlah file’)

plt.savefig(‘hist3.png’)
Berikut hasil script terakhir
hist3.png