numpy模块

用来数据分析,对numpy数组(矩阵)

import numpy as np

arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
print(arr1 * arr2)  # [4,10,18]

二维数组

arr = np.array([
    [1,2,3],
    [4,5,6]
])  

numpy数组的属性

T 数组的装置

print(arr.T)  # 对高维数组而言,行列互换,转置

dtype 数组元素的数据类型

numpy数组是属于python解释器(int32/float64)

print(arr.dtype)

size 数组元素的个数

print(arr.size)  # 6

ndim 数组的维数

print(arr.ndim)  # 2

shape数组的维度大小

print(arr.shape())  # (2,3) 行,列

astype 类型转换

arr = arr.astype(np.float64)
print(arr)  

切片

print(arr[:,:])  # 行,列

print(arr[0,0])  # 1

print(arr[0.:])  # 第一行所有元素

print(arr[:,-2:])  # 最后两列元素

print(arr[arr>4])  # 大于4的元素

赋值

arr[0,0] = 0  # 第1行第1列元素为0

arr[0,:] = 0  # 第一行元素都为0

arr[:,:] = 0  # 所有元素均为0

数组的合并

arr1 = np.array([
    [1, 2, 3],
    [4, 5, 6]
])

arr2 = np.array([
    [7, 8, 9],
    ['a', 'b', 'c']
])

print(np.hstack((arr1,arr2)))  # 按行合并(只能放元组)

print(np.vstack((arr1,arr2)))  # 按列合并

prtin(np.concatenate((arr1,arr2),axis = 1))  # 默认按列合并,0表示列,1表示行

通过函数创建numpy数组

print(np.ones((2,3)))  # 创建一个2行3列元素均为1的数组(只能放元组)

print(np.zeros((2,3)))  # 创建一个2行3列元素均为0的数组

print(np.eye(3,3))  # 创建一个n行n列均为1,其他元素为0的数组

print(np.linspace(1,100,10))  # 创建一个间隔(100-1)/(10-1)的从1到100的数组

print(np.arange(2,10))  # 创建2-9的数组(顾头不顾尾)

arr1 = np.zeros((1,12))
print(arr1.reshape((3,4)))  # 重构成3行4列的数组

numpy数组运算

# =-*/ // ** %
arr1 = np.ones((3,4)) * 4
print(arr1)

# sin
print(np.sin(arr1))  

# 矩阵运算(点乘)
arr1 = np.array([
    [1,2,3],
    [4,5,6]
])

arr2 = np.array([
    [1, 2],
    [4, 5],
    [6, 7]
])

print(np.dot(arr1, arr2))  # 2* 3 3*2

# 求逆
arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
print(np.linalg.inv(arr))

# numpy数组数学和统计方法
print(np.sum(arr[0, :]))

numpy.random生成随机数

print(np.random.rand(3, 4))  #产生均匀分布的随机数

print(np.random.randn(3, 4))  #产生标准正态分布随机数

print(np.random.random((3, 4)))

np.random.seed(1)  # 固定随机数

rs = np.random.RandomState(1)  # 固定随机数
print(rs.rand(10))

arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
np.random.shuffle(arr)
print(arr)  # 打乱顺序

print(np.random.randint(1, 100, (3, 4)))  # 针对某一个范围

matplotlib模块

条形图bar

from matplotlib import pyplot as plt

# 导入字体格式
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='C:\Windows\Fonts\simsun.ttc')   # 通过FontProperties中的关键字fname把字体格式传入到font

# 原数据
clas = ['3班', '4班', '5班', '6班']
students = [50, 55, 45, 60]

# 设置背景模板
plt.style.use('ggplot')

#range索引x轴的柱数
clas_index = range(len(clas))

# 通过bar画出柱状图,设置颜色
plt.bar(clas_index,students, color = 'darkblue')

# 通过xlabel\ylabel\title设置x轴\y轴标题和主标题
plt.xlabel('班级',fontproperties=font)
plt.ylabel('人数',fontproperties=font)
plt.title('班级-人数',fontproperties=font)

# 通过xticks将x轴索引柱数替换成clas,并设置字体格式
plt.xticks(clas_index, clas, fontproperties=font)

# 通过show将图标展示
plt.show()

直方图hist

from matplotlib import pyplot as plt
import numpy as np

