现有数据:
1.第六次人口普查各地常住人口
2.2017年知乎用户基本信息
分析目标:
1.知乎用户地区分布状况,筛选知友数量分布top20地区。
2.结合常住人口数据,统计出知友密度最高的top20地区。
3.根据关注情况,查看各大学校友相互关注的程度。
导入工具包,读取数据:
知乎用户数据有缺失值需要清洗,另外 居住地 字段不包含“省”、“市”字样。这里留意,后面会提到。
人口普查数据中可以观察到,在各省份常住人口总和之后,紧跟着的是该省份各市人口的统计量。
数据清洗、合并、标准化处理
定义函数data_cleaning(df),对缺失数据填充,对于“object”类型字段填充“缺失数据”字样,其他类型一律填充0.
运行函数,清洗知乎数据data1,并查看结果:
统计居住地字段值的个数,并查看前21条。
上图可以看到,第一行是缺失数据,可通过索引号[1:]剔除。由于该行代码是Series类型,可将其转化为Dataframe。
结合普查人口数据,可将两个表连接,以便矩阵计算求地区知友密度。需要注意的是,知友居住地字段是不含“省”“市”字样的,故需要对普查人口数据清洗后才可将两个表连接。
首先,对普查人口数据data2的地区字段进行两次字符替换,采用df[colunms].str.repalce(old,new,count)的方法,替换后的字段放入新增加了所在地列。
将两表通过地点连接,生成合并后的新列表merge
对知友数量、知友密度字段做标准化处理:
采用公式:标准化计算结果 = (X - Xmin) / (Xmax - Xmin)
设置自定义函数standard(df,col),并返回一个新生成的标准化处理后的字段col_std。运行两次函数,并查看函数运行后的合并列表。
上图输出结果,index是数据编号,通过set_index()方法将所在地字段变为新的index,并查看结果。另外,将标准化处理后的两个字段按降序排列,并选取top20。
图表绘制
为每个柱子上添加字符,该字符是保留两位小数后的对相应字段标准化处理后的结果。
关注者人数表示某校用户的个人粉丝数,关注人数表示某校用户所关注的人数。按照教育经历即用户所在学校名称分组,并对粉丝数和关注人数求和。然后按照"关注","关注者"两个 字段降序,根据输出的结果将其中不合适的行删除。
画图:
点的大小用粉丝数量衡量,点越大,粉丝数越多。
颜色深浅表示关注人数的多寡。
红绿辅助线分别标出粉丝数和关注人数的平均数。
由上图可得出结论:浙大用户的粉丝数最多。武汉大学的用户关注他人最多,华中科技大、北大、浙大次之。