numpy+pandas+ matplotlib模块(day18)
目录
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)的更多相关文章
- 11-2 numpy/pandas/matplotlib模块
目录 numpy模块 一维数组 二维数组 列表list和numpy的区别 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的合并 通过函数方法创建多维数组 矩阵的运算 求最大值最小值 nump ...
- python 数据分析工具之 numpy pandas matplotlib
作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...
- 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn
本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...
- 常用统计分析python包开源学习代码 numpy pandas matplotlib
常用统计分析python包开源学习代码 numpy pandas matplotlib 待办 https://github.com/zmzhouXJTU/Python-Data-Analysis
- Python模块简介及安装 [numpy,pandas,matplotlib,scipy,statsmodels,Gensim,sklearn,keras]
https://pan.baidu.com/s/1bpVv3Ef 67bd 模块安装文件下载地址 pip install "numpy-1.12.0b+mkl-cp35- ...
- numpy, pandas, matplotlib等常用库的学习手册
pandas介绍: 待续 参考资料: 中文:https://www.cnblogs.com/skying555/p/5914391.html 英文:http://www.datadependence. ...
- Ipython自动导入Numpy,pandas等模块
一.引言 最近在学习numpy,书上要求安装一个Ipythpn,可以自动导入Numpy,pandas等数据分析的模块,可是当我安装后,并不能自动导入numpy模块,还需要自己import.我就去查了一 ...
- numpy+pandas+matplotlib+tushare股票分析
一.数据导入 安装tushare模块包 pip install tushare http://tushare.org/ tushare是一个财经数据接口包 import numpy as np imp ...
- numpy pandas matplotlib
import numpy as np import pandas as pd import matplotlib.pyplot as plt ---------------numpy--------- ...
随机推荐
- Django模板语言 标签整理
Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...
- python连接数据库查询
import sqlite3 as db conn = db.connect(r'D:/data/test.db') print ('Opend database successfully \n') ...
- vue中关于滚动条的那点事
vue中关于滚动条的那点事 不知道你有没有遇到过这种情况,有时当页面切换时,滚动条不在页面的顶端.最近半路加入一个项目,就遇到这种情况.(若只是为了解决此问题,可直接翻到最下方)下面谈谈解决此问题的过 ...
- 要不要学习Git(分布式版本控制系统)
做技术的人,要不要学一学Git呢? 提出这个问题,是因为很多小伙伴还不会使用Git. 对于任何新一代的技术工具,它在业界普及都有一个过程,Git的阻碍是:学习成本.工具迭代的成本. SVN诞生于200 ...
- Python学习笔记整理总结【Django】:Form组件
Form组件 Django的Form主要具有一下几大功能: --生成HTML标签 --验证用户数据(显示错误信息) --HTML Form提交保留上次提交数据 --初始化页面显示内容 1.内置字段 ...
- redis-分布式锁-消除竞争条件
因为信号量的设计过程中,获取一个信号量需要执行多个命令组成的流水,这样容易形成竞争条件. 为了消除信号量实现中所有可能出现的竞争条件,构建一个正确的计数信号量,需要在 信号量时,添加带有短暂超时时间的 ...
- idea 设置jvm参数
使用IDEA进行JVM参数设置: Run->Edit Configurations... 进入之后: 之后就可以运行代码测试,可以看到控制台打印的信息: 说明: -Xms:20M 初始化堆内存大 ...
- 【ADO.NET基础】后台获取前台控件
C# 后台获取前台 input 文本框值.string aa=Request.Form[headself]; 那么要是后台给前台input文本框赋值呢? 后台 public string Headse ...
- IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别
一.什么是socket?什么是I/O操作? 我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO.管道.终端,对我们来说,一切都是 ...
- bugku 一个普通的压缩包
压缩包打不开,用winhex打开压缩包,发现头文件是zip的,将后缀改为zip,成功解压. 打开发现还是个压缩包,而且打不开,提示secret.png损坏,使用winhex打开. 将a8 3c 7a ...