python pandas 介绍

前言

从Python 2020年学习笔记中单独拎出来作为内容的说明;

pandas的数据结构介绍

要使用pandas,得熟悉提供的两个主要数据结构:Series和DataFrame。

Series

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关 的数据标签(即索引)组成,感觉和字典有一点相似。Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,于是会自动 创建一个0到N-1(N为数据的长度)的整数型索引。pandas的isnull和notnull函数可用于检测缺失数据。对于许多应用而言,Series最重要的一个功能是,它会根据运算的索引标签自动对齐数据。

DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字 符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用 同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构),建DataFrame的办法有很多,最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典。DataFrame构造函数所能接受的各种数据如下所示。

  1. Numpy 中的集合函数
方法   说明
unique(x)   计算 x 中的唯一元素,并返回有序结果
intersect1d(x,y)   计算 x 和 y 中的公共元素,并返回有序结果
union1d(x,y)   计算 x 和 y 的并集,并返回有序结果
in1d(x,y)   得到一个表示“x 的元素是否包含于 y”的布尔型数组
setdiff1d(x,y)   集合的差,即元素在 x 中且不在 y 中
setxor1d(x,y)   集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素

伪随机数生成,部分 numpy random 函数

函数   说明
seed   确定随机数生成器的种子
permutation   返回一个序列的随机排列或返回一个随机排列的范围
shuffle   对一个序列就地随机排列
rand   产生均匀分布的样本值
randint   从给定的上下限范围内随机选取整数
randn   产生正态分布(平均值为 0, 标准差为 1) 的样本值,类似于 MATLAB 接口
binomial   产生二项分布的样本值
normal   产生正态(高斯)分布的样本值
beta   产生 beta 分布的样本值
chisquare   产生卡方分布的样本值
gamma   产生 Gamma 分布的样本值
uniform   产生在[0,1) 中均匀分布的样本值

这里重点的说一下如何使用 pandas + DataFrame 输出 xlsx 文件,这也是自己在工作中经常会遇到的一个问题,这里字典就会很有用处。这里先介绍下批量生成字符串的一种很简单的方法,比如自己在处理运动指令IP值时,对于机器人来说,有六个轴的,自己写 IP1,IP2,IP3 ... , 久而久之就会很烦的。。。。下面这样就会使得问题变得很简单(类似的,对于字符串可用 %s 来替代)

indexNames = ['IP%d'%i for i in range(1,7) ]

这样配合着字典,比如

for i in range(6):
dict[indexNames[i]] = IP[:,i] #这里IP的矩阵大小为N*6

再利用

df = pd.DataFrame(dic)
df.to_excel('test.xlsx',index=False)

即可将结果输出到 *.xlsx 文件中去了, 这里忘了交代个事,就是需要引入相关的包

import pandas as pd
from pandas import DataFrame

参考

[1] 菜鸟教程

3d打印 ai辅助设计 algorithms apriltag axis-angle bang-bang blender bode cadquery calibration camera calibration chrome cmake cmakelists cnn colcon conan control cpp cpu d435i data_struct db design-pattern dots economics eigen factory-pattern fcpx fiducial marker figure finance forge fov freecad gazebo gdb git gnu ibus interest isaac gym isaac lab isaaclab kdl latent variable latex launch learning-notes legged locomotion legged robotics legged-robot life linux linux-kernel mac math matlab matrix memory mlp money motion-control motor moveit mpc mujoco network ocs2 ode openscad operator optimal algorithm optimal-control perf performance personal-finance ppo privileged learning profiling python qos quadrotor realsense reinforcement learning representation learning reward tuning rnn robot robotics ros ros2 rtb security shell sim-to-real simulation socket stairs stl tcp-ip teacher policy thread tools twist ubuntu uml unitree urdf vae valgrind vcxsrv velocity vim web wifi work wsl 中文输入 交叉编译 依赖管理 分支管理 四足机器人 实验诊断 强化学习 机器人 机器人控制 机器人视觉 构建系统 深度学习 深度相机 点云 版本控制 神经网络 自主回充 视觉定位 训练曲线 输入法 配置类 飞控
知识共享许可协议