matplotlib数据可视化分析——知乎用户地区构成及关注行为分析

现有数据:

1.第六次人口普查各地常住人口
2.2017年知乎用户基本信息

分析目标:

1.知乎用户地区分布状况,筛选知友数量分布top20地区。
2.结合常住人口数据,统计出知友密度最高的top20地区。
3.根据关注情况,查看各大学校友相互关注的程度。

导入工具包,读取数据:

matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第1张图片
读取数据

知乎用户数据有缺失值需要清洗,另外 居住地 字段不包含“省”、“市”字样。这里留意,后面会提到。

matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第2张图片
知乎用户数据概览

人口普查数据中可以观察到,在各省份常住人口总和之后,紧跟着的是该省份各市人口的统计量。
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第3张图片
人口普查数据概览

数据清洗、合并、标准化处理

定义函数data_cleaning(df),对缺失数据填充,对于“object”类型字段填充“缺失数据”字样,其他类型一律填充0.

matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第4张图片
数据清洗函数

运行函数,清洗知乎数据data1,并查看结果:
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第5张图片
数据清洗并查看

统计 居住地字段值的个数,并查看前21条。
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第6张图片
地区知友数

上图可以看到,第一行是缺失数据,可通过索引号[1:]剔除。由于该行代码是Series类型,可将其转化为Dataframe。
结合普查人口数据,可将两个表连接,以便矩阵计算求地区知友密度。需要注意的是,知友 居住地字段是不含“省”“市”字样的,故需要对普查人口数据清洗后才可将两个表连接。
首先,对普查人口数据data2的 地区字段进行两次字符替换,采用df[colunms].str.repalce(old,new,count)的方法,替换后的字段放入新增加了 所在地列。
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第7张图片
普查人口数据清洗

将两表通过地点连接,生成合并后的新列表 merge
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第8张图片
通过地点将两表连接

知友数量知友密度字段做标准化处理:

采用公式:标准化计算结果 = (X - Xmin) / (Xmax - Xmin)

设置自定义函数standard(df,col),并返回一个新生成的标准化处理后的字段col_std。运行两次函数,并查看函数运行后的合并列表。

matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第9张图片
标准化处理

上图输出结果,index是数据编号,通过set_index()方法将 所在地字段变为新的index,并查看结果。另外,将标准化处理后的两个字段按降序排列,并选取top20。
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第10张图片
所在地变为index

图表绘制

为每个柱子上添加字符,该字符是保留两位小数后的对相应字段标准化处理后的结果。

matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第11张图片
图表绘制
matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第12张图片
1.png

关注者人数表示某校用户的个人粉丝数,关注人数表示某校用户所关注的人数。按照教育经历即用户所在学校名称分组,并对粉丝数和关注人数求和。然后按照"关注","关注者"两个 字段降序,根据输出的结果将其中不合适的行删除。

matplotlib数据可视化分析——知乎用户地区构成及关注行为分析_第13张图片
image.png

drop删除不合适的行

画图:

点的大小用粉丝数量衡量,点越大,粉丝数越多。
颜色深浅表示关注人数的多寡。
红绿辅助线分别标出粉丝数和关注人数的平均数。

2.png

由上图可得出结论:浙大用户的粉丝数最多。武汉大学的用户关注他人最多,华中科技大、北大、浙大次之。

你可能感兴趣的:(matplotlib数据可视化分析——知乎用户地区构成及关注行为分析)