Numpy、Pandas使用大全与各参数详解

2023-10-30

目录

一、numpy

1、属性、方法与操作

(1)属性

(2)方法

(3)操作

2、文件读取与保存

(1)文件读取

(2)文件保存

3、矩阵生成

二、Pandas

1、属性与方法

(1)属性

(2)方法

2、数据选取

(1)取行

(2)取列

3、数据处理

(1)数据缺失值

(2)空值处理

(3)数据重复处理

(4)数据合并

(5)数据排序

(6)数据分组

4、数据导入与读取

(1)数据库导入

(2)文件读取

5、文件导出

6、数据转换

7、可视化matplotlib函数


一、numpy

1、属性、方法与操作

数据类型:ndarray

(1)属性

.ndim:矩阵维度

.shape:矩阵的形状

.size:矩阵中元素的个数

.dtype:元素数据类型

.T:矩阵的转置

(2)方法

reshape(shape):返回新的数组

resize(shape):返回修改原有的数组

sum()、max()、min()、mean():可设置axis按行列计算

tolist():array转变为list

fill(value):填充

(3)操作

array[行索引]:索引

array[起始行:结束行:步长,起始列:结束列:步长]:切片

2、文件读取与保存

(1)文件读取

np.loadtxt(filename,delimiter=,encoding=):文件读取以及参数

dtype:默认以浮点数类型读取

comments:默认忽略掉文件中以#号开头的注释行

delimiter:无默认值,应该指定分隔符如‘,’

usecols:默认取所有列,可以设置读取指定的列如(1,3)指文件的第2和第四列

skiprows:默认0,不跳过头行,可是这跳过开头的n行

maxrows:默认取文件的所有行,可设置读取文件的最大行数,不包括skiprows

(2)文件保存

np.savetxt(filename,array_data,):文件保存以及对应参数

fmt:默认以高精度浮点数保存数据,可以设置如整数‘%d’

delimiter:默认以空格分隔符字段,课设置CSV如‘,’

encoding:默认字符编码模式

3、矩阵生成

np.array(object):生成array数据

np.empty(shape),np.empty_like(a):生成空矩阵

np.zeros(shape), np.zeros_like(a):生成全为0的矩阵

np.ones(shape), np.ones_like(a):生成全为1的矩阵

np.full(shape,value), np.full_like(a,value):生成指定value和类型的矩阵

np.eye(ndim):生成指定维度且对角线为1,其余地方为0的矩阵

np.fromstring():创建一个新的一维数组,该数组从字符串中的文本数据初始化

np.arange(start,end,step):通过arange函数生成一个array对象

np.linspace(first,last,size):可以生成等间距数组

np.concatenate([a,b],axis=0):用来对数列或矩阵进行合并的

np.random.rand(), np.random.randn(), np.random.randint(),np.random.uniform(), np.random.normal(), ...:通过Python的随机函数进行array数据类型创建

np.sum(), np.mean(), np.median(), np.max(), np.min(), np.std(),...聚合函数

二、Pandas

1、属性与方法

(1)属性

.index:获取行索引对象

.values:获取element数组

.shape/.ndim/.size/.dtype:数组/维度/大小/类型

.columns:获取列索引对象

.T:获取转置DataFrame

(2)方法

.get(列名,缺省值):获取列和df[列名]类似,但不会因列名不存在报错

.copy():复制一个新对象

.head(n)/.tail(n):头/尾n行

.max()/.min()/.mean()/.median()... .describe():数据分布与统计

.insert(插入位置,插入列,插入数据):插入一列

.drop(行号)、.drop(列名,axis=1):删除行\列,默认删除行列后生成新的dataframe,如需要在原dataframe上删除可设置参数inplace=True。

del df[列名]:删除列,直接作用在df上

.drop_duplicates(subset=[列名],keep=“first|last”,inplace=False):删除重复项

.unique():唯一值

.set_index(列名):使用某列作为index

.reset_index(drop=True|False,inplace=True|False)

.apply(np.sum):对每列数据执行指定的函数运行

df.apply(function,axis=1):生成新列

.apply_map(function):对每个单元格元素执行指定的运算函数

