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] 菜鸟教程

CMakeLists Eigen FCPX GNU Gazebo Git Interest KDL Life Linux Matrix ODE ROS Ros UML Ubuntu VcXsrv algorithm algorithms axis-angle bode calibration chrome control cpp data_struct dots figure gdb latex launch life linux mac math matlab memory motor moveit operator optimal algorithm python robot robotics ros ros2 rtb simulation stl thread tools twist urdf velocity vim web work wsl
知识共享许可协议