1.NumPy - Numerical Python - 提供了名为ndarray的数据类型,基于该类型我们可以实现对数据的存储和批量处理。
2.Pandas - Panel Data Set - 提供了Series和
DataFrame两种核心数据类型,专门用于处理一维和二维的数据,对数据分析常用方法进行了封装。
3.Matplotlib - 封装了各种常用的统计图表,pandas以及其他很多库绘图的功能,底层就是matplotlib提供的支持。
导入三个分析工具库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
names = ('李元芳', '白起', '孙悟空', '达摩', '孙尚香')
courses = ('语文', '数学', '英语')
scores = [91, 78, 72], [68, 70, 83], [82, 76, 97], [89, 84, 89], [85, 80, 94]]
# 先写三个函数,后面使用
def mean(nums: list) -> float:
"""计算均值"""
return sum(nums) / len(nums)
def var(nums: list) -> float:
"""计算方差"""
avg = mean(nums)
return mean([(num - avg) ** 2 for num in nums])
def std(nums: list) -> float:
"""计算标准差"""
return var(nums) ** 0.5
np.round(np.mean(scores, axis=1), 1)
np.max(scores, axis=0)
# 创建DataFrame对象
# data - 二维的数据,columns - 列索引,index - 行索引
df = pd.DataFrame(data=scores, columns=courses, index=names)
df
# 给DataFrame对象添加一个列保存每个学生的平均分
df['平均分'] = np.round(df.mean(axis=1), 1)
df
df.to_excel('成绩.xlsx')
df.sort_values(by='平均分', ascending=False)
df.sort_values(by='平均分', ascending=False).drop(columns='平均分')
df.plot(kind='bar')
# 配置matplotlib使用支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei', ]
# 让负号正常显示
plt.rcParams['axes.unicode_minus'] = False
# 使用魔法指令配置在独立窗口显示图表
# 需要安装三方库PyQt5来支持该魔法指令
# %pip install PyQt5
%matplotlib qt
# 使用魔法指令配置在浏览器内嵌显示图表
%matplotlib inline
# 使用魔法指令配置生成矢量图
%config InlineBackend.figure_format = 'svg'
# 图例位置控制
plt.legend(loc='lower right')
# 提出操作横轴的刻度
plt.xticks(rotation=0)
# 把图片显示
plt.show()
注意要在plt.show前保存,不然没有保存的东西
plt.savefig('aaa.png')