#从matplotlib.font_manager导入字体
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='C:\Windows\Fonts\simsun.ttc')  # 通过FontProperties中的关键字fname把字体格式传入到font

# 通过style.use设置背景模板
plt.style.use('ggplot')

# 利用numpy/random/randn生成数据
x1 = np.random.randn(10000)  # 标准正态分布随机数
x2 = np.random.rand(10000)

# 通过figure生成画布, 再通过add_subplot控制生成画板的个数
fig = plt.figure()  # 生成画布
ax1 = fig.add_subplot(1,2,1)  # 分成1行2列的画板取第一个
ax2 = fig.add_subplot(1,2,2)  # 分成1行2列的画板取第二个

# 利用numpy/random/randn生成数据
x1 = np.random.randn(10000)  # 标准正态分布随机数
x2 = np.random.randn(10000)

# # 设置画板的调用数据\背景颜色
ax1.hist(x1,bins = 50, color = 'darkblue')  # bins=50表示每个变量的值分成50份,即会有50根柱子
ax2.hist(x2,bins = 50, color = 'y')

# 通过suptitle设置总标题
fig.suptitle('两个正太分布',fontproperties =font,fontsize = 20)

#通过set_title设置两个分标题
ax1.set_title('x1的正态分布',fontproperties = font)
ax2.set_title('x2的正态分布',fontproperties = font)

# 通过show展示出来
plt.show()

折线图plot

import numpy as np

#导入matplotlib中的pyplot功能
from matplotlib import pyplot as plt  # 导入matplotlib中的pyplot
from matplotlib.font_manager import  FontProperties  # 通过.font_manager导入FontProperties

# 通过FontProperties(fname = )导入字体
font = FontProperties(fname= 'C:\Windows\Fonts\simsun.ttc')
# 设置背景模板(style.use)
plt.style.use('ggplot')

# 通过numpy模块生成数据
np.random.seed(1)
x1 = np.random.randn(40).cumsum()  # 累加
x2 = np.random.randn(40).cumsum()  # 累加
x3 = np.random.randn(40).cumsum()  # 累加
x4 = np.random.randn(40).cumsum()  # 累加

# 通过plot画出折点图,linestyle线的类型(-/--/-./:), marker点的形状(o/*/s)
plt.plot(x1,c = 'r', linestyle = '-',marker = 'o', label = '红圆线')  # 红色,实线,圆点
plt.plot(x2,c = 'b', linestyle = '--',marker = '*', label = '蓝星线')  # 蓝色,虚线,星点
plt.plot(x3,c = 'y', linestyle = '-.',marker = 's', label = '黄方线')  # 黄色,实点线,方点
plt.plot(x4,c = 'black', linestyle = ':',marker = 's', label = '黑方线')  # 黑色,点线,方点

# 通过legend设置说明
plt.legend(loc = 'best',prop = font)

# 展示(show)
plt.show()

散点图scatter+直线图plot

import  numpy as np

# 导入模块(pyplot) 字体(.font_manager导入FontProperties)
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties

font = FontProperties(fname = 'C:\Windows\Fonts\simsun.ttc')

# 模板(style.use)
plt.style.use('ggplot')

# 分画布(figure)
fig = plt.figure()
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)

#生成数据(arange)
x = np.arange(20)
y = x**2

x2 = np.arange(20)
y2 = x2

# 折点图
ax1.scatter(x,y,c = 'r',label = '红')
ax1.scatter(x2,y2,c = 'y',label = '黄')

# 直线图
ax2.plot(x,y)
ax2.plot(x2,y2)

# 添加标题
fig.suptitle('两张图', fontproperties=font, fontsize=15)
ax1.set_title('散点图', fontproperties = font)
ax2.set_title('折线图', fontproperties = font)
# 展示show
plt.show()

pandas模块

操作excel/json/sqlini/csv

import numpy as np
import pandas as pd

np.random.seed(1)

index = pd.date_range('2019-01-01',periods= 6, freq= 'M')
print(index)
columns = ['c1', 'c2', 'c3', 'c4']
print(columns)
data = np.random.randn(6, 4)
print(data)

# .DataFrame生成dataframe数据结构
df = pd.DataFrame(index=index, columns=columns,data =data)
print(df)

# to_excell保存文件,读出成文件
df.to_excel('data.xlsx')

# 读出文件
df = pd.read_excel('data.xlsx',index_col=[0])
print(df)

