-
Notifications
You must be signed in to change notification settings - Fork 0
/
acrylic-device-vendors.py
33 lines (22 loc) · 1.14 KB
/
acrylic-device-vendors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('../data/in/acrylic-csv/Report-Mapping-building-M-English.csv', delimiter=";")
df2 = df.drop(columns=['Accuracy', 'Altitude', 'SSIDConnectedTo'])
uniqueMacVendors = df2[["MacAddress", "Vendor"]].drop_duplicates()
grouped = uniqueMacVendors.groupby('Vendor')
vendorCount = grouped['Vendor'].count().reset_index(name ='count')
# move all MACs with only one device to "other"
otherRows = vendorCount[vendorCount['count'] <= 1]
# remove all rows with only one device
vendorCountWithoutOthers = vendorCount.drop(otherRows.index)
# add "other" row to dataframe
vendorCountWithoutOthers.loc[len(vendorCountWithoutOthers)] = {'Vendor': 'other devices', 'count': otherRows.count()['count']}
# create the pie chart
plt.figure(figsize=(10, 8))
explode = (0.1, 0, 0, 0, 0.2, 0, 0.3, 0.2, 0.15)
plt.pie(vendorCountWithoutOthers['count'], labels=vendorCountWithoutOthers['Vendor'], startangle=140) # explode=explode
plt.legend(vendorCountWithoutOthers['Vendor'], loc='upper left', bbox_to_anchor=(1, 1))
plt.title('Device vendors (Bluetooth and WiFi)')
plt.axis('equal')
# show pie chart
plt.show()