机器学习三剑客:numpy、pandas、matplotlib

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。

pandas 是基于numpy的一种工具,该工具是为了解决数据分析任务而创建的。

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

柱状图bar

from matplotlib import pyplot as plt
import matplotlib
# 显示图表,仅限于jupyter使用
%matplotlib inline
#指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
# 第一个参数:索引
# 第二个参数:高度 参数必须对应否则报错
plt.bar(range(5),[100,200,300,400,500],color='red')
plt.xticks(range(5),['A','B','C','D','E'])
plt.xlabel('姓名')
plt.ylabel('得分')
plt.title('学生得分')
# 或显示图标Plt.show()

饼图pie

labels = ['A','B','C','D']
# autopct='%1.1f%%'显示比列,格式化显示一位小数,固定写法
plt.pie([50,39,50,20],labels=labels,autopct='%1.1f%%')
plt.title('人口比例')

直方图hist

from matplotlib import pyplot as plt
import matplotlib heights = [180,160,172,177,160]
plt.hist(heights,color='red',alpha=0.5)
# 横轴heights,纵轴当前值的个数
plt.xlabel('身高')
plt.ylabel('人数')
plt.title('身高统计')

散点图scatter

# 5、绘制一个散点图
# 用random模块获取两组数据,分别代表横纵坐标。一组数据里有50个数,
# 用随机种子的方法固定住random模块获取得到的数据
# 并将散点图里的符号变为'*'
import numpy as np
np.random.seed(10) # 随机种子,将随机数固定住
heights = []
weights = []
heights.append(np.random.randint(150,185,size=50))
# weights.append(np.random.normal(loc=50,scale=100,size)) # 生成正太分布,也称高斯分布
weights.append(np.random.randint(50,100,size=50))
plt.scatter(heights,weights,marker='*',color='yellow') #默认是圆点,marker='*'

折线图plot

x = [4,65,71,5,3]
y = [3,12,5,2,3]
plt.plot(x,y)
# plt.savefig('a.jpg') # 保存图片

面积图

from matplotlib import pyplot as plt
import numpy as np
# 导入3D模块
from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib
#指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
# 面积图
def test_area():
date = ['2000-01-01','2000-02-01','2000-03-01','2000-04-01']
earn = [156,356,156,30]
eat = [10,20,30,40]
drink = [20,20,30,40]
play = [20,20,30,40]
# [20,20,30,40]]
plt.stackplot(date,earn,eat,drink,play,colors=['red','yellow','green','blue'])
plt.title('收入支出面积图展示')
plt.plot([],[],color='red',label='收入')
plt.plot([],[],color='yellow',label='吃')
plt.plot([],[],color='green',label='喝')
plt.plot([],[],color='blue',label='玩')
# 展示图例
plt.legend()
plt.show()
test_area()

3D饼图突出展示

def test_pie():
beijing = [10,20,30,40]
label = ['2-3年','3-4年','4-5年','5年']
color = ['red','yellow','green','blue']
indict = []
for index,item in enumerate(beijing):
# 判断优先级
if item == max(beijing):
indict.append(0.3)
elif index == 1:
indict.append(0.2)
else:
indict.append(0)
plt.pie(beijing,labels=label,colors=color,startangle=90,shadow=True,explode=tuple(indict),autopct='%1.1f%%')
plt.title('3D切割凸显饼图')
plt.show()
test_pie()

 条形图

def test_barh():
price = [11,22,33,44]
plt.barh(range(4),price,align='center',color='red',alpha=0.5)
plt.xlabel('价格')
plt.yticks(range(4),['红楼梦','西游记','水浒传','三国演义'])
plt.title('四大名著')
plt.show()
test_barh()

3D散点图

def test_scatter_3D():
x = np.random.randint(0,10,size=100)
y = np.random.randint(0,10,size=100)
z = np.random.randint(0,10,size=100)
# 创建二维对象
fig = plt.figure()
# 强转
axes3d = Axes3D(fig)
# 填充数据
axes3d.scatter(x,y,z)
plt.show()
test_scatter_3D()

趋势图

def test_line():
x = ['2000-01-03','2000-02-03','2000-03-03','2000-04-03']
# 定义y轴数据
y1 = [0,3,5,7]
y2 = [11,22,33,44]
plt.plot(x,y1,label='tempreature')
plt.plot(x,y2,label='water')
# 显示图例
plt.legend()
plt.show()
test_line()

箱型图

import pandas as pd
# 定义消费分析
def test_tips(pd):
# 读取数据集
df = pd.read_excel('tips.xlsx','sheet1') # 绘制散点图证明推论:小费随着总账单的递增而递增
# df.plot(kind='scatter',x='tip',y='total_bill',c='red',label='bill_tip') # 绘制箱型图
# 计算小费占总账单的比例
df['pct'] = df.tip / df.total_bill * 100
# print(df)
# 过滤出小费占比比较高的人群,例如:30%以上
print(df[df.pct > 30])
# 删除异常数据,按照索引删除
df = df.drop([67,172,178])
# print(df)
# 打印箱型图
df.pct.plot(kind='box',label='tips pct%')
# 绘制
plt.show()
test_tips(pd)

