Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 百分位函数_Python_Python 3.x_Pandas_Percentile - Fatal编程技术网

Python 百分位函数

Python 百分位函数,python,python-3.x,pandas,percentile,Python,Python 3.x,Pandas,Percentile,是否有一种方便的方法可以根据数据框中其他列的值计算列的百分比。 i、 e.每种玩具价格的第10个百分点 我有一种方法可以得到我的答案,但它非常冗长,在较大的数据集上不能很好地工作 import pandas as pd import numpy as np data = {'Toy': ['Truck', 'Truck', 'Truck', 'Barbie', 'Snake', 'Barbie'], 'Colour': ['Blue', 'Orange', 'Green', 'Pin

是否有一种方便的方法可以根据数据框中其他列的值计算列的百分比。 i、 e.每种玩具价格的第10个百分点

我有一种方法可以得到我的答案,但它非常冗长,在较大的数据集上不能很好地工作

import pandas as pd
import numpy as np

data = {'Toy': ['Truck', 'Truck', 'Truck', 'Barbie', 'Snake', 'Barbie'], 
    'Colour': ['Blue', 'Orange', 'Green', 'Pink','Green','Red'], 
    'Price': [4, 6, 8, 5, 9, 4]}
df = pd.DataFrame(data)
df

df2 = df.groupby(['Toy'])['Price'].agg([np.sum,np.mean, lambda x:np.percentile(x,q= 10)]).reset_index()
df2

df_result = pd.merge(df,df2, on= 'Toy', how='left')
df_result
输出-(λ为感兴趣的变量)
我想说,你不需要把这件事弄得这么复杂(创建另一个df,使用
merge
等)

你可以简单地做

res = df.groupby("Toy").Price.apply(np.percentile, 10)
并使用索引匹配结果

df = df.set_index("Toy")
df.loc[:, "Percentile"] = res
df.reset_index()

我看不出它能比df.groupby(“玩具”).Price.apply(np.percentile,10)小多少。。但是idk。为什么它不好用?太慢了?我不想减少数据集的维数-我希望在表的末尾添加一列,显示同一类别(即同一玩具类型)所有项目的第10个百分位。我刚刚添加了一张图片来显示输出