Python数据可视化
2021-06-10 本文已影响0人
爱写代码的小王子
要想实现数据可视化,首先需要了解三大神器
- numpy - 处理数据 (ndarray - 提供多维数组)
- pandas - numpy和matplotlib的结合,数据处理,数据可视化
- matplotlib - 数据可视化
下载第三方库
!pip install numpy pandas matplotlib
下载成功后,导入第三方库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#由于需要产生随机数,这里还需导入random模块
import random
这里以学生成绩为例,有3个列表,学生姓名,课程科目,学生分数,分数是随机生成的
names = ['小明','小花','小强','小李','小张']
subjects = ['语文','数学','英文']
#scores = [[random.randint(70,100) for _ in subjects] for _ in names]
scores = [[random.randint(80,100) for _ in subjects] for _ in names]
使用pandas生成学生课程分数信息表格,以学生姓名为行索引,科目为列索引
df = pd.DataFrame(data=scores,index = names,columns=subjects)
效果
image.png
获取每个学生的平均分以及没最高分、最低分
#获取每个学生的平均分,第二个参数表示保留的小数位数
mean_socres = np.round(df.mean(axis=1),0)
#mean_socres = np.round(df.mean(axis=1),0)
#每个学生的最高分
max_socres = scores.max(axis=1)
#每个学生的最低分
max_socres = scores.max(axis=0)
添加一行最高分
maxs = df.max(axis=0)
#添加行
df.loc['最高分'] = maxs
效果
image.png
添加一列平均分
df['平均分'] = mean_socres
绘制条形图
df = pd.DataFrame(data=[100,200,300,400],index=['1季度','2季度','3季度','4季度'])
# df = pd.DataFrame(data=[10000,20100,19800,32000],index=['第一季度','第二季度','第三季度','第四季度'])
#设置显示中文
plt.rcParams['font.sans-serif'] = 'SimHei' # 使图形中的中文正常编码显示
#正负号正常显示
plt.rcParams['axes.unicode_minus'] = False
df.plot(kind = 'bar')
效果
image.png
绘制折线图
df = pd.DataFrame(data=[100,200,300,400],index=['1季度','2季度','3季度','4季度'])
# df = pd.DataFrame(data=[10000,20100,19800,32000],index=['第一季度','第二季度','第三季度','第四季度'])
#设置显示中文
plt.rcParams['font.sans-serif'] = 'SimHei' # 使图形中的中文正常编码显示
#正负号正常显示
plt.rcParams['axes.unicode_minus'] = False
df.plot(kind = 'line')
image.png
绘制饼图
# 数据
labels = ["重庆", "四川", "贵州", "云南"]
lists = [15, 30, 45, 10]
# 画饼图
plt.pie(x=lists, labels=labels,autopct="%0.1f%%")
# 展示饼图
plt.show()
image.png
绘制sin曲线
#绘制sin曲线
x = np.arange(0,10,0.1)
y = np.sin(x)
plt.bar(x,y,width=0.04,linewidth = 0.2)
plt.plot(x,y,'r--',linewidth = 2)
plt.title('Sin曲线')
plt.xlabel('X')
plt.ylabel('Y')
#设置显示中文
plt.rcParams['font.sans-serif'] = 'SimHei' # 使图形中的中文正常编码显示
#正负号正常显示
plt.rcParams['axes.unicode_minus'] = False
plt.show()
image.png
总结:今天学习了一些简单的绘图的方法以及将列表或其他序列转化为array的方法,很简单也很有收获。