首先,读入数据集,共包含6019条数据,4个变量:姓名name,出生年月birthday,公司company,落户分数score`
luohu_data = pd.read_csv('bj_luohu.csv',index_col='id')
luohu_data.head()
看一下落户分数的大致情况,可以看出2018年积分落户最低分为90.75分,最高分为122.59分,平均分为95.65分。
luohu_data.describe()
将数据按照公司进行分组统计,共有3430个公司,只有1人成功落户的公司数量为2626,占落户数据中所有公司的76.7%
company_data = luohu_data.groupby('company',as_index=False).count()[['company','name']]
company_data.rename(columns={'name':'people_count'},inplace=True)
company_sorted_data = company_data.sort_values('people_count',ascending=False)
print(len(company_sorted_data[company_sorted_data['people_count'] == 1]))
print(1.0*len(company_sorted_data[company_sorted_data['people_count'] == 1]) / len(company_sorted_data))
下面来看一下落户人数最多的前50个公司,落户人数最多的公司是北京华为数字技术有限公司;计算前50名公司落户人数总和为1122,占18年所有积分落户人数的比例为18.9%,也就是说,前50个公司占据了接近五分之一的落户人数
company_sorted_data.head(50)
print(1.0*company_sorted_data.head(50)['people_count'].sum()/len(luohu_data))
将分数按照5分的间距进行分段统计,并进行作图,90-95的分段人数最多,分数段越高人数越少
bins = np.arange(90,130,5)
bins = pd.cut(luohu_data['score'],bins)
bin_counts = luohu_data['score'].groupby(bins).count()
#处理index
bin_counts.index = [str(x.left) + '-' + str(x.right) for x in bin_counts.index]
bin_counts
bin_counts.plot(kind='bar',color='navy',alpha=0.6,rot=0)
接下来我们对落户人的年龄进行分析,数据集中只给出了落户人的出生年月,因此首先我们需要计算一下落户人的年龄。落户的人群中年龄最小的是34岁,最大为61岁,平均年龄为43岁。
luohu_data['age'] = (pd.to_datetime('2019-09') - pd.to_datetime(luohu_data['birthday'])) / pd.Timedelta('365 days')
luohu_data.describe()[['age']]
下面将年龄进行分段并分组统计人数,40-45岁分数段中积分落户的人数最多
bins = np.arange(20,70,5)
bins = pd.cut(luohu_data['age'],bins)
bin_counts = luohu_data['age'].groupby(bins).count()
#处理index
bin_counts.index = [str(x.left) + '-' + str(x.right) for x in bin_counts.index]
bin_counts.plot(kind='bar',color='navy',alpha=0.6,rot=0)