Pandas Ⅰ"/>
Restudy Pandas Ⅰ
1.Pandas为我们提供生成时间序列相关的测试案例的模块:util.testing
导入的时候可以以简写的形式:
import pandas._testing as tm
相关函数:
- makeTimeDataFrame(dimension):
生成shape为dimension X dimension的数据,index默认为2000-01-03开始的时间序列(type=DatetimeIndex,freq=‘B’),column_name默认A开始的字母 - makeCustomDataframe(nrows,nrols):
随机生成指定维度的DataFrame - makeMissingDataframe():
生成包含缺失值的DataFrame,index默认随机生成的字母组合(不是时间),column_name默认A开始的字母 - makeMixedDataFrame():
生成包含日期的DataFrame,index默认为0开始的数字,column_name默认A开始的字母 - 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.7022742000-01-04 0.8764892000-01-05 0.4404872000-01-06 -0.0195582000-01-07 1.0842352000-01-10 -0.6772812000-01-11 -0.5670662000-01-12 1.4190912000-01-13 0.0056242000-01-14 0.674088Freq: 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
于是有,
更多推荐
Restudy Pandas Ⅰ
发布评论