目录
一、案例背景
随着互联网技术的飞速发展,在线教育打破了时间和空间的限制,为学习者提供了丰富多样的学习资源和灵活便捷的学习方式。从 K12 学科辅导到职业技能培训,从兴趣爱好培养到高等教育课程,在线教育涵盖了广泛的领域。然而,行业发展面临着课程质量参差不齐、用户留存率低、市场竞争激烈以及技术更新迭代快等挑战。通过运用 Python 对在线教育行业相关数据进行深入分析,能够帮助教育机构优化课程设计、提升教学质量、精准定位用户需求,进而在市场竞争中脱颖而出。
二、代码实现
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import requests
from bs4 import BeautifulSoup
2.1 数据收集
数据来源包括行业研究报告网站(如艾瑞咨询、艾媒咨询)、在线教育平台运营数据、社交媒体上用户对在线教育的讨论以及教育部门发布的相关统计数据。
# 从艾瑞咨询网站抓取在线教育市场规模数据
url = 'https://www.iresearch.com.cn/report/online_education.html'
headers = {
'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers = headers)
soup = BeautifulSoup(response.text, 'html.parser')
market_size_data = []
div = soup.find('div', class_='market - size - section')
items = div.find_all('li')
for item in items:
year = item.find('span', class_='year - value').text.strip()
market_size = float(item.find('span', class_='size - number').text.strip().replace('亿元', ''))
market_size_data.append({'Year': year, 'Market_Size': market_size})
market_size_df = pd.DataFrame(market_size_data)
# 从某在线教育平台获取课程评价数据(假设通过数据合作协议获取并整理成CSV文件后读取)
course_review_data = pd.read_csv('online_education_course_reviews.csv')
2.2 数据探索性分析
# 查看市场规模数据基本信息
print(market_size_df.info())
# 查看课程评价数据基本信息
print(course_review_data.info())
# 分析在线教育市场规模随时间变化趋势
market_size_df['Year'] = pd.to_numeric(market_size_df['Year'])
plt.figure(figsize=(12, 6))
sns.lineplot(x='Year', y='Market_Size', data=market_size_df)
plt.title('Trend of Online Education Market Size')
plt.xlabel('Year')
plt.ylabel('Market Size (billion yuan)')
plt.show()
# 查看课程评价星级分布
plt.figure(figsize=(10, 6))
sns.countplot(x='Rating_Star', data=course_review_data)
plt.title('Distribution of Course Rating Stars')
plt.xlabel('Rating Star')
plt.ylabel('Count')
plt.show()
2.3 数据清洗
# 市场规模数据清洗
# 检查并处理缺失值
market_size_df.dropna(inplace = True)
# 去除重复记录
market_size_df = market_size_df.drop_duplicates()
# 课程评价数据清洗
# 处理异常评价星级数据,如星级超过5星或小于1星
course_review_data = course_review_data[(course_review_data['Rating_Star'] >= 1) & (course_review_data['Rating_Star'] <= 5)]
# 处理缺失值,对于关键信息缺失的记录可考虑删除
course_review_data = course_review_data.dropna(subset=['Review_Content'])
2.4 数据分析
2.4.1 课程满意度与用户留存关系分析
# 假设课程评价数据中有用