2、数据选取

(1)取行

按行索引(index)标签取:

df.loc[行标签]:取一行数据导一个Series对象

df.loc[[行标签]]:取一行数据导dataframe对象

df.loc[[行标签1,行标签2,行标签3,...]]:取多行数据到一个dataframe

df.loc[首行标签:末行标签:步长]:行切片

按照行索引(index)位置取

df.iloc[行号]:取一行数据到一个Series对象

df.iloc[[行号]]:取一行数据到一个dataframe对象

df.iloc[[行号1,行号2....]]:取多行数据到一个DataFrame对象

df.iloc[起始行号:结束行号:步长]:行切片

(2)取列

①按列名取:

df[列标签]:取一列数据到一个Series对象

df[[列标签]]:取一列数据到一个dataframe对象

df.loc[[列标签1,列标签2,列标签3,...]]:取多列数据到一个dataframe

df.loc[首列标签:末列标签:步长]:列切片

②按照列索引(index)位置取:

df.iloc[:,列号]:取一列数据到一个Series对象

df.iloc[:,[列号]]:取一列数据到一个dataframe对象

df.iloc[:,[列号1,列号2....]]:取多列数据到一个DataFrame对象

df.iloc[:,起始列号:结束列号:步长]:列切片

③取行列数据:

df.loc[[行标签1,行标签2...],[列标签1,列标签2,...]]:df.loc[按行标签取,按列标签取]

df.loc[首行标签:末行标签:步长, 首列标签:末列标签:步长]:切片

df.iloc[[行号1,行号2,...], [列号1,列号2,...]]:df.iloc[按行位置取,按列位置取]

df.iloc[起始行号:结束行号:步长, 起始列号:结束列号:步长]:切片

3、数据处理

(1)数据缺失值

np.nan\pd.nat:空值类型

.isna():得到一个元素是否为空的bool矩阵(空值检测)

.notna():得到一个元素是否不为空的bool矩阵(空值检测)

(2)空值处理

①空值填充:

.fillna(填充值):使用填充值去填充空值部分

.fillna(method='ffill'):用上一个值填充空值

.fillna(method='bfill'):用下一个值填充空值

.fillna(method='ffill',axis=1):用左一个值填充空值

.fillna(method='bfill',axis=1):用右一个值填充空值

df["成绩"].fillna(df["成绩"].mean()):用给定值填充空值

②空值清除

.dropna():默认除去包含任意空值的行

.dropna(axis=1):去除包含任意空值的行

.dropna(how='all'):只有一行所有值都为空才去除

.dropna(subset=包含空值的行或列):只判断给定行或列中是否有空值

(3)数据重复处理

.duplicated():生成一个是否重复行的bool数组(数据重复检验)

.drop_duplicates():去除重复项,其中.drop_duplicates(subset=列名)按照列名检测重复项

(4)数据合并

pd.concat([df1,df2],axis=0):行拼接,列集合

pd.concat([df1,df2],axis=1):列拼接,行集合

df1.merge(df2,left_on=左表列名,right_on=右表列名, how='innerleft|right|outer|cross'):默认使用相同的列进行关联,也可以指定两个df的不同名关联列

df1.join(df2,on=列名或列号,how='left|right|inner|outer'):默认使用index进行关联,也可以指定两个df的公共关联列

(5)数据排序

.sort_index():对行索引排序(按index排序)

.sort_index(axis=1):对列索引(列名)排序(按index排序)

.sort_values(by):按by列值排序

.sort_values(by, axis=1):按by行值排序

通用参数:

- ascending:True升序,False降序

- inplace: 是否修改原数据

- na_position: "first"|"last" 缺失值排在最前或最后

(6)数据分组

①使用.groupby()方法分组

df_student.groupby("班级"):单字段分组

df_student.groupby(["班级","性别"]):多字段分组

②使用函数分组

01、行

def set_index_group(index):

    if index % 2 == 0:

        return "偶数行"

    else:
    
        return "奇数行"

df_iris.groupby(set_index_group)

02、列

def set_column_group(column_name):

    if "length" in column_name:

        return "length"

    elif "width" in column_name:

        return "width"

    else:

        return "classfication"

