我有一个 dfAB
import pandas as pd
import random
A = [ random.randint(0,100) for i in range(10) ]
B = [ random.randint(0,100) for i in range(10) ]
dfAB = pd.DataFrame({ 'A': A, 'B': B })
dfAB
Run Code Online (Sandbox Code Playgroud)
我们可以采用分位数函数,因为我想知道列的第 75 个百分位数:
dfAB.quantile(0.75)
Run Code Online (Sandbox Code Playgroud)
但是现在说我在 dfAB 中放入了一些 NaN 并重新执行该函数,显然它是不同的:
dfAB.loc[5:8]=np.nan
dfAB.quantile(0.75)
Run Code Online (Sandbox Code Playgroud)
基本上,当我计算dfAB的平均值时,我通过skipna忽略Na,因为我不希望它们影响我的统计数据(我的代码中有很多,故意的,obv使它们为零没有帮助)
dfAB.mean(skipna=True)
Run Code Online (Sandbox Code Playgroud)
因此,我得到的是分位数函数是否/如何解决 NaN?
https://pandas.pydata.org/pandas-docs/version/0.17.0/ generated/pandas.rolling_quantile.html
我不知道如何最好地忽略滚动百分位函数中的 NaN。有人知道吗?
seriestest = pd.Series([1, 5, 7, 2, 4, 6, 9, 3, 8, 10])
Run Code Online (Sandbox Code Playgroud)
并插入 nan
seriestest2 = pd.Series([1, 5, np.NaN, 2, 4, np.nan, 9, 3, 8, 10])
Run Code Online (Sandbox Code Playgroud)
现在,在第一个系列中,我使用以下方法获得了预期输出:
seriestest.rolling(window = 3).quantile(.5)
Run Code Online (Sandbox Code Playgroud)
但是,我希望做同样的事情并忽略 test2 系列上的 NaN。
seriestest2.rolling(window = 3).quantile(.5)
Run Code Online (Sandbox Code Playgroud)
给出:
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 8.0
9 8.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)
但我认为如果我们可以解析 a skipna=True,它会给出类似这样的东西,这对我不起作用:
0 NaN
1 NaN
2 5.0
3 2.0
4 4.0
5 4.0 …Run Code Online (Sandbox Code Playgroud) 我明白了:
'NoneType' object has no attribute 'append'
Run Code Online (Sandbox Code Playgroud)
我想从一个空列表开始:
Edate = []
但是Q1)我如何将其定义为将采用日期的列表?
我不确定,所以我输入一个timstamp让我开始:
Edate = [Timestamp('2018-01-01 00:00:00')]
Run Code Online (Sandbox Code Playgroud)
现在是一个1元素列表
现在,我想附加日期:
dates=
1 2018-01-29
2 2017-10-11
3 2017-03-28
4 2016-10-25
5 2016-03-02
6 2015-11-04
7 2015-10-22
8 2014-01-24
9 2014-01-03
10 2013-10-09
Run Code Online (Sandbox Code Playgroud)
但是在尝试这样做时,我遇到了上述错误,我不明白.谢谢
PS-我也想对数字做同样的事情:
entrynumbers = []
data=
0 NaN
1 -31.336
2 -36.012
3 -21.282
4 -41.859
5 -31.381
6 -30.789
7 -27.509
entrynumbers = entrynumbers.append(data)
Run Code Online (Sandbox Code Playgroud)