我刚刚开始学习大熊猫。我遇到了这个;
d = date_range('1/1/2011', periods=72, freq='H')
s = Series(randn(len(rng)), index=rng)
我已经了解上述数据是什么意思,我尝试过使用IPython:
import numpy as np
from numpy.random import randn
import time
r = date_range('1/1/2011', periods=72, freq='H')
r
len(r)
[r[i] for i in range(len(r))]
s = Series(randn(len(r)), index=r)
s
s.plot()
df_new = DataFrame(data = s, columns=['Random Number Generated'])
创建数据框是否正确?
给出的下一步是:返回一个系列,其中系列中数字和下一个数字之间的绝对差值小于0.5
我是否需要找到生成的每个随机数之间的差异,并且只存储abs diff所在的集合。 0.5?有人可以解释我怎么能在熊猫中做到这一点?
此外,我尝试将系列绘制为直方图;
df_new.diff().hist()
图表显示x为随机数,Y轴为0到18(我不明白)。有人可以向我解释这个吗?
答案 0 :(得分:1)
除了@ Dthal的评论之外,还给你一些指示:
r = pd.date_range('1/1/2011', periods=72, freq='H')
正如@Dthal评论的那样,您可以简化从正态分布中随机抽样的DataFrame
的创建,如下所示:
df = pd.DataFrame(index=r, data=randn(len(r)), columns=['Random Number Generated'])
仅显示与前一个值相差values
的{{1}}:
0.5
可以简化使用diff = df.diff()
diff[abs(diff['Random Number Generated']) < 0.5]
Random Number Generated
2011-01-01 02:00:00 0.061821
2011-01-01 05:00:00 0.463712
2011-01-01 09:00:00 -0.402802
2011-01-01 11:00:00 -0.000434
2011-01-01 22:00:00 0.295019
2011-01-02 03:00:00 0.215095
2011-01-02 05:00:00 0.424368
2011-01-02 08:00:00 -0.452416
2011-01-02 09:00:00 -0.474999
2011-01-02 11:00:00 0.385204
2011-01-02 12:00:00 -0.248396
2011-01-02 14:00:00 0.081890
2011-01-02 17:00:00 0.421897
2011-01-02 18:00:00 0.104898
2011-01-03 05:00:00 -0.071969
2011-01-03 15:00:00 0.101156
2011-01-03 18:00:00 -0.175296
2011-01-03 20:00:00 -0.371812
来消除缺失值。
.dropna()
docs告知pandas.Series.hist()
的默认号码为bins
,因此您需要10
的号码,因此结果为bars
这种情况大致对称,大约为[-4, +4]
范围内的零。
Series.hist(by = None,ax = None,grid = True,xlabelsize = None,xrot = None,ylabelsize = None,yrot = None,figsize = None,bins = 10,** kwds) diff.hist()