df_iris.groupby(set_column_group,axis=1)

03、GroupBy对象

.groups:得到所有的group

.get_group():得到指定的group

.apply():对group数据执行函数

.agg()|.aggregate():对group进行聚合统计

.max()/.min()/.mean()/.median()/.sum()/......:对group数据统计

4、数据导入与读取

(1)数据库导入

参数1:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='密码',db='数据库名')

参数:2:conn=sqlite3.connect('mydb.db')

pd.read_sql_query(sql,conn):连接关系数据库执行SQL语句并获取结果集

(2)文件读取

pd.read_csv(file):

参数:

delimiter|sep=',':分隔符

comment='#':注释符

encoding='utf-8':文本编码

header=0:列头行

names=[]:指定列名

index_col=[]:指定列作为行索引

usecols=[]:读取指定列

skiprows=0:跳过数据行数

skipfooter=0:截止数据行数

nrows=0:读取数据行数

parse_dates=False:是否转换日期字符串为日期格式

infer_datetime_format=False:是否自动设置日期格式

pd.read_excel(file):sheet_name=0:指定工作表

pd.read_xml(file_or_buffer):xpath='./*':指定读取XPATH路径

pd.read_html(file_or_buffer):读取HTML页面

pd.read_json():读取JSON字符串或者JSON文件

pd.read_pickle():读取pickle序列化文件

5、文件导出

df.to_csv():将df数据写入分隔符文本文件

df.to_excel():将df数据写入Excel表格文件

df.to_xml():将df数据写入XML文件

df.to_html():将df数据写入HTML文件

df.to_json():将df数据写入JSON文件

df.to_pickle():将df数据写入pickle序列化文件

df.to_dict():转换成字典

6、数据转换

df.to_numpy():转换成Numpy数组

df.to_string():转换成字符串

7、可视化matplotlib函数

df.plot():绘制折线图

df.plot.bar():绘制柱状图

df.plot.barh():绘制横柱图

df.plot.scatter():绘制散点图

df.plot.box():绘制箱型图

df.plot.hist():绘制直方图

df.plot.pie():绘制饼图

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy、Pandas使用大全与各参数详解 的相关文章