散点图绘制如下:

箱型图绘制如下:

 

 对比柱状图、小提琴图

import seaborn as sns
# 定义数据分析方法
def test_excel():
# 读取数据集
df = pd.read_excel('test.xlsx','sheet1')
# print(df)
# 需求
# 计算按性别和人体质量分组,求销售额
# select sum(sales),gender,BMI from test group by gender,BMI
myexcel = df.groupby(['BMI','Gender']).Sales.sum()
print(myexcel)
# 绘制对比柱状图unstack
myexcel.unstack().plot(kind='bar',stacked=True,color=['red','green']) # # 利用seaborn绘制,小提琴图
# sns.violinplot(df['Age'],df['Gender'])
# # 初始化数据
# sns.despine()
# 绘制
plt.show()
test_excel()

柱状图效果如下:

小提琴效果图如下:

机器学习--matplotlib绘制各种图表的更多相关文章

  1. Python Matplotlib绘制气温图表

    代码中数据从 www.wunderground.com/history/ 下载 #coding=utf-8 import csv from datetime import datetime from ...

  2. 使用matplotlib绘制常用图表(3)-其他图表绘制

    一.绘制三点图 """ 三月份最高气温 a = [12,15,18,6,7,5,6,8,9,10,15,10,4,5,11,10,5,6,12,15,10,5,14,10 ...

  3. 使用matplotlib绘制常用图表(2)-常用图标设置

    一.使用subplots绘制子图 import numpy as np from matplotlib import pyplot as plt %matplotlib inline x = np.a ...

  4. 使用matplotlib绘制常用图表(1)

    #导入相关包from matplotlib import pyplot as plt import matplotlib from matplotlib import font_manager #初始 ...

  5. 【转】使用Python matplotlib绘制股票走势图

    转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...

  6. 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线

    我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...

  7. 用Python的Pandas和Matplotlib绘制股票KDJ指标线

    我最近出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中给出了MACD,KDJ ...

  8. matplotlib绘制动画

    matplotlib从1.1.0版本以后就开始支持绘制动画,具体使用可以参考官方帮助文档.下面是一个很基本的例子: """ A simple example of an ...

  9. 用Matplotlib绘制二维图像

    唠叨几句: 近期在做数据分析,需要对数据做可视化处理,也就是画图,一般是用Matlib来做,但Matlib安装文件太大,不太想直接用它,据说其代码运行效率也很低,在网上看到可以先用Java做数据处理, ...

随机推荐

  1. Android 下载进度对话框 ProgressDialog

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...

  2. python 基础学习笔记(5)--文件操作

    **python 的文件操作** - [ ] 使用python来读写文件是非常简单的操作,我们使用open()来打开一个文件,获取到文件的语柄,然后通过文件语柄就可以进行各种各样的操作了. - [ ] ...

  3. diango中的MTV——FBV/CBV以及装饰器的复用问题解决

    MVC M: model 模型 与数据库交互 V: view 视图 HTML C:controller 控制器 流程 和 业务逻辑 MTV M:model ORM T:template 模板 HTML ...

  4. 11. Go 语言网络编程

    Go 语言网络编程 Go语言在编写 web 应用方面非常得力.因为目前它还没有 GUI(Graphic User Interface 图形化用户界面)的框架,通过文本或者模板展现的 html 界面是目 ...

  5. win7安装centos7虚拟机

    1. 场景描述 因测试中需要linux集群,目前的服务器不太方便部署,需要本机(windows7)启动多个linux虚拟机,记录下,希望能帮到需要的朋友. 2. 解决方案 2.1 软件准备 (1)使用 ...

  6. JS调用MD5加密

    为了系统的安全,前端一般需要对密码进行MD5加密,然后传输给后台处理.MD5的英文是Message Digest Algorithm(信息摘要算法),是不可逆的算法,只能通过暴力破解,所以较为安全. ...

  7. Jquery中的done() fail() then() $when()到底是什么

    ajax的传统写法: $.ajax({ url: "test.html", success: function(){ alert("哈哈,成功了!"); }, ...

  8. golang-结构体与指针

    1.结构体 结构体是一系列具有指定数据类型的数据类型 ,就是一个结构体中存储多个不同类型的数据字段 ,用于创建传递复杂数据结构 结构体可以理解为面向对象的模板 ,但是go并非面向对象 ,结构体只是一种 ...

  9. C#中 EF 性能优化

    https://www.cnblogs.com/chenwolong/p/7531955.html EF使用AsNoTracking(),无跟踪查询技术(查询出来的数据不可以修改,如果你做了修改,你会 ...

  10. 简单的jquery表单验证+添加+删除+全选/反选

    //布局 <body> <h4><a href="#">首页</a>><a href="#"> ...