Mataplotlib

  1. 绘制统计图形
  2. 读取图片保存图片以及图片显示

Seaborn

  • 1.辅助的库,可以被pyplot控制
  • 2.辅助绘制更多的图形,更加好看,功能更加强大
  • 3.添加了调色板
  • 4.set_style:white(默认),dark,darkgrid,ticks
  • 5.color_palette():调色板
  • 6.palplot():显示显色
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
plt.plot()   # 画布
# 每组颜色都是RGB
pink_r = sns.color_palette(palette='pink_r',n_colors=7)
sns.palplot(pink_r)

绘制线性图

  • 需要X,Y
# 全闭
x = np.linspace(0,14,100)
for i in range(1,7):
y = np.sin(x+i*0.5)*(7-i*np.pi)
plt.plot(x,y)
h = np.array([170,171,169,181,190,162,170])
plt.plot(h)

图片的标题

# 图片放大 放在上面
plt.figure(figsize=(10,6))
x = np.linspace(-10,10,100)
y = np.sin(x)
z = np.cos(x) # plt.plot 会被覆盖
plt.plot(x,y,lable='sin') # lable 标签
plt.plot(x,z,lable='cos') # 图片的标题
# fontsize 代表字体的颜色
# color 字体的颜色
# alpha 透明度
# rotation 字体旋转的角度
plt.title('sin&cos',fontsize=20,color='red',alpha=0.5,rotation=360) # 设置X轴的标题
plt.xlabel('X=range(-10,10)',fontsize=20,color='orage',alpha=0.5)
# 设置Y轴的标题
plt.ylabel('f(x)=sin(x)&f(x)=cos(x)',fontsize=20,color='orange',alpha=0.5,rotation=90) #控制X轴的范围
plt.xlim([-10,10]) #控制Y轴的范围
plt.ylim(-1,1) # 图例
# loc是图例的位置 nloc控制显示的列数
plt.legend(loc=[0,0.1],nloc=1)

点和线的样式

#图片放大
plt.figure(figsize=(10,6))
x = np.linspace(-10,10,100)
y = np.sin(x)
z = np.cos(x) #线的样式 linestyle ls
#-- 虚线
#- 实线
#: 虚线 #线的宽度 linewidth lw #线的颜色 color c
#蓝色 b 绿色 g 红色 r 黄色 y 黑色 k
#青色 c 洋红色 m 白色 w
#颜色支持rgb #点 marker
#o 小圆点 s 放块 d 菱形 x 叉 #markersize 点的大小 plt.plot(x,y,label='sin',linestyle='--',lw=1,c='#FF0000',marker='o',markersize=10)
plt.plot(x,z,label='cos',ls=':',c=(0,1,0)) #图例
#loc是图例的位置
#ncol是图例显示的列数
plt.legend(loc=[0,1],ncol=2)

X和Y轴可读的映射

  • matplotlib支持lataX的语法
x = np.linspace(-np.pi,np.pi,100)
y1 = np.sin(x)
y2 = np.cos(x) #画布对象实例化
#参数有三个 : 行 列 编号(不能从0开始,并且不能重复)
axes = plt.subplot(1,1,1)
#把x,y1花在axes画布中
axes.plot(x,y1,label='sin')
axes.plot(x,y2,label='cos')
axes.legend()
axes.set_title('A')
axes.set_xlabel('X')
axes.set_ylabel('Y') pi = np.pi
#映射
#设置x轴的标记,协商标记数轴值
axes.set_xticks([-pi,-pi/2,0,pi/2,pi])
axes.set_xticklabels(['$-\pi$','$-\pi/2$',0,'$\pi/2$','$\pi$'],fontsize=20) axes.set_yticks([-1,0,1])
axes.set_yticklabels(['min',0,'max'],fontsize=20,rotation=20,color='orange')

直方图

  • 1.统计元素出现的次数
  • 2.可以描述分部的状态
a = np.array(list('abcdabcdaa'))
plt.hist(a,bins=20,color='r')

柱状图