随机推荐

  • 减少数据打拍翻转的低功耗设计方法

    在流水设计中 时常会遇到对某一路数据打多拍从而对齐另一路数据的场景 而除了最后一拍是真正需要的 中间的打拍从功耗上来看是有点浪费的 举个例子 对8bit in data打4拍 总共需要用到4个8bit寄存器 常规打拍方法传输4个数据 D0
  • android 屏幕适配--------解决方案

    以下是Demo首页的预览图 demo下载 http www eoeandroid com forum php mod attachment aid NjE0Njh8ZTIyZDA2M2N8MTMzODgyOTQxN3w1NzAwOTV8MT
  • Spring Boot实现QQ邮件发送,用户注册功能——前后端分离版

    1 准备工作 我们需要前往我们的QQ邮箱开启相关功能 登录QQ邮箱后 点击进入 设置 在账户在一栏中 我们可以找到这个界面 然后点击开启 POP3 SMTP服务 他们会让我们用QQ的密保手机发送一条短信 我们照着即可 验证成功之后 会获得一
  • ISP记1

    目录 0 参考 1 噪声分类 1 1 空间区域 1 1 1 高斯噪声 1 1 2 瑞利噪声 1 1 3 伽马噪声 1 1 4 均匀分布噪声 1 1 5 泊松噪声 1 1 6 加性噪声 乘性噪声 0 参考 数字图像滤波算法的研究及应用 倪层敏
  • anaconda+pytorch安装说明

    第一步 anconda的安装 大家可以参考以下博文 写的比较简约 看起来比较清爽 https blog csdn net ITLearnHall article details 81708148 Anacond的介绍 Anaconda指的是
  • chisel线网(wire)和寄存器(reg)详解(更新)

    主体内容摘自 https blog csdn net qq 34291505 article details 87714172 在Verilog里 模块内部主要有 线网 wire 和 四态变量 reg 两种硬件类型 它们用于描述数字电路的组
  • QVariant的使用

    在有些情况下 我们希望把数据存储在一个变量中 例如 我有一个数组 既希望存整数 又希望存浮点数 还希望存string 想了一个方法 创建一个object类 这是一个很大的类 里面几乎包含了所有类型的数据 如下 class Object pu
  • Java合并两个有序数组

    合并排序 将两个已经排序的数组合并成一个数组 其中一个数组能容下两个数组的所有元素 public class MergeArray public MergeArray public static ArrayList
  • 【APB协议详解】

    APB协议详解 APB Advanced Peripheral Bus 作为高级外设总线是AMBA协议之一 也是最基本的总线协议 按照ARM官方定义 APB是一种低成本的接口协议 可以实现低功耗以及精简的接口设计 降低接口设计的复杂度 AP
  • adb操作提示Read-only file system问题

    Android adb调试时 经常会遇到权限问题 failed for system lib libmm test so Read only file system 即使Root设备 在向 system等系统文件夹操作时 比如push rm
  • Shell基础—正则表达式(通配符、模式表达式)详解【附例】

    Shell基础 正则表达式 正则表达式是一种可以用于模式匹配和替换的工具 通过正则表达式 Shell可以使用一系列的特殊字符构建匹配模式 然后将匹配模式与待比较字符串或文件进行比较 根据比较对象中是否包含匹配模式 执行相应的程序 1 通配符
  • 【环境搭建】Notepad++显示16十六进制编码

    环境搭建 Notepad 显示16十六进制编码 by 041 打开插件 gt 插件管理 找到HEX Editor 安装 重启Notepad 选择插件 gt HEX Editor gt View in HEX 即可显示16进制文件
  • ubuntu18.04使用Mysql指令

    前言 在使用Ubuntu中 对MySQL不熟悉 在实践中不断总结 不断更新 目录 前言 在使用Ubuntu中 对MySQL不熟悉 在实践中不断总结 不断更新 一 安装MySQL 1 更新 2 安装数据库 3 查看版本 二 sql语句 1 启
  • F - Tickets

    F Ticketshttps vjudge csgrandeur cn problem Gym 101911F 暴力 超时 时间复杂度 2 1e5 1e6 别忘了还有查询 include
  • TCP-服务器监听

    package main import fmt net func process conn net Conn 这里我们循环的接收客户端发送的数据 defer conn Close 关闭conn for 创建一个新的切片 buf make b
  • Java抽象类和接口

    一 抽象类 在面向对象的概念中 所有对象都是通过类来描绘的 但并不是所有类都是用来描绘对象的 如果一个类中没有足够的属性和行为来描绘一个完整具体的对象 Java 提供了一个语法 抽象类 例如我们需要一个描述形状的类 成员方法可以输出当前的形
  • Python获取电脑信息

    我做了一个Python获取电脑信息的程序 小部分代码是网上找的 本来想把这个做成一个坑人小程序的 到后面没有灵感了 有想法的可以帮我做一下 私聊发代码给我 代码 pycharm运行通过 coding utf 8 import wmi imp
  • C++数据结构X篇_08_C++实现栈的顺序存储与链式存储

    本篇参考C 实现栈的顺序存储与链式存储整理 先搞懂结构框架 后期根据视频利用c对内容实现 也可以对c有更高的提升 文章目录 1 栈的顺序存储 2 栈的链式存储 栈是一种特殊的数据结构 栈中数据先进后出 且栈中数据只能从头部出栈 能直接访问的
  • 数据库删除数据的方式

    数据库删除数据的方式主要是有三种 drop delete truncate 他们之间的区别在于 1 删除的内容不同 drop 用于删除数据库 数据表 以及 删除数据表中的字段 删除数据库 drop database 数据库名 删除数据表 d
  • Numpy、Pandas使用大全与各参数详解

    目录 一 numpy 1 属性 方法与操作 1 属性 2 方法 3 操作 2 文件读取与保存 1 文件读取 2 文件保存 3 矩阵生成 二 Pandas 1 属性与方法 1 属性 2 方法 2 数据选取 1 取行 2 取列 3 数据处理 1