2.2 搜索就是所有

刚刚情人节过去,也想来一篇数据分析的实例。别黑我,别恶心我。从网上找了一份2000W的数据,粗略处理后,导入MySql,试着看看MySql这2000W数据的效果如何。

mysql> select gender,count(*) from b_open_room where gender='M';  +--------+----------+  | gender | count(*) |  +--------+----------+  | M      | 12771175 |  +--------+----------+  1 row in set (41.92 sec)    mysql> select gender,count(*) from b_open_room where gender='F';  +--------+----------+  | gender | count(*) |  +--------+----------+  | F      |  6478109 |  +--------+----------+  1 row in set (41.73 sec)

处理下数据,发下开房的数据男女比例2:1,好像也是符合我国国情的。

当然也可以用现在时下流行的Python来直接处理该文本,首先拿到这2000W的开房数据的身份证ID,进行清洗。如下:

def clearRoom():      ##data=pd.read_csv("d:/data/roomSimple.csv",usecols=['CtfId'])      data=pd.read_csv("d:/data/shifenzheng.csv")      print 'type:',type(data['CtfId'])        #从20065154变成了18667528行      data=data[data['CtfId'].str.len()==18]      data['sex']=data['CtfId'].str[16]        garbage=['*','A','-','p','d','o','�','e','+','/','L','t']      userful=['1','2','3','4','5','6','7','8','9','0']        #总共 18666343 行      data=data[data['sex'].isin(userful)]      data['sex2']=(data['sex'].astype('int')%2).replace(0,'F').replace(1,'M')      data['age']=data['CtfId'].str[6:10]      data.to_csv("d:/data/roomCtfId.csv")        print data.head(15)      #print '性别',data.drop_duplicates('sex')      print '总共',len(data.index),'行'

清洗完毕后,对数据的性别进行统计:

def countRoomSex():      gender=pd.read_csv("d:/data/roomCtfId.csv",usecols=['sex2'])      #print type(gender)      print gender.head(10)      print '总共',len(gender.index),'行'        #统计group by元素所占总数      sizeSeries=gender.groupby('sex2').size()      print sizeSeries

     对开房的年龄进行一个简单分析:

def countRoomAge():      ageDF=pd.read_csv("d:/data/roomCtfId.csv",usecols=['age'])      #data=data[data['CtfId'].str.len()==18]      ageDF=ageDF[(ageDF['age']>1920) & (ageDF['age']<2012)]      #ageDF.drop_duplicates('age').to_csv("d:/age.csv")      #print ageDF.head(300).to_csv("d:/age.csv")      ageSeries=ageDF.groupby('age').size()      #print ageSeries        fig=plt.figure()      ax1=fig.add_subplot(111)      ageDF=DataFrame(ageSeries)      plt.plot(ageDF)      plt.title(u'开房数据-年龄分析', fontproperties='SimHei')      xmajorLocator   = MultipleLocator(10) #将x主刻度标签设置为10的倍数      ax1.xaxis.set_major_locator(xmajorLocator)        #设置坐标轴标签      ax1.set_xlabel(u'出生年份', fontproperties='SimHei')      ax1.set_ylabel(u'开房总次数', fontproperties='SimHei')        plt.show()

由此可见,在中国,开房的男性是女性的两倍,年龄集中在80末。当然这是12年的数据了,这些年峰值肯定会往后。

附开房记录查询地址:开房记录查询