from sklearn.datasets import load_iris
data=load_iris().data
target = load_iris().target.reshape(-1,1)
# 合并二维数据  feature_names:特征的名称
iris=pd.DataFrame(np.concatenate([data,target],axis=1),columns=load_iris().feature_names+['labels'])
# 转变数据类型为整型
iris.labels=iris.labels.astype('int8')
iris.labels.map({0:'A',1:'B',2:'C'})
b = np.array([0,1,2,3,0,1,2,3,0,0])
#sns不支持str类型的统计
#sns绘制的图一定是带有密度图的
sns.distplot(b,bins=20,color='r') # 方式二
c = np.array(['A','B','C'])
iris.labels=c[iris.labels]
iris.columns
Out[.]:Index(['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)',
'petal width (cm)', 'labels'],
dtype='object')
#一列代表一个柱子,表示的是最大值的范围
sns.barplot(data=iris)
#load_dataset 加载数据集  铁达尼
titanic = pd.read_csv('./titanic.csv') #x,y每一列代表什么意思
#hue条件
sns.barplot(x='Sex',y='Survived',hue='Pclass',data=tita
nic)

条件性柱状图

# load_dataset 加载数据集  泰坦尼克号
titanic = pd.read_csv('./titanic.csv')
# x,y代表每列代表什么意思
sns.barplot(x='Sex',y='Survived',data=titanic)

饼图

  • 表示的是一个比例
titanic.head()
male=titanic.query("Sex=='male'").shape[0]
male_d = titanic.query("Sex=='male' & Survived==0").shape[0]
female=titanic.query("Sex=='female'").shape[0]
female_d=titanic.query("Sex=='female' & Survived==0").shape[0]
sns.palplot(sns.color_palette('hls',2)),sns.palplot(sns.color_palette('rainbow',2)),sns.palplot(sns.color_palette('cool',2))
plt.figure(figsize=(8*3,8))
#绘制饼图
#x : 数据部分
#lables:标签部分
#autopct:显示比例 (%%代表百分号)
#explode:分离度
x = np.array([male,female])
labels=['male','female']
axes1 = plt.subplot(1,3,1)
axes1.pie(x,labels=labels,autopct="%.2f%%",colors=sns.color_palette('hls',2))
axes1.axis('image')
axes1.legend(['male=%s'%(male),'female=%s'%(female)],loc=[0,1]) #男性死亡比例
x1 = np.array([male-male_d,male_d])
labels=['L','D']
axes2 = plt.subplot(1,3,2)
explode=[.1,0]
axes2.pie(x1,labels=labels,autopct="%.2f%%",explode=explode,colors=sns.color_palette('rainbow',2))
axes2.axis('image')
axes2.legend(['L=%s'%(male-male_d),'D=%s'%(male_d)],loc=[0,1]) #女性死亡比例
x2 = np.array([female-female_d,female_d])
labels=['L','D']
axes3 = plt.subplot(1,3,3)
explode=[.1,0]
axes3.pie(x2,labels=labels,autopct="%.2f%%",explode=explode,colors=sns.color_palette('cool',2))
axes3.axis('image')
axes3.legend(['L=%s'%(female-female_d),'D=%s'%(female_d)],loc=[0,1]) #保存图片
#fname:文件存储的路径
#dpi:像素密集度
#facecolor:背景色 plt.savefig('./pie.png',dpi=100)

箱图

  • 类别型的离散值没有必要绘制箱图
  • 查看范围,查看异常值
titanic.info()
titanic.head() titanic.loc[:,'Parch'].unique()
Out[.]:array([0, 1, 2, 5, 3, 4, 6])
#筛选所有的数值列
#include=None,
#exclude titanic.select_dtypes(exclude=['object']).columns
Out[.]:Index(['PassengerId', 'Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare'], dtype='object')
titanic.Age.plot(kind='box')

sns.boxplot(data=titanic.Age)

散步图

  • 观察量与量之间的分布关系的
  • 二维的图形,一列代表x,一列代表y
  • c参数是class的意思,只支持数值类型
iris.labels = iris.labels.astype('category').cat.codes

