如何找到 pandas 中每个数字的分位数值
How to find the quantile value of each number in pandas
我有以下代码生成具有随机值的 df:
import pandas as pd
import numpy as np
random_data = np.random.randint(10, 25, size=20)
df = pd.DataFrame(random_data, columns=['RANDOM VALUES'])
df.index.name = 'foo'
print(df)
这将产生:
RANDOM VALUES
foo
0 15
1 20
2 17
3 21
4 23
5 20
6 23
7 22
8 22
9 21
10 23
11 17
12 12
13 17
14 17
15 24
16 13
17 20
18 14
19 22
要找到 say quantile(0.5)
的分位数值
df['RANDOM VALUES'].quantile(0.5)
反过来怎么办?例如创建一个包含每个数字的分位数值的列?
您可以使用 scipy.stats
模块中的 percentileofscore
函数。参考documentation正确使用kind
参数:
import scipy.stats as stats
df["RANDOM VALUES"].apply(lambda x: stats.percentileofscore(df["RANDOM VALUES"],
x, kind = 'weak'))
我有以下代码生成具有随机值的 df:
import pandas as pd
import numpy as np
random_data = np.random.randint(10, 25, size=20)
df = pd.DataFrame(random_data, columns=['RANDOM VALUES'])
df.index.name = 'foo'
print(df)
这将产生:
RANDOM VALUES
foo
0 15
1 20
2 17
3 21
4 23
5 20
6 23
7 22
8 22
9 21
10 23
11 17
12 12
13 17
14 17
15 24
16 13
17 20
18 14
19 22
要找到 say quantile(0.5)
df['RANDOM VALUES'].quantile(0.5)
反过来怎么办?例如创建一个包含每个数字的分位数值的列?
您可以使用 scipy.stats
模块中的 percentileofscore
函数。参考documentation正确使用kind
参数:
import scipy.stats as stats
df["RANDOM VALUES"].apply(lambda x: stats.percentileofscore(df["RANDOM VALUES"],
x, kind = 'weak'))