python模块之numpy与pandas
一、numpy
numpy是python数据分析和机器学习的基础模块之一。它有两个作用:1.区别于list列表,提供了数组操作、数组运算、以及统计分布和简单的数学模型;2.计算速度快[甚至要由于python内置的简单运算],使得其成为pandas、sklearn等模块的依赖包。高级的框架如TensorFlow、PyTorch等,其数组操作也和numpy非常相似。
1、随机数生成
常用的生成随机数的几个函数:
li = list(range(10))
print(li, type(li)) li = np.array(li)
print(li, type(li)) li = li.tolist() # list(li)也可以
print(li, type(li))
list和array互相转化
np.random.rand(10, 5) # 生成[0, 1]之间均匀分布的数组10行,5列 np.random.randn(10, 5) # 生成[0, 1]之间均匀分布的数组10行,5列 np.random.randint(10, 20, size=(10, 5)) # 生成[10, 20]之间随机数组10行,5列 np.random.random(size=(10, 5)) # 生成[0, 1]之间的10行5列的数组 li = list(range(10))
np.random.choice(li, size=(10, 5)) # 从li中产生随机数,生成10行5列的数组 np.arange(10, 20, 2, ) # 从[10, 20]中以步长为2生成一维数组
函数使用
其它不常见的随机数生成函数:
np.random.binomial(100, 0.5, size=(10, 5))
二项分布
2、数组切片
array对象的切片和list列表的切片操作相同。记住一个规则array[start: end: step]。
dt = np.random.binomial(100, 0.5, size=(10, 5))
dt[1: 3, :]
dt[[1,5], :]
dt[[1, 4, 7]]
dt[:, [2, 4]]
数组切片
一维和n维数组的转化
li = np.random.random((1, 100)).reshape(20, 5) # 将1行100列的数组转换成20行5列的新数组
print(li) li = li.reshape((2, -1)) # 将20行5列的数组转换成2行50列的新数组
# 将20行5列的数组转换为2行50列的数组,-1表示根据原数据和当前行[列]参数来自动生成列[行]数
print(li) li = li.reshape(-1, 100) # 将2行50列的数组转换成1行100列的数组
print(li)
数组维度转化
3、数组运算
# 加法
np.sum(l1) # 有意思的sum
np.sum(l1, axis=0)
np.sum(l1, axis=1)
np.sum([l1, l2])
np.subtract(l1, l2) # 减法
np.multiply(l1, l2) # 乘法
np.divide(l1, l2) # 除法
np.power(l1, l2) # 幂乘
np.floor_divide(l1, l2) # 地板除
np.floor(l1) # 向下取整
np.ceil(l1) # 向上取整
np.dot(l1, l2.T) # 点积 l2.T表示转置
np. # 以下和sum的使用方式相同
np.max(l1)
np.min(l1)
np.mean(l1)
np.median(l1)
np.std(l1)
np.var(l1)
# np.vander() # 必须是一维数组,
# li = np.arange(1, 5, step=1, dtype=int)
# np.vander(li, len(li))
numpy还有其它的一些常用函数,如np.exp(), np.abs()等,也可以通过np.loadtxt读取txt文件。
4、数组拼接
l1 = np.linspace(10, 20, num=72).reshape(12, 6)
l2 = np.random.random(size=(12, 6)) np.vstack((l1, l2)) # 按列拼接
np.hstack((l1, l2)) # 按行拼接 np.vsplit(l1, [3, 6, 9]) # 按行切割,参数3, 6, 9表示在第几行切割一下[包括这一行],生成一个list对象
np.hsplit(l1, [1, 3,]) # 按列切割
二、pandas
官方api: http://pandas.pydata.org/pandas-docs/stable/api.html#general-functions
pandas是python数据分析的核心模块。它主要提供了五大功能:
- 1.支持文件存取操作,支持数据库(sql)、html、json、pickle、csv(txt、excel)、sas、stata、hdf等。
- 2.支持增删改查、切片、高阶函数、分组聚合等单表操作,以及和dict、list的互相转换。
- 3.支持多表拼接合并操作。
- 4.支持简单的绘图操作。
- 5.支持简单的统计分析操作。
1、创建和存取pandas对象
dic = [
{
"name": "Li",
"age": 18,
"gender": "male"
},
{
"name": "Wusir",
"age": 16,
"gender": "female",
}
] df = pd.DataFrame(
data=dic,
index=None,
columns=["name", "age", "gender"], # list(dic.keys()),
dtype=None, # dtype不可用列表去给每个column去定义
)
字典创建
lis = np.random.random(size=(13, 5))
index = pd.period_range(start="2017-01-01", end="2018-01-01", freq="M")
# index = pd.period_range(start=pd.Period('2017Q1', freq='Q'), end=pd.Period('2017Q2', freq='Q'), freq='M')
df= pd.DataFrame(lis, index=index, columns=list("ABCED")).reset_index(drop=False)
数组创建
df.to_csv("test", header=True, index=False)
pd.read_csv("test")
保存成csv
import pandas as pd
import threading
import sqlalchemy
from sqlalchemy import create_engine engine = create_engine(
"mysql+pymysql://root:1234@127.0.0.1:3306/test?charset=utf8",
max_overflow=5,
pool_size=10,
pool_timeout=30,
pool_recycle=-1,
) df = pd.read_sql_table("test1", con=engine, columns=None)
读取一张table
import numpy as np
import pandas as pd
import pymysql def conn(sql):
# 连接到mysql数据库
conn = pymysql.connect(
host="localhost",
port=3306,
user="root",
passwd="",
db="test",
)
try:
data = pd.read_sql(sql, con=conn)
return data
except Exception as e:
print("SQL is not correct!", sep="\r\n\r\n")
finally:
conn.close() sql = "select * from test1 limit 0, 10" # sql语句
data = conn(sql)
# print(data.columns.tolist()) # 查看字段
print(data) # 查看数据
读取sql语句
使用的数据文件为: https://files.cnblogs.com/files/kuaizifeng/test.zip
2、切片与增删改查
待续。。。。。。
python模块之numpy与pandas的更多相关文章
- python模块之numpy,pandas基本用法
numpy: 是 Python 的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库简单来说:就是支持一维数组和多维数组的创建和操作,并有丰富的函数库. 直接看例子 ...
- python模块之numpy
Numpy是一个第三方库,是数组相关的运算 通过pip安装:pip install numpy Anaconda python的一个科学计算发行版本,安装后将不必单独安装numpy,下面的库模块也将不 ...
- day18-常用模块III (numpy、pandas、matplotlib)
目录 numpy模块 创建矩阵 获取矩阵的行列数 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 矩阵的运算 矩阵的点乘与转置 矩阵的逆 矩阵的其他操作 numpy.random生成随机数 pa ...
- python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
- [转] python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
- Python入门之安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了. 首要条件,python版本必 ...
- 【转载】python安装numpy和pandas
转载:原文地址 http://www.cnblogs.com/lxmhhy/p/6029465.html 最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装 ...
- 101道Numpy、Pandas练习题
无论是数据分析还是机器学习,数据的预处理必不可少. 其中最常用.最基础的Python库非numpy和pandas莫属,很多初学者可能看了很多教程,但是很快就把用法忘光了. 光看不练假把式,今天向大家推 ...
- Python之路-numpy模块
这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...
随机推荐
- MySQL数据库密码破解
研究MySQL数据库的加解密方式,在网络攻防过程中具有重要的意义:试想一旦获取了网站一定的权限后,如果能够获取MySQL中保存用户数据,通过解密后,即可通过正常途径来访问数据库:一方面可以直接操作数据 ...
- Spring Boot启动过程(六):内嵌Tomcat中StandardHost、StandardContext和StandardWrapper的启动
看代码有助于线上出现预料之外的事的时候,不至于心慌... StandardEngine[Tomcat].StandardHost[localhost]的启动与StandardEngine不在同一个线程 ...
- [Objective-C语言教程]错误处理(22)
在Objective-C编程中,错误处理由Foundation框架中提供的NSError类提供处理. 与仅使用错误代码或错误字符串相比,NSError对象封装了更丰富且更具可扩展性的错误信息. NSE ...
- [VB6.0-->VB.NET]关于VB6.0升级到VB.NET的微软官方文档
升级流程大体是这样的: 1.用VS2008打开Vb6.0的工程(此时针对语言层面自动升级). 注: VS更新多版了(当前最新VS2017),用最新版再打开2008升级后的工程的时候还是会有自动升级,相 ...
- (转)Javascript模块化编程(二):AMD规范
转自 ruanyifeng 系列目录: Javascript模块化编程(一):模块的写法 Javascript模块化编程(二):AMD规范 Javascript模块化编程(三):Require.js的 ...
- mysql随机取出若干条记录的实用方法
1.常见的方法 ; 这种方法可以随机取得数据,但是如果表比较大,数据量很多的时候会很耗时. 2.优化后的方式 ) as t ); 分析,首先根据条件筛选出要选的数据,然后随机排序取出要的条数的id , ...
- 分布式系统的Raft算法学习笔记
摘取自: http://mp.weixin.qq.com/s?__biz=MzIyMTQ1NDE0MQ==&mid=2247483979&idx=1&sn=12864382e ...
- 2016级算法期末模拟练习赛-E.AlvinZH的青春记忆III
1083 AlvinZH的青春记忆III 思路 难题,二分图. 说这是一个考察二分图的题目,你可以会说"不可能",这哪里像一个二分图了!这真的是一个二分图,考察的是最小顶点覆盖. ...
- Servlet+JSP+JDBC设计实现图书系统——管理功能实现
写在前面,之前由于种种原因博客好久没有更新.最近打算重拾JavaWeb,所以从头开始,先用servlet+jdbc+bootstrap最基础的代码实现一个图书系统.考虑有管理员端+用户端,项目完成后会 ...
- CentOS7.6下模拟iSCSI,Windows来连
如题,在CentOS7上模拟一个iSCSI设备,然后在Windows Server 2008上连接这个iSCSI设备 第一步,CentOS7上的操作.CentOS7上安装iSCSI模拟器需要3个包,我 ...