# 散步图使用多的场景:机器学习中的分类
plt.scatter(iris.iloc[:50,0],iris.iloc[:50,1],marker='o',color='r')
plt.scatter(iris.iloc[50:100,0],iris.iloc[50:100,1],marker='d',color='y')
plt.scatter(iris.iloc[100:,0],iris.iloc[100:,1],marker='x',color='g')
plt.scatter(iris.iloc[:,2],iris.iloc[:,3],c=iris.labels,cmap='gray')

散步密度图

  • 直方图
iris.columns
sns.jointplot(x='sepal length (cm)',y='sepal width (cm)',data=iris)
#"scatter" 散布| "reg" 回归| "resid" 普通| "kde" 密度| "hex" 蜂巢
sns.jointplot(x='sepal length (cm)',y='sepal width (cm)',data=iris,kind='hex')

回归散布图

sns.regplot(x='sepal length (cm)',y='sepal width (cm)',data=iris)

#点到线之间的平均距离最短  方程
sns.regplot(x='petal length (cm)',y='petal width (cm)',data=iris)

线性分类散步图

sns.lmplot(x='petal length (cm)',y='petal width (cm)',data=iris,hue='labels',markers=['o','d','x'])

散布图矩阵

  • 检查量于量之间相关性
  • 要求hue的值是str
iris.labels = iris.labels.replace({0:'A',1:'B',2:'C'},)

sns.pairplot(iris,hue='labels', diag_kind='kde')
#第二列中,3个类别值交集太大,不容进行分类
sns.boxplot(data=iris)
#第二列有异常值
#相关系数为1代表两列完全一致   -1负相关
#相关系数为0代表两列完全不一样
plt.scatter(iris.iloc[:,0],iris.iloc[:,0])

3D图

# 3d散步图
from mpl_toolkits.mplot3d.axes3d import Axes3D #3D散布图
#画布
plt.figure(figsize=(16,12))
axes3d=plt.subplot(projection='3d')
target = iris.labels.astype('category').cat.codes
axes3d.scatter3D(iris.iloc[:,0],iris.iloc[:,2],iris.iloc[:,3],c=target,cmap='rainbow',s=50)
# 3d平面图  plot()
x = np.linspace(0,100,100)
y = np.sin(x)
# z 必须和x,y有关联
#3D平面图  plot()
x = np.linspace(-10,10,100)
y = np.linspace(-10,10,100) #z 必须和x,y有关联
xx,yy=np.meshgrid(x,y) #e^?
z = xx**3+yy**3
fig = plt.figure(figsize=(16,10))
axes3d = Axes3D(fig)
#超平面 注意x,y,z都必须是二维的数组
pic=axes3d.plot_surface(xx,yy,z,cmap='rainbow')
#色柱
plt.colorbar(pic,shrink=0.8)

Excel数据导入数据库

import pandas as pd
from sqlalchemy import create_engine
conn = create_engine("mysql+pymysql://hal:123456@localhost:3306/demo")

#读取csv
userinfo = pd.read_csv('./user_info_utf.csv',header=None,names=['userid','sex','birth'])
userinfo.info()

#name  导入的表名
#index=False 不要行号
#if_exists='append' 表存在则添加
#GRANT ALL PRIVILEGES ON *.* TO 'hal'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
#MySQL中text类型只能创建FullText key , 不能创建 Index
userinfo.iloc[:50000].to_sql('user_info',conn,index=False,if_exists='fail')
userinfo.to_sql('user_info',conn,index=False,if_exists='append')

