python数据分析三大神器基本操作1
今天我带大家感受一下数据分析三大神器到底强大再哪里,这里我将用原生python代码和三大神器(numpy,pandas,matplotlib)来实现相同的功能做出比较,看看它到底独特在哪里。
实现这样一个小小的例子
用随机的方式生成5个学生3门课程的成绩 —> 嵌套列表
- 计算每个学生考试的平均成绩
- 计算每门课的最高分、最低分、标准差
首先,我们看一下用原生python代码写的代码
import random
names=['张三','李四','王五','黑六','吴七']
courses=['语文','数学','英语']
scores = [[random.randrange(50,101) for _ in range(3)] for _ in range(5)]
print(scores)
for i,name in enumerate(names):
sum = 0
for j,course in enumerate(courses):
sum += scores[i][j]
print(f'{name}的平均分{round(sum/len(courses),2)}')
for i,course in enumerate(courses):
temp=[]
for j,name in enumerate(names):
temp.append(scores[j][i])
print(f'{course}最高分{max(temp)}')
print(f'{course}最低分{min(temp)}')
大致效果是这样
真的很不爽,代码又臭又长
接下来,用了numpy来实现了同样的效果
这样心情是要好多了,但是,不知道你注意到没有,这样我们根本不知道算的分别是啥
好了,做这种事情还得pandas出马
import pandas as pd
df = pd.DataFrame(data=scores,columns=courses,index=names) # columns是可迭代对象
df
接下来算平均值
df['平均分'] = np.round(df.mean(axis=1),2)
df
很直观对吧,这里最大值最小值等我就先不写了哈
不仅如此,还可以更直观
# 处理中文字体
import matplotlib.pyplot as plt
# 先执行下面代码
plt.rcParams['font.sans-serif']=['STFangsong']
plt.rcParams['axes.unicode_minus']=False
%config InlineBackend.figure_format = 'svg' # 出矢量图
df.plot(kind='bar') # bar代表柱状图
plt.xticks(rotation=0)
plt.show()
看效果
想了解更多知识,欢迎移步到微信公众号
扫码或搜索数据分析者
好了,初步感受到pandas的强大了吗,那今天就先这样了,后续还有更新更多数据分析知识,有兴趣相互交流啊