# 加载所需库
import pandas as pd
import numpy as np
import seaborn as sns
from pandas import DataFrame,Series
import matplotlib.pyplot as plt
a=pd.read_excel('/Users/enniu/Desktop/cgfk.xls') #加载8.24以及之前成功放款的用户数
a.columns=['amount','user_id','end_day','reloan'] #重命名列名称
#a.info() #查看概况
a['end_day']=pd.to_datetime(a['end_day']) #将object改为datetime64
a['start_day']=pd.to_datetime('2016-08-18') #添加新的一行,表示推送日期,需自己手动更新
a['date_dif']=a['end_day']-a['start_day'] #计算时间差
#a['user_id'].is_unique #检查是否user_id唯一
#len(a['user_id'].unique()) #查看唯一值的数量
#加载推送的名单8.18 push
b=pd.read_excel('/Users/enniu/Desktop/1yuez.xlsx',5) #header=None表示取消列名,5表示第5张工作表,从0开始编号
#b=b.ix[:,0] #选择第一列user_id研究,此例省去该步,因为merge需要2个dataframe
a_b=pd.merge(a,b,how='inner') #2表连接
a_b.ix[:,:6] #选择前6列研究
#将reloan>0的部分统一替换成=1
for i in range(len(a_b['reloan'])):
if a_b['reloan'][i]>0:
a_b['reloan'][i]=1 #将reloan>0的变为1
#c=dd['user_id']
#dd=a_b.groupby(['date_dif','reloan']).count() #按date_dif,reloan分组
dd=a_b.groupby('date_dif').count() #按date_dif 分组
ee=dd['user_id'][5:] #从第5个开始研究
#绘制图表
#折线图
ff=range(7)
plt.plot(ff,ee,alpha=0.9) #plot x轴为ff ,表示天数差,y轴ee 表示对应数量
plt.xlabel('DAY')
plt.ylabel('amount')
plt.title('8.18 push fangkuandanliang')
#针对多个axes,指定区域作图
fig,axes=plt.subplots(2,2) #建立2行2列的绘图区域
axes[1,1].plot(ff,ee,alpha=0.5) #在最末的图表作图,axes 的行、列索引从0开始
axes.set_xlabel('day') #设置横坐标轴标题为‘day’。跟上面的区别在于,此处是更为面向对象的原生API,在处理多个subplot时便于指定哪个subplot,而plt.plot则只对当前或最近创建的AxesSubplot起作用,是偏向于过程型的pyplot接口
#柱状图
plt.barh(x,y, align='center', alpha=0.1) #align='center'表示轴线位于坐标轴中间,alpha表示透明度
网友评论