python分析nginx日志的ip(中篇一)

 利用python的数据分析pandas,numpy,matplotlib模块进行可视化分析,画出图表,这几个模块须要独立安装,安装好后须要用ipython --pylab方式打开。而且要引用MySQLdb模块,为了省事,我把数据统计这一块直接在mysql数据库中执行了,自己需求就不复杂,何况对pandas,matplotlib这几个工具也刚接触不久,持续深刻研究中,能简则简了。python


 

具体步骤以下,切记打开方式用 ipython --pylab
mysql

In [1]: from pandas import DataFrame,Series   
sql

In [2]: import pandas as pd

In [3]: import numpy as np   
数据库

In [4]: import MySQLdb
#引入python数据分析模块工具

In [5]:  mysql_cn= MySQLdb.connect(host='localhost', port=3306,user='root', passwd='root', db='testdb',charset='utf8')
索引

df = pd.read_sql('select count(1) as city_count_num,city from memory group by city order by city_count_num desc limit 10',mysql_cn)ip

#链接数据库,转换成pandas格式的数据
In [7]:  df.index=['suzhou','shanghai','shenzhen','weizhi','qingdao','fuzhou','foshan','changchun','kunming','beijing']
#重建索引,这一步原本不须要的,原本打算是用名字作索引,利用value_counts转换能够直接画图,可死活是乱码,无可奈何,画蛇添足了。你们主要就看“气质”吧。ci

In [8]: df.plot(kind='barh',rot=0)
Out[8]: <matplotlib.axes._subplots.AxesSubplot at 0x7f8fb5148390>数据分析

#画图完成pandas

In [9]: df              #重建索引,转换后的文件格式以下Out[9]:            num citysuzhou     520  苏州市shanghai   374  上海市shenzhen   118  深圳市weizhi     104   未知      #国外的ip,在数据库中是空的,我设置为“未知”了qingdao     82  青岛市fuzhou      81  福州市foshan      81  佛山市changchun   78  长春市kunming     76  昆明市beijing     76  北京市

相关文章
相关标签/搜索