背景
背景:利用Python分析快手APP全国大学生用户数据,发现: 哪个学校的学生最喜欢使用快手APP Android、IOS、PC三大平台用户占比份额 全国哪些城市(学校所在地)的学生使用频次最高 全国哪些省份的生源最喜欢使用快手APP … 数据:快手APP大学生用户分析数据.csv 数据结构如下(字段名都为中文):
1、题目一
1、学校学生使用频次最多的前30所学校(5分)
提示:按照学校分组,对学生人数做累加求得每个学校学生使用的频次,最后对频次进行降序排名并将最终结果通过横向柱状图展示。
要求: 1)各学校使用频次(1分) 2)学校学生使用频次最多的前30所学校(1分)
2、题目二
2、使用频次前五学校学生中男女使用比例 (5分)
基于题目1中统计得到的各学校学生使用频次取出排名前5的学校,按照学校、性别分组,对学生人数进行sum累加求得各性别人数,将最终结果通过饼图展示(即展示前5所学校中每所学校男生女生的人数,需要在一张画布上展示5个图形,学校名作为每个图形的标题)。
要求: 1)取出学校学生使用频次排名前5的学校 (1分) 2)求得前5所学校中男生女生的使用频次(1分)
3、题目三
3、按省份统计使用快手APP数量 (5分)
按照学校省份进行分组,对学生人数进行累加求和得到每个省份的学生使用频次,最终将结果通过地图展示
要求: 1)各省份学生的使用频次(1分)
二、题解
1、题目一详解 —— 学校学生使用频次最多的前30所学校
① 相关知识点讲解
Ⅰ、Pyecharts Bar 相关使用
Pyecharts 画柱状图的方式非常简单,只需要导包并使用 Pyecharts 中 Bar()
类即可。其中 add_yaxis()
方法是必不可少的,通过该方法来导入数据并绘制柱状图;其次,通过 add_xaxis()
可以添加横坐标。
其次, reversal_axis()
可以用来将横纵坐标调换,从而达到绘制横向柱状图的目的。
set_global_opts()
可以对我们所绘制的柱状图的属性进行一些设置,像是柱状图的名称、标签、颜色等属性都可以在这里进行设置。
更多内容可以参考 【Pyecharts 柱状图的绘制】。
② 本题题解
首先导入我们所需要的包,pandas、pyecharts、matplotlib 等模块都需要导入。当然后面需要的时候再导入也是可以的啦!
# 导入所需模块
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import matplotlib.pyplot as plt
from pyecharts.charts import Map
import os
使用 pandas 中的 read_csv()
函数读取我们的数据:
# 读取数据
data = pd.read_csv('某短视频APP大学生用户分析数据.csv')
接下来使用 pandas 相关的 groupby()
方法将数据分组,并使用 sort_values()
将数据按照学生使用频次将学校进行排列:
# 数据处理
freqByStuNum = data.groupby(by='学校')['学生人数'].sum().to_frame('学生使用频次').sort_values(['学生使用频次'],ascending=False).reset_index()
之后使用 pyecharts 中的 Bar 进行柱状图的绘画,画出的图像可能会显示不全,这里可以使用 InitOpts()
方法设置图像的大小,从而避免这一问题。
# pyecharts 画图
(
Bar(
# 调整图像
init_opts=opts.InitOpts(width="1700px",
height="750px",)
)
.add_xaxis(freqByStuNum['学校'].tolist()[0:30])
.add_yaxis('人数',freqByStuNum['学生使用频次'].tolist()[0:30],category_gap="100%",bar_min_width=20)