数据分析项目-北京积分落户

文章目录

    • 一:分析思路
    • 二:分析过程
      • 1. 数据获取
      • 2. 数据清理
      • 3. 分析指标和纬度的确立
      • 4. 数据处理
        • 1、落户分数分布区间处理
        • 2、落户年龄段处理
        • 3、落户的人所属公司情况处理
        • 4、姓氏排名前10处理
    • 三:可视化与结论
        • 1、落户分数分布区间图表
        • 2、落户年龄段分析
        • 3、落户的人所属公司情况
        • 4、姓氏排名前10分析

一:分析思路

当我们拿到一份数据,并不是上来就是干,我们一定要先去理清一下我们的思路,
大体流程是:

  • 我们有什么?(什么数据,什么格式,干不干净?)
  • 需求要什么?(要的有那些指标,分为那些维度,更新频率是?)
  • 怎样达到目的?(怎么处理数据,用什么工具)
  • 会有那些困难?
  • 是否能优化?
  • 如何展现?

二:分析过程

1. 数据获取

导入相应的包,读取数据源。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('./bj_luohu.csv')

整体了解数据

#查看前几条数据
df.head()
#查看描述
df.describe()
#查看各列数据
df.count()  --6019条 比较干净

2. 数据清理

对我们的数据有了初步了解后,就可以确定我们要进行那些清洗的步骤了。主要从以下方面去清洗:

1、null值
2、重复值
3、异常值(主要是从业务逻辑上来判断)

#null值
df.drop(df[df['列名'].isnull()].index, inplace=True)
#重复值
df[df.duplicated()]

主要操作方式
A:删除 (异常值数据量不大)
B:填充
我们这份数据已经非常感觉,所以就不贴相应清洗代码了。

3. 分析指标和纬度的确立

指标和维度的确立,是基于我们拿到了什么,都有什么价值而来。本文的分析维度有:
1、落户分数分布区间
2、落户年龄段分析
3、落户的人所属公司情况,排出前10
4、姓氏排名前10(纯属兴趣)

4. 数据处理

1、落户分数分布区间处理

#开始分析
# 分析工具 python 
# #分析点
# 1、落户分数分布区间
df.groupby('score',as_index=False).count()
#分桶 方便区间查看
bins_arr = np.arange(90,130,5)

bins = pd.cut(df['score'],bins_arr)
score_g = df['score'].groupby(bins).count()
score_g.index = [ str(x.left) +"~" + str(x.right) for x in score_g.index]
import matplotlib.pyplot as plt
#导入,解决中文乱码中文
plt.rcParams['font.sans-serif']='Simhei'
#做柱形图
#设置图片大小
plt.figure(figsize=(15,8),dpi=80)
score_g.plot(kind='bar',color='#f47983')
#设置网格线
plt.grid(alpha=0.7,linestyle='--')
#设置x标签的透明度
plt.xticks(rotation=45)
plt.title('积分各区间人数')
plt.xlabel('积分区间')
plt.ylabel('人数')
plt.show

2、落户年龄段处理

# 2、落户年龄段分析

#新建age列
df['age'] =  (pd.to_datetime('2020-3')-pd.to_datetime(df['birthday']))/pd.Timedelta('365 days')
df['age'].head()
bins_arr = np.arange(40,65,5)
bins = pd.cut(df['age'],bins_arr)
age_group = df['age'].groupby(bins).count()
age_group

age_group.index = [ str(x.left) +"~" + str(x.right) for x in age_group.index]
import matplotlib.pyplot as plt
#导入,解决中文乱码中文
plt.rcParams['font.sans-serif']='Simhei'
#做柱形图
#设置图片大小
plt.figure(figsize=(10,8),dpi=80)
age_group.plot(kind='bar',color='#96ce54')
#设置网格线
plt.grid(alpha=0.5,linestyle='--')
#设置x标签的透明度
plt.xticks(rotation=45)
plt.title('年龄各区间人数')
plt.xlabel('年龄区间')
plt.ylabel('人数')

3、落户的人所属公司情况处理


# 3、落户的人所属公司情况,排出前10
company_group = df.groupby('company',as_index=False).count()[['company','id']]
# company_group.sort_values()
#重命名列
company_group.rename(columns={'id':'count'},inplace=True)
#排序
company_group = company_group.sort_values('count',ascending=False)
company_group[:10]

4、姓氏排名前10处理

# 4、姓氏排名前10(纯属兴趣)
df.head()
#新建列
    
df['last name'] = [i[:1] for i in df['name']]
name_group = df.groupby('last name',as_index=False).count()[['last name','id']]
# company_group.sort_values()
#重命名列
name_group.rename(columns={'id':'count'},inplace=True)
#排序
name_group = name_group.sort_values('count',ascending=False)
top10_name = name_group[:10]
x = top10_name['last name']
y = top10_name['count']
plt.figure(figsize=(20,7),dpi=80)
top10_name.plot(kind='bar',color='#e29c45')
#设置x,y轴的刻度标签
plt.xticks(np.arange(len(x)),x)

plt.show()

三:可视化与结论

经过数据处理之后,结果很快跃然纸上了。下面我们可以根据可视化的图表的初步结论。

1、落户分数分布区间图表

数据分析项目-北京积分落户_第1张图片
根据图表分析,能得出:
大部分能够落户北京的人,分数段还是在90-100区间。
如果需要进一步分析 我们还可以看一下90-100区间,按2分为步长,看一下分布情况。

数据分析项目-北京积分落户_第2张图片

2、落户年龄段分析

可以了解一下age列的大体情况,便于分区间处理
数据分析项目-北京积分落户_第3张图片
分组后得到的结果:
数据分析项目-北京积分落户_第4张图片
做可视化处理:
数据分析项目-北京积分落户_第5张图片
细分,以2为步长,看一下34-56区间的具体情况
数据分析项目-北京积分落户_第6张图片
以上,不难看出,这批落户人群,也是过了‘不惑’年龄之后得到落户的居多,所以大家不必心急,更上大部分人的节奏即可。

3、落户的人所属公司情况

对公司进行处理后得到:
数据分析项目-北京积分落户_第7张图片
根据排名前10的公司不难看出,实力强大的公司会为落户提供一定保障,所以是否可以从选择一个好的公司开始,步步为营呢?

4、姓氏排名前10分析

数据分析项目-北京积分落户_第8张图片
出于兴趣,看了一下姓氏的前10,只能说,基数大的好处还是体现出来了,“张,王、李”名列前茅。

你可能感兴趣的:(数据分析)