今天做了一些簡單的數據分析和統計,記錄一下。數據格式如下:
name字段代表廠商,device字段代表設備,type字段是設備型號
1. 主函數
if __name__ == '__main__':
data = pd.read_csv('testData.csv')
ds = data_solution()
ds.dealwith_server(data)
ds.dealwith_save(data)
ds.dealwith_firewall(data)
ds.view_all(data)
ds.view_all2(data)
read_csv是pandas的一個常用功能。
2. 統計各個廠商的服務器(server)
def dealwith_server(self,data):
hw_server = data[(data['name']=='HW')&(data['device']=='server')]
hw_server_count = hw_server.device.count()
tx_server = data[(data['name']=='TX')&(data['device']=='server')]
tx_server_count = tx_server.device.count()
h3_server = data[(data['name']=='H3')&(data['device']=='server')]
h3_server_count = h3_server.device.count()
y = [hw_server_count,tx_server_count,h3_server_count]
x = ['HW','TX','H3']
plt.bar(x,y, facecolor='#9999ff', edgecolor='white',width=0.4,label='server') # 指定x,y座標以及柱狀圖的顏色
plt.legend(loc='upper right')
for x, y in zip(x, y):
plt.text(x , y + 0.05, '%d' % y, ha='center', va='bottom')
plt.show()
其中(data['name']=='HW')&(data['device']=='server') 是pandas中的刪選條件,也就是按照HW和server進行篩選,選出HW的server,然後再統計有多少臺。
3. 統計各個廠商的存儲
def dealwith_save(self,data):
hw_save = data[(data['name'] == 'HW') & (data['device'] == 'save')]
hw_save_count = hw_save.device.count()
tx_save = data[(data['name'] == 'TX') & (data['device'] == 'save')]
tx_save_count = tx_save.device.count()
h3_save = data[(data['name'] == 'H3') & (data['device'] == 'save')]
h3_save_count = h3_save.device.count()
y = [hw_save_count, tx_save_count, h3_save_count]
x = ['HW', 'TX', 'H3']
plt.bar(x, y, facecolor='#00BFFF', edgecolor='white', width=0.4, label='save') # 指定x,y座標以及柱狀圖的顏色
plt.legend(loc='upper right')
for x, y in zip(x, y):
plt.text(x, y + 0.05, '%d' % y, ha='center', va='bottom')
plt.show()
4. 統計各個廠商的防火牆
def dealwith_firewall(self,data):
hw_firewall = data[(data['name'] == 'HW') & (data['device'] == 'firewall')]
hw_firewall_count = hw_firewall.device.count()
tx_firewall = data[(data['name'] == 'TX') & (data['device'] == 'firewall')]
tx_firewall_count = tx_firewall.device.count()
h3_firewall = data[(data['name'] == 'H3') & (data['device'] == 'firewall')]
h3_firewall_count = h3_firewall.device.count()
y = [hw_firewall_count, tx_firewall_count, h3_firewall_count]
x = ['HW', 'TX', 'H3']
plt.bar(x, y, facecolor='#FF1493', edgecolor='white', width=0.4, label='firewall') # 指定x,y座標以及柱狀圖的顏色
plt.legend(loc='upper left')
for x, y in zip(x, y):
plt.text(x, y + 0.05, '%d' % y, ha='center', va='bottom')
plt.show()
5. 統計所有設備的總體情況
def view_all(self,data):
hw = data[data['name']=='HW'].device.count()
tx = data[data['name']=='TX'].device.count()
h3 = data[data['name']=='H3'].device.count()
y = [hw,tx,h3]
x = ['HW','TX','H3']
plt.bar(x, y, facecolor='#00FFFF', edgecolor='white', width=0.4, label='all_device') # 指定x,y座標以及柱狀圖的顏色
plt.legend(loc='upper left')
for x, y in zip(x, y):
plt.text(x, y + 0.05, '%d' % y, ha='center', va='bottom')
plt.show()