数据分析之--Mataplotlib入门的更多相关文章

  1. 向大家介绍我的新书:《基于股票大数据分析的Python入门实战》

    我在公司里做了一段时间Python数据分析和机器学习的工作后,就尝试着写一本Python数据分析方面的书.正好去年有段时间股票题材比较火,就在清华出版社夏老师指导下构思了这本书.在这段特殊时期内,夏老 ...

  2. 基于股票大数据分析的Python入门实战(视频教学版)的精彩插图汇总

    在我写的这本书,<基于股票大数据分析的Python入门实战(视频教学版)>里,用能吸引人的股票案例,带领大家入门Python的语法,数据分析和机器学习. 京东链接是这个:https://i ...

  3. 利用python进行数据分析之pandas入门

    转自https://zhuanlan.zhihu.com/p/26100976 目录: 5.1 pandas 的数据结构介绍5.1.1 Series5.1.2 DataFrame5.1.3索引对象5. ...

  4. Python数据分析之pandas入门

    一.pandas库简介 pandas是一个专门用于数据分析的开源Python库,目前很多使用Python分析数据的专业人员都将pandas作为基础工具来使用.pandas是以Numpy作为基础来设计开 ...

  5. [学习笔记] [数据分析] 01.Python入门

    1.安装Python与环境配置 ① ② 安装pip以及利用pip安装Python库 2.Anaconda安装 conda list 要在root环境下 3.常用数据分析库 ① Numpy 安装:con ...

  6. pyhton中pandas数据分析模块快速入门(非常容易懂)

    //2019.07.16python中pandas模块应用1.pandas是python进行数据分析的数据分析库,它提供了对于大量数据进行分析的函数库和各种方法,它的官网是http://pandas. ...

  7. 数据分析之pandas入门

    一.数据结构 1. Series 1.1 序列构造和调用 Series是一种类似于一维数组的对象,它由一组数据和索引共同组成,可以通过索引的方式来选取Series中的单个或一组值,常用的构造函数为ob ...

  8. 数据分析-pandas基础入门(一)

    最近在学习python,所以了解了一下Pandas,Pandas是基于NumPy的一个开源Python库,它被广泛用于快速分析数据,以及数据清洗和准备等工作. 首先是安装numpy以及pandas, ...

  9. 3个月零基础入门Python+数据分析,详细时间表+计划表分享

    ​大家好,我是白云. 今天想给大家分享的是三个月零基础入门数据分析学习计划.有小伙伴可能会说,英语好像有点不太好,要怎么办?所以今天我给大家分享的资源呢就是对国内的小伙伴很友好,还附赠大家一份三个月学 ...

随机推荐

  1. 做reacat小项目的过程(我感觉适合那种刚刚接触react感觉很深奥的亲们,通过这个可以建立一个很垃圾的项目,入门吧,往深处就需要自己再看了)

    需求:做一个react框架的前端框架(包括路由,请求后端等),大概就是做一个左边导航右边显示组件页面的东西,ui为material-ui 环境: 软件:vscode 包含的知识点:使用路由来导航,使用 ...

  2. 同一个类里@Cacheable缓存不起作用

    问题原因: 注解@Cacheable是使用AOP代理实现的 ,通过创建内部类来代理缓存方法,类内部的方法调用类内部的缓存方法不会走代理,所以就不能正常创建缓存,所以每次都需要去调用数据库. 解决方法: ...

  3. linux下如何删除乱码文件

    首先执行ls -i命令,此时在文件前面会出现一个数字,这个数字是文件的节点号 接着,执行命令 find -inum 节点号 -delete 即可将乱码文件成功删除

  4. 简单动态字符串-redis设计与实现

    简单动态字符串 Sds (Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示, 几乎所有的 Redis 模块中都用了 sds. 本章将对 sds 的实现 ...

  5. SSH 三大框架整合

    Spring整合web项目 在Servlet当中直接加载配置文件,获取对象 存在问题 每次请求都会创建一个Spring的工厂,这样浪费服务器资源,应该一个项目只有一个Spring的工厂. 在服务器启动 ...

  6. AWS 配置IPv6

  7. The First Python man in Github

    Python date VS(可视化了一下前几名) 查了下Github上星星最多的Python man 或许这就是目标吧 刚刚改了github.

  8. delphi 解决android 9上无法使用http协议

    delphi 解决android 9上无法使用http协议 安卓9不让客户端通过非https方式访问服务端数据(不允许发送明文http请求)的问题. 解决方法: 1.选择安卓平台编译一次程序,在项目根 ...

  9. Matrix: Matrix的,postScale(), postTranslate()方法

    Matrix的操作,总共分为translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)四种,每一种变换在Android的API里都提供了set, post和pre三种操作方 ...

  10. MindManager2018试用期过后 修改过期时间 破解使用

    MindManager2018试用期过后 修改过期时间 破解使用 2019年06月13日 15:58:11 一生中所爱 阅读数 1991更多 分类专栏: 工具软件使用   1.找到路径:C:\User ...