好久没有更新博客,最近做了一个小项目,利用python爬虫功能,每天记录爬取百度风云榜的数据,然后画出趋势图,从而预测旅游城市热度。
原本准备用pandas直接读取table,后来发现pandas不能打包成exe,就只能放弃,尝试了petl也失败了。
在画图的过程中出现了中文无法显示的问题,查询得出是因为matplotlib的问题,没有引入中文字体。
先上分析代码
import os import pandas as pd rootdir='C:/files' #先删除一下result.csv
#获取目录下面的所有文件路径
def get_all_filepath(rootdir): filepath_list=[] for parent,dirnames,filenames in os.walk(rootdir): for filename in filenames: filepath_list.append(parent+'/'+filename) #print "the full name of the file is:" + os.path.join(parent,filename) return filepath_list filepath_list=get_all_filepath(rootdir) print filepath_list df=pd.read_csv(filepath_list[0]) dfs=[] for filepath in filepath_list[1:len(filepath_list)-1]: #将字符串转化成变量 #locals()['var']=2345 #vars()['var']=567 print filepath dfs.append(pd.read_csv(filepath)) for item in dfs: df=pd.merge(df,item,how='outer',on='city', suffixes=('_x', '_y')) #df.to_csv('C:/files/result.csv',encoding='gbk') #df1=df[df['city'].isin([u'香港',u'马尔代夫',u'青岛',u'三亚',u'济州岛',u'东京'])] df1=df[df['city'].isin(['香港','马尔代夫','青岛','三亚','济州岛','东京'])] #df.query("city in ('香港','马尔代夫')") #df1.query("city not in ('香港','马尔代夫')") df2=df1.T df2.columns=df2.iloc[0,:] df2=df2.drop('city',axis=0).astype(float) df2['day']=pd.date_range('20160127','20160218') print df2.columns.name #df2.index.name df2.columns.name=u'城市'#df2.index.name也可以赋值。 df2.plot(x='day',title=u'目的地城市搜索趋势')#不支持中文。#不支持中文,是因为中文字体问题,pandas的绘图基于matplotlib所以把matplotlib的显示 #中文的问题解决了,自然中文就行显示出来了,参见http://www.pythoner.com/200.html
结果如下: