Python 数据可视化实战第六章广大数据可视化项目实战代码

实训 各科目考试成绩可视化项目

1、训练要点

(1)掌握seaborn库进行数据可视化的方法。
(2)掌握撰写可视化分析报告的方法。
 

2、需求说明

3、实现步骤

(1)使用pandas库读取文件,查看原始数据的相关特征和描述信息,检查是否有空值.

import pandas as pd
# 读取数据
data = pd.read_csv('E:/data/StudentsPerformance.csv', encoding='gb18030')
data

# 检查空值
# null_counts = data.isnull().sum()
# 打印每列的空值数量
# print(null_counts)

 

 

(2)分别获取数据框中的阅读成绩、数学成绩、写作成绩3个字段,累加求和计算出每个学生的总分total_score,再除以3得到平均分percentage.

# 计算总分
data['total_score'] = data[['数学成绩', '阅读成绩', '写作成绩']].sum(axis=1)
# 计算平均分
data['percentage'] = data['total_score'] / 3
# 显示包含总分和平均分的数据框
print(data[['数学成绩', '阅读成绩', '写作成绩', 'total_score', 'percentage']])

 (3)设置各门课及格线为60分,分别判断学生是否通过(Fail/Pass)每门课,合并新的数据列pass_reading,pass_math、pass_writing。

import pandas as pd

# 转换为DataFrame
data = pd.DataFrame(data)

# 设置及格线
passing_score = 60

# 判断每门课程是否通过
data['pass_reading'] = data['阅读成绩'] >= passing_score
data['pass_math'] = data['数学成绩'] >= passing_score
data['pass_writing'] = data['写作成绩'] >= passing_score

# 将布尔值转换为'fail'/'pass'
data['pass_reading'] = data['pass_reading'].map({True: 'pass', False: 'fail'})
data['pass_math'] = data['pass_math'].map({True: 'pass', False: 'fail'})
data['pass_writing'] = data['pass_writing'].map({True: 'pass', False: 'fail'})

data[[ '数学成绩', '阅读成绩', '写作成绩','pass_reading', 'pass_math', 'pass_writing']]

(4)判断每个学生的整体状态是否通过。如果3门课中有一门为Fail,则最后考核为Fail,合并新的数据列status。

# 判断学生整体状态
data['status'] = data[['pass_reading', 'pass_math', 'pass_writing']].isin(['fail']).any(axis=1).map({True: 'fail', False: 'pass'})

data[['数学成绩', '阅读成绩', '写作成绩', 'pass_reading', 'pass_math', 'pass_writing', 'status']]

 

(5)对于总评是Pass的数据,根据平均分设置5级制成绩,即percentage大于90分为优秀,80-90分为良好,70-79分为中等,60-69分为及格,其他为不及格。

# 根据平均分重新设定总评状态
def set_grade(percentage):
    if percentage >= 90:
        return '优秀'
    elif 80 <= percentage < 90:
        return '良好'
    elif 70 <= percentage < 80:
        return '中等'
    elif 60 <= percentage < 70:
        return '及格'
    else:
        return '不及格'

# 应用函数到status列
data['status'] = data['percentage'].apply(set_grade)

data[[ '数学成绩', '阅读成绩', '写作成绩','total_score', 'percentage', 'status']]

 

(6)绘制可视化图形,具体操作如下。

1.绘制父母受教育程度的水平柱形图。

import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

# 计算每个教育程度的学生人数
education_counts = data['父母教育程度'].value_counts()

# 绘制水平柱状图
plt.figure(figsize=(12, 6))
plt.barh(education_counts.index, education_counts.values, color='skyblue')
plt.xlabel('学生人数')
plt.ylabel('教育程度')
plt.title('父母教育程度分布')
plt.tight_layout()  
plt.show()

 

2.绘制全体学生成绩分布饼图。

import pandas as pd
import matplotlib.pyplot as plt

# 转换为DataFrame
columns = ['数学成绩', '阅读成绩', '写作成绩']
df = pd.DataFrame(data, columns=columns)

# 计算每门课程的平均成绩
percentage = df[['数学成绩', '阅读成绩', '写作成绩']].mean()

# 绘制饼图
plt.figure(figsize=(4, 4))
plt.pie(percentage, labels=percentage.index, autopct='%.1f%%')
plt.title('全体学生成绩平均分布')
plt.show()

 

3.绘制各科成绩分布直方图。

import pandas as pd
import matplotlib.pyplot as plt


# 转换为DataFrame
columns = ['数学成绩', '阅读成绩', '写作成绩']
df = pd.DataFrame(data, columns=columns)

# 绘制各科成绩分布直方图
plt.figure(figsize=(15, 5))

# 数学成绩
plt.subplot(1, 3, 1)
plt.hist(df['数学成绩'], bins=range(30, 101, 5), edgecolor='black')
plt.title('数学成绩分布')
plt.xlabel('分数')
plt.ylabel('学生人数')

# 阅读成绩
plt.subplot(1, 3, 2)
plt.hist(df['阅读成绩'], bins=range(30, 101, 5), edgecolor='black')
plt.title('阅读成绩分布')
plt.xlabel('分数')
plt.ylabel('学生人数')

# 写作成绩
plt.subplot(1, 3, 3)
plt.hist(df['写作成绩'], bins=range(30, 101, 5), edgecolor='black')
plt.title('写作成绩分布')
plt.xlabel('分数')
plt.ylabel('学生人数')

plt.show()

 

4.绘制父母受教育程度与前置课程是否完成统计分类图。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 转换为DataFrame
columns = ['父母教育程度',  '课程完成情况']
df = pd.DataFrame(data, columns=columns)

# 绘制父母受教育程度与前置课程是否完成的分类统计图
plt.figure(figsize=(8, 5))
sns.countplot(x='父母教育程度', hue='课程完成情况', data=df)
plt.title('父母受教育程度与课程完成情况分类统计')
plt.xlabel('父母教育程度')
plt.ylabel('学生人数')
plt.legend(title='课程完成情况')
plt.show()

 

5.绘制成绩评级与性别分布箱线图。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 转换为DataFrame
columns = ['性别', '数学成绩', '阅读成绩', '写作成绩']
df = pd.DataFrame(data, columns=columns)

# 计算每门课程的平均成绩作为评分依据
df['percentage'] = df[['数学成绩', '阅读成绩', '写作成绩']].mean(axis=1)

# 绘制成绩评级与性别的箱线图
plt.figure(figsize=(8, 5))
sns.boxplot(x='性别', y='percentage', data=df)
plt.title('成绩评级与性别分布箱线图')
plt.xlabel('性别')
plt.ylabel('平均成绩')
plt.show()

 

6.绘制午餐标准与总成绩的性别分类散点图。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 转换为DataFrame
columns = ['性别', '午餐', '数学成绩', '阅读成绩', '写作成绩']
df = pd.DataFrame(data, columns=columns)

# 计算每名学生的总成绩
df['total_score'] = df[['数学成绩', '阅读成绩', '写作成绩']].sum(axis=1)

# 绘制午餐标准与总成绩的性别分类散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x='午餐', y='total_score', hue='性别', data=df, palette=['red', 'blue'])
plt.title('午餐标准与总成绩的性别分类散点图')
plt.xlabel('午餐标准')
plt.ylabel('总成绩')
plt.legend(title='性别')
plt.show()

7.绘制各特征的相关热力图。 

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 转换为DataFrame
columns = ['性别', '民族', '父母教育程度', '午餐', '课程完成情况', '数学成绩', '阅读成绩', '写作成绩']
df = pd.DataFrame(data, columns=columns)

# 将分类特征进行编码以便于计算相关性
xs = pd.get_dummies(df, columns=['性别', '民族', '父母教育程度', '午餐', '课程完成情况'])
# 计算数值型列之间的相关性
matrix = xs.select_dtypes(include='number').corr()

# 绘制热力图
plt.figure(figsize=(10, 6))
sns.heatmap(matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .5})
plt.title('各特征之间的相关性热力图')
plt.show()

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
对于Python和大数据结合的亚马逊电商项目实战,可以考虑以下几个方面: 1. 数据采集:使用Python的爬虫技术,获取亚马逊电商的商品信息、评论数据等。可以使用第三方库如Scrapy、BeautifulSoup等进行网页解析和数据提取。 2. 数据存储:将采集到的数据存储到适合大数据处理的存储系统中,如Hadoop分布式文件系统(HDFS)、HBase等。可以使用Python的相关库如pydoop、happybase等进行数据的读写操作。 3. 数据清洗和处理:使用Python的数据处理库如Pandas、NumPy等对采集到的数据进行清洗和预处理,例如去除重复数据、处理缺失值、数据转换等。 4. 数据分析和挖掘:利用Python数据分析库如Matplotlib、Seaborn、Scikit-learn等对清洗后的数据进行可视化分析和机器学习算法建模,以探索用户行为、商品销售趋势等重要信息。 5. 推荐系统开发:基于用户行为和商品数据,可以使用Python的机器学习库如TensorFlow、PyTorch等构建推荐系统模型,为用户提供个性化的商品推荐。 6. 可视化展示:使用Python可视化库如Dash、Bokeh等将分析结果以表、报表等形式进行展示,方便决策者和业务人员理解和使用分析结果。 以上只是一个简单的实战方向,具体的项目实施还需要根据需求进行调整和完善。同时,还需要了解亚马逊电商网站的相关政策和法规,确保项目的合规性。祝您项目顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徙格~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值