0427课 初识数据分析

0427课 初识数据分析

Python数据分析3大神器
  • Numpy
    • 数据运算和保存
  • Matplotlib
    • 数据可视化(数据变图表)
  • Pandas
    • 整合前两个来展示和处理数据
例子
用随机方式生成5个学生的3门课程的成绩,求学生的平均分以及每门课程的最高分和最低分
  • 方法一: 用Python基础代码来写
import random

# 随机生成5个学生的3门课成绩
courses = ['语文', '数学', '英语']
students = ['s1', 's2', 's3', 's4', 's5']
n, m = len(students), len(courses)
scores = [[random.randint(60, 100) for _ in range(m)] for _ in range(n)]
print(scores)

# [[79, 92, 60], [60, 97, 72], [66, 86, 71], [93, 75, 94], [95, 67, 90]]

# 平均分
for i, score in enumerate(scores):
    avg_score = sum(score) / m
    print(f'{students[i]}的平均分: {avg_score:.1f}')
    
'''
s1的平均分: 77.0
s2的平均分: 76.3
s3的平均分: 74.3
s4的平均分: 87.3
s5的平均分: 84.0
'''

# 各门课的最高分和最低分
for i, course in enumerate(courses):
    temp = [scores[j][i] for j in range(n)]
    max_score, min_score = max(temp), min(temp)
    print(f'{course}的最高分: {max_score}')
    print(f'{course}的最低分: {min_score}')
    
    
'''
语文的最高分: 95
语文的最低分: 60
数学的最高分: 97
数学的最低分: 67
英语的最高分: 94
英语的最低分: 60
'''
  • 方法二: 用数据分析工具来写
处理成numpy的二维数组
# 导入相关模块并重命名
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import random

# 随机生成5个学生的3门课成绩
courses = ['语文', '数学', '英语']
students = ['s1', 's2', 's3', 's4', 's5']
n, m = len(students), len(courses)
scores = [[random.randint(60, 100) for _ in range(m)] for _ in range(n)]
print(scores)

# 将嵌套列表处理成numpy的二维数组
scores = np.array(scores)
print(scores)

'''
array([[79, 92, 60],
       [60, 97, 72],
       [66, 86, 71],
       [93, 75, 94],
       [95, 67, 90]])
'''

# 求每个学生的平均分
np.round(scores.mean(axis=1), 1)

# array([77. , 76.3, 74.3, 87.3, 84. ])

# 每门课程的最高分
scores.max(axis=0)

# array([95, 97, 94])

# 每门课程的最低分
scores.min(axis=0)

# array([60, 67, 60])
pandas 二维数组,变成二维表格

score_df =pd.DataFrame(data=scores, columns=courses, index=students)
print(score_df)

在这里插入图片描述

# 生成二维排列的平均分数组
avg_score = np.round(score_df.mean(axis=1), 1)
print(avg_score)
'''
s1    77.0
s2    76.3
s3    74.3
s4    87.3
s5    84.0
'''

# 将平均分添加进表格
score_df['平均分'] = avg_score
print(score_df)

在这里插入图片描述

# 将最高分和最低分放进表格
max_score = score_df.max(axis=0)
min_score = score_df.min(axis=0)

score_df.loc['最高分'] = max_score
score_df.loc['最低分'] = min_score

print(score_df)

在这里插入图片描述

将生成的数据表保存到Excel表格中
score_df.to_excel('学生成绩统计表.xlsx')
matplotlib 将表格变为柱状图
# 配置支持的中文字体
plt.rcParams['font.sans-serif'] = ['FangSong']

# 魔法指令
%config InlineBackend.figure_format = 'svg'

# 去掉最高分,最低分
score_df.loc['']

score_df.plot(kind='bar')

在这里插入图片描述



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值