print(df.index)
print(df.columns)
print(df.values)

print(df[['c1', 'c2']])

# 按照index取值
print(df.loc['2019-01-31'])
print(df.loc['2019-01-31':'2019-05-31'])

# 按照values取值
print(df)
print(df.iloc[0,0])

df.iloc[0, :] = 0
print(df)

numpy+pandas+ matplotlib模块(day18)的更多相关文章

  1. 11-2 numpy/pandas/matplotlib模块

    目录 numpy模块 一维数组 二维数组 列表list和numpy的区别 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的合并 通过函数方法创建多维数组 矩阵的运算 求最大值最小值 nump ...

  2. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

  3. 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn

    本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...

  4. 常用统计分析python包开源学习代码 numpy pandas matplotlib

    常用统计分析python包开源学习代码 numpy pandas matplotlib 待办 https://github.com/zmzhouXJTU/Python-Data-Analysis

  5. Python模块简介及安装 [numpy,pandas,matplotlib,scipy,statsmodels,Gensim,sklearn,keras]

    https://pan.baidu.com/s/1bpVv3Ef  67bd          模块安装文件下载地址 pip install "numpy-1.12.0b+mkl-cp35- ...

  6. numpy, pandas, matplotlib等常用库的学习手册

    pandas介绍: 待续 参考资料: 中文:https://www.cnblogs.com/skying555/p/5914391.html 英文:http://www.datadependence. ...

  7. Ipython自动导入Numpy,pandas等模块

    一.引言 最近在学习numpy,书上要求安装一个Ipythpn,可以自动导入Numpy,pandas等数据分析的模块,可是当我安装后,并不能自动导入numpy模块,还需要自己import.我就去查了一 ...

  8. numpy+pandas+matplotlib+tushare股票分析

    一.数据导入 安装tushare模块包 pip install tushare http://tushare.org/ tushare是一个财经数据接口包 import numpy as np imp ...

  9. numpy pandas matplotlib

    import numpy as np import pandas as pd import matplotlib.pyplot as plt ---------------numpy--------- ...

随机推荐

  1. Django模板语言 标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  2. python连接数据库查询

    import sqlite3 as db conn = db.connect(r'D:/data/test.db') print ('Opend database successfully \n') ...

  3. vue中关于滚动条的那点事

    vue中关于滚动条的那点事 不知道你有没有遇到过这种情况,有时当页面切换时,滚动条不在页面的顶端.最近半路加入一个项目,就遇到这种情况.(若只是为了解决此问题,可直接翻到最下方)下面谈谈解决此问题的过 ...

  4. 要不要学习Git(分布式版本控制系统)

    做技术的人,要不要学一学Git呢? 提出这个问题,是因为很多小伙伴还不会使用Git. 对于任何新一代的技术工具,它在业界普及都有一个过程,Git的阻碍是:学习成本.工具迭代的成本. SVN诞生于200 ...

  5. Python学习笔记整理总结【Django】:Form组件

     Form组件  Django的Form主要具有一下几大功能: --生成HTML标签 --验证用户数据(显示错误信息) --HTML Form提交保留上次提交数据 --初始化页面显示内容 1.内置字段 ...

  6. redis-分布式锁-消除竞争条件

    因为信号量的设计过程中,获取一个信号量需要执行多个命令组成的流水,这样容易形成竞争条件. 为了消除信号量实现中所有可能出现的竞争条件,构建一个正确的计数信号量,需要在 信号量时,添加带有短暂超时时间的 ...

  7. idea 设置jvm参数

    使用IDEA进行JVM参数设置: Run->Edit Configurations... 进入之后: 之后就可以运行代码测试,可以看到控制台打印的信息: 说明: -Xms:20M 初始化堆内存大 ...

  8. 【ADO.NET基础】后台获取前台控件

    C# 后台获取前台 input 文本框值.string aa=Request.Form[headself]; 那么要是后台给前台input文本框赋值呢? 后台 public string Headse ...

  9. IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别

    一.什么是socket?什么是I/O操作? 我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO.管道.终端,对我们来说,一切都是 ...

  10. bugku 一个普通的压缩包

    压缩包打不开,用winhex打开压缩包,发现头文件是zip的,将后缀改为zip,成功解压. 打开发现还是个压缩包,而且打不开,提示secret.png损坏,使用winhex打开. 将a8 3c 7a ...