Restudy Pandas Ⅰ

1.Pandas为我们提供生成时间序列相关的测试案例的模块:util.testing

导入的时候可以以简写的形式:

import pandas._testing as tm 

相关函数:

  1. makeTimeDataFrame(dimension):
    生成shape为dimension X dimension的数据,index默认为2000-01-03开始的时间序列(type=DatetimeIndex,freq=‘B’),column_name默认A开始的字母
  2. makeCustomDataframe(nrows,nrols):
    随机生成指定维度的DataFrame
  3. makeMissingDataframe():
    生成包含缺失值的DataFrame,index默认随机生成的字母组合(不是时间),column_name默认A开始的字母
  4. makeMixedDataFrame():
    生成包含日期的DataFrame,index默认为0开始的数字,column_name默认A开始的字母
  5. makeTimeSeries(N):
    生成时间序列作为索引,float型随机数的Series

例:pandas._testing
有了这个模块,我们就不用老是重新生成一个随机数构成的时间序列来学习时间序列相关的处理函数了。

1.1.makeTimeDataFrame(dimension)

import pandas._testing as tm 
test = tm.makeTimeDataFrame(4)
test

于是,我们生成了一个以时间作为索引,column自动命名为字母的DataFrame。

	              A	   		 B			C			D
2000-01-03	0.758524	0.173511	1.179741	1.071383
2000-01-04	1.173593	-0.076126	1.031373	1.360819
2000-01-05	0.240928	0.808723	0.828984	-0.436740
2000-01-06	-0.049748	-0.845401	-1.515344	-0.255429

但是这里我们不难注意到一个问题,生成的维度不能指定,这时我们可以用另一个作用类似的函数,同时还可以指定对应的维度。

import pandas._testing as tm 
test34 = tm.makeCustomDataframe(nrows=3,nrols=4)
test34

1.2.makeCustionDataframe()

或者再从内容的角度考虑,生成一个包含缺失值的DataFrame,使用函数makemissingDataframe()

1.3.makeMissingDataframe()

import pandas._testing as tm  
testmissing = tm.makeMissingDataframe()
testmissing

于是我们有:

			A		B			C			D
Ld3bSoi3AX	NaN	-1.015124	1.298785	0.791939
ZUY5dsiowI	-1.702082	-1.901720	0.193204	-0.977149
gsLMx5qevy	-0.119081	-1.393995	0.168655	1.418782
DsMTi5ATqH	-0.844823	-0.272969	0.145658	1.156752

或者内容包含时间的(生成的DataFrame的索引不是时间),这里我们用makeMixedDataFrame()

1.4.makeMixedDataFrame()

import pandas._testing as tm  
testmissing = tm.makeMixedDataFrame()
testmissing

另外需要注意的是makemixedDataFrame()这个函数和前面生成包含缺失值的函数makemixedDataFrame()函数都不需要指定参数。

    A	B	C	    D
0	0.0	0.0	foo1	2009-01-01
1	1.0	1.0	foo2	2009-01-02
2	2.0	0.0	foo3	2009-01-05
3	3.0	1.0	foo4	2009-01-06
4	4.0	0.0	foo5	2009-01-07

1.5.makeTimeSeries(N)

ts = tm.makeTimeSeries(10)
ts.name = 'anynameyouwant'

pieces = [ts[:5], ts[5:15], ts[15:]]

ts

于是有:

(2000-01-03   -1.702274
 2000-01-04    0.876489
 2000-01-05    0.440487
 2000-01-06   -0.019558
 2000-01-07    1.084235
 2000-01-10   -0.677281
 2000-01-11   -0.567066
 2000-01-12    1.419091
 2000-01-13    0.005624
 2000-01-14    0.674088
 Freq: B, Name: foo, dtype: float64,

生成了测试案例,接下来可以做什么呢?

2.1.转换成数组array(np.ndarray):二维

  • dataframe.to_numpy()
narray= testmissing.to_numpy()
narray

于是生成一个二维数组,这个数组有两个元素分别对应原来的两行,行元素里又包含原来每一行对应的列元素。

# narray.shape:(2,4)
array([[-1.7817407 , -0.64813415,  1.38362207,  0.44700061],
       [ 0.51373941, -3.10356975, -1.56157622,  0.06898897]])

那怎么把二维数组变成一维数组呢,毕竟都是数字,在一些情况下,多维度的数据并不是任何时候都对我们解决的问题有帮助。
这个时候我们可以使用ravel()将二维数组变成一维数组。

2.2.转换成数组array(np.ndarray):一维

  • numpy.ravel(narray,order=‘C’)
  • 等价于numpy.reshape(-1)
  • 参数order:‘C’(按行压缩);‘F’(按列压缩);‘A’(原顺序压缩);‘K’(按元素在内存中出现的顺序)
ravelarray = np.ravel(narray,order='C')
ravelarray

于是有:

# ravelarray.shape :(8,)
array([-1.7817407 , -0.64813415,  1.38362207,  0.44700061,  0.51373941,
       -3.10356975, -1.56157622,  0.06898897])

另外,还能对这个数组有哪些操作呢?比如重复每个元素出现的频次构成新数组。

2.3.重复元素频次,使用repeat(N)

narray= testmissing.to_numpy()
narray2 = narray.repeat(2)
narray,narray2

于是有,
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值