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

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

python分析nginx日志的ip(中篇一)_第1张图片


 

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

In [1]: from pandas import DataFrame,Series   

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)

#连接数据库,转换成pandas格式的数据
In [7]:  df.index=['suzhou','shanghai','shenzhen','weizhi','qingdao','fuzhou','foshan','changchun','kunming','beijing']
#重建索引,这一步本来不需要的,本来打算是用名字做索引,利用value_counts转换可以直接画图,可死活是乱码,迫不得已,多此一举了。大家主要就看“气质”吧。

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

#画图完成

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


你可能感兴趣的:(python分析nginx日志的ip(中篇一))