前言
从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构造函数所能接受的各种数据如下所示。
- 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): |
再利用
df = pd.DataFrame(dic) |
即可将结果输出到 *.xlsx
文件中去了, 这里忘了交代个事,就是需要引入相关的包
import pandas as pd |
参考
[1] 菜鸟教程