刚刚情人节过去,也想来一篇数据分析的实例。别黑我,别恶心我。从网上找了一份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年的数据了,这些年峰值肯定会往后。
附开房记录查询地址:开房记录查询