潜力

来源:互联网 发布:美折促销软件 编辑:程序博客网 时间:2024/05/01 09:30
# -*- coding: utf-8 -*-"""Created on Thu Dec  7 13:10:20 2017@author: Administrator"""import pymongoimport pandasimport pandas as pdimport matplotlib.pyplot as plt  import numpy as np import pylab as plimport datetimect='上海'rl='长宁'lk='天山河畔花园'client1 = pymongo.MongoClient('192.168.0.136',27017)db1 = client1.fangjia_statstat = db1.test2_1013_lgclient = pymongo.MongoClient('192.168.0.136',27017) #'192.168.0.65',27777db = client.fangjiaseawater = db.district_statdef some_district_information(ct,rl,lk):    #client = pymongo.MongoClient('192.168.0.60',27017) #'192.168.0.65',27777    #db = client.fangjia    #seawater = db.district_stat    #seawater.find_one()    query = {"city":ct,"region":rl,"district_name":lk}    fields1 = {"city":1,"region":1, "district_name":1,               'calc_value':1,'calc_value':1,'weekend':1}    lt= seawater.count(query)    #print(lt)    pos = list()    for s in seawater.find(query,fields1).limit(lt):        pos.append(s)        data=pandas.DataFrame(pos)    del pos    return datadd1=some_district_information(ct,rl,lk)aset={'weekend','region','district_name','city','calc_value'}bset=set(dd1.columns)if   aset & bset == aset:    dd=dd1[['weekend','region','district_name','city','calc_value']].dropna()    if dd.shape[0]>5:        vv=dd.sort_values(by=['weekend'])        #df=vv.loc[380:]        fr=vv.shape[0]        print('fr=',fr)        print('****************')        num=min(120,fr)        df=vv.iloc[fr-num:fr]        print('PPPPPPPPPPPPPPPPP')        df.index=list(range(num))        x=list(df.index)        #x=list(df['weekend'])        y=list(df['calc_value'])        z1 = np.polyfit(x, y, 10)        # 生成多项式对象{        p1 = np.poly1d(z1)        print(z1)        print(p1)        xx=df['weekend']        plt.figure(num=None, figsize=(10, 10))        plt.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体        plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问        plt.figure()        plt.plot(xx,y,label= '原数据')        #plt.scatter(x,y,s=20,c='red',marker='o',alpha=0.9,label= '原数据')  c=p1(x)def choose(x,f,cal):    a=f(x)    if abs(a-cal)/cal<0.03:        return cal    else:        return acc=list()for i in df.index:    xx=i    f=p1    cal=df['calc_value'][i]    #print(cal)    b=choose(xx,f,cal)    #print('b=',b)    cc.append(int(b))df['拟合过滤']=cc"""timeStamp = int(time.mktime(timeArray))timeStamp == 1381419600"""leng=list(range(len(cc)-1))def rate(i):    a0=cc[i]    a1=cc[i+1]    return int(10000*(a1-a0)/a0)dd=list(map(rate,leng))dg=[0]dg.extend(dd)del dd,leng,y,vvdf['增长率']=dgxx=df['weekend']            plt.plot(xx,c,c='black',label= '拟合后')#plt.plot(df['weekend'],c,c='black',label= '拟合后')#plt.scatter(x,cc,s=20,c='green',marker='*',alpha=0.9,label= '原数据')pl.legend()plt.show()import  dateutildef before_month_lastday(ti):    today=dateutil.parser.parse(str(ti))    first = datetime.date(day=1, month=today.month, year=today.year)    lastMonth = first + datetime.timedelta(days=ti*31)    print(lastMonth)    cc=str(lastMonth.year)+str(lastMonth.month)+str(lastMonth.day)    return (lastMonth)    #return int(cc)def fga(p):    return p*4+120bb=df[['calc_value','weekend']]bb1=bb.iloc[80:120]bby=list(bb1['calc_value'])bbx=list(bb1.index)bbz1 = np.polyfit(bbx, bby,2)# 生成多项式对象{bbp1 = np.poly1d(bbz1)xxx=x[80:120]bbc=bbp1(xxx)xcx=df['weekend'][80:120]plt.figure(num=None, figsize=(8, 6))plt.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问plt.plot(xcx,bbc,c='black',label='拟合后')plt.plot(xcx,bb1['calc_value'])#plt.scatter(xcx,bb1['calc_value'],s=20,c='green',marker='*',alpha=0.9,label= '原数据')bnb=[1,2,3,4,5]bnb1=list(map(before_month_lastday,bnb))bnb2=list(map(fga,bnb))vvb=bbp1(bnb2)vvb=list(map(int,vvb))print('预测价格',vvb)print('日期',bnb1)plt.figure(num=None, figsize=(10, 6))plt.plot(bnb1,vvb)#bbc1="""xcx=df['weekend']plt.plot(xcx,c,c='black',label= '拟合后')"""print(before_month_lastday(1))
# -*- coding: utf-8 -*-"""Created on Sun Nov 12 16:21:34 2017@author: Administrator"""import pymongoimport pandasimport pandas as pdimport matplotlib.pyplot as plt  import numpy as np import pylab as plimport sys, timeimport ppct='上海'rl='闵行'lk='和风家园'def pply(ct,rl,lk):    client1 = pymongo.MongoClient('192.168.0.136',27017)    db1 = client1.fangjia_stat    stat = db1.test2_1013_lg    client = pymongo.MongoClient('192.168.0.60',27017) #'192.168.0.65',27777    db = client.fangjia    seawater = db.district_stat    def some_district_information(ct,rl,lk):        #client = pymongo.MongoClient('192.168.0.60',27017) #'192.168.0.65',27777        #db = client.fangjia        #seawater = db.district_stat        #seawater.find_one()        query = {"city":ct,"region":rl,"district_name":lk}        fields1 = {"city":1,"region":1, "district_name":1,                   'calc_value':1,'calc_value':1,'weekend':1}        lt= seawater.count(query)        #print(lt)        pos = list()        for s in seawater.find(query,fields1).limit(lt):            pos.append(s)            data=pandas.DataFrame(pos)        del pos        return data    dd1=some_district_information(ct,rl,lk)    aset={'weekend','region','district_name','city','calc_value'}    bset=set(dd1.columns)    if   aset & bset == aset:        dd=dd1[['weekend','region','district_name','city','calc_value']].dropna()        if dd.shape[0]>5:            vv=dd.sort_values(by=['weekend'])            #df=vv.loc[380:]            fr=vv.shape[0]            print('fr=',fr)            print('****************')            num=min(120,fr)            df=vv.iloc[fr-num:fr]            print('PPPPPPPPPPPPPPPPP')            df.index=list(range(num))            x=list(df.index)            #x=list(df['weekend'])            y=list(df['calc_value'])            z1 = np.polyfit(x, y, 36)            # 生成多项式对象{            p1 = np.poly1d(z1)            print(z1)            print(p1)            plt.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体            plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问            plt.figure()            plt.plot(x,y,label= '原数据')            plt.scatter(x,y,s=20,c='red',marker='o',alpha=0.9,label= '原数据')            """            p=p1            def ff(x):                a=len(p)                b=p[0]*1+p[1]*x+p[2]*x**2+p[3]*x**3+p[4]*x**4+p[5]*x**5                return b            c=list(map(ff,x))            """            c=p1(x)            def choose(x,f,cal):                a=f(x)                if abs(a-cal)/cal<0.03:                    return cal                else:                    return a            cc=list()            for i in df.index:                xx=i                f=p1                cal=df['calc_value'][i]                #print(cal)                b=choose(xx,f,cal)                #print('b=',b)                cc.append(int(b))            df['拟合过滤']=cc            """            timeStamp = int(time.mktime(timeArray))            timeStamp == 1381419600            """            leng=list(range(len(cc)-1))            def rate(i):                a0=cc[i]                a1=cc[i+1]                return int(10000*(a1-a0)/a0)            dd=list(map(rate,leng))            dg=[0]            dg.extend(dd)            del dd,leng,y,vv            df['增长率']=dg            """            def fgg(df,cc):                leng=len(cc)-1                df['增长率']=0                for i in range(leng):                    a0=cc[i]                    a1=cc[i+1]                    ff=(a1-a0)/a0                    df['增长率'][i+1]=ff                return df            #dff=fgg(df,cc)            """            def save_to_mongo(i):                ct=df['city'][i]                rl=df['region'][i]                d_name=df['district_name'][i]                py=cc[i]                ratio=dg[i]                date=df['weekend'][i]                stat.save({"city":ct,"region":rl,"district_name":d_name,                          "weeedend":date,"拟合后的价格":py,'增长率':ratio})                                  #"增长率":df['增长率'][i]})            #map(save_to_mongo,list(df.index))            #cti=['上海']            """            region=region_list(i)[0:]            for j in region:                lf=region_district_list(i,j)                testFL=lf['name']                import time                from multiprocessing import Pool                if __name__ == "__main__" :                  startTime = time.time()                  testFL = df.index                  pool = Pool(10)#可以同时跑10个进程                  pool.map(save_to_mongo,testFL)                  pool.close()                  pool.join()                     endTime = time.time()                  print ("time :", endTime - startTime)            """                    """            import time            startTime = time.time()            list(map(save_to_mongo,df.index))            endTime = time.time()            print ("time :", endTime - startTime)            """            """            import time            startTime = time.time()            for i in df.index:                save_to_mongo(i)            endTime = time.time()            print ("time :", endTime - startTime)            """                """            import time            from multiprocessing import Pool            if __name__ == "__main__" :              startTime = time.time()              testFL = df.index              pool = Pool(10)#可以同时跑10个进程              pool.map(save_to_mongo,testFL)              pool.close()              pool.join()                 endTime = time.time()              print ("time :", endTime - startTime)            """             """            #print(df)            for i in df.index:                ct=df['city'][i]                rl=df['region'][i]                d_name=df['district_name'][i]                py=cc[i-380]                ratio=dg[i-380]                date="2017-11-17"                client1 = pymongo.MongoClient('192.168.0.136',27017)                db1 = client1.fangjia_stat                stat = db1.test2_1013_lg                stat.save({"city":ct,"region":rl,"district_name":d_name,                           "weeedend":date,"pp":py                           })                #stat.save({"city":ct,"region":rl,                           #"district_name":d_name,                       #"拟合过滤":python_cal, "weeedend":date})            """                 plt.plot(x,c,c='black',label= '拟合后')            plt.scatter(x,cc,s=20,c='green',marker='*',alpha=0.9,label= '原数据')            pl.legend()            plt.show()def region_list(city):    client = pymongo.MongoClient('192.168.0.136',27017)     db = client.fangjia    region = db.region_block    #seawater.find_one()    query = {"city":city,"category":"region"}    fields1 = {"name":1}    pos = list()    for s in region.find(query,fields1):        pos.append(s)    data=pandas.DataFrame(pos)    del pos    return data['name']def region_district_list(ct,rl):    import pandas    client1 = pymongo.MongoClient('192.168.0.136',27017)    db1 = client1.fangjia    seaweed1 = db1.seaweed    query1 = {"status":0,"cat":"district","city":ct,"region":rl}    fields1 = {"lat2":1,"lng2":1, "city":1,"region":1,               "cat":1,"name":1,'estate_type2':1,'alias':1}    lct= list()    for s in seaweed1.find(query1, fields1):        lct.append(s)    lf=pandas.DataFrame(lct)    return lf#cti=['上海','北京','广州','深圳']"""cti=['上海']for ct in cti:    region=region_list(ct)    for rl in region[10:]:        dictn=region_district_list(ct,rl)        disname=dictn['name']        for lk in disname:            print('ct=',ct,'rl=',rl,'lk=',lk)            pply(ct,rl,lk)"""ct='上海'rl='闵行'lk='上海康城'print('ct=',ct,'rl=',rl,'lk=',lk)pply(ct,rl,lk)
原创粉丝点击