微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Python 中计算低于平均值 2.5% 和高于平均值 2.5%

如何解决在 Python 中计算低于平均值 2.5% 和高于平均值 2.5%

如何打印数据框,其中人口在平均值的 5% 以内? (低于 2.5%,高于 2.5%)

这是我尝试过的:

mean = df['population'].mean()
minimum = mean - (0.025*mean)
maximum = mean + (0.025*mean)

df[df.population < maximum]

解决方法

使用:

df.loc[(df['population'] > minimum) & (df['population'] < maximum)]
,
import pandas as pd 
df = pd.read_csv("fileName.csv")
#suppose this dataFrame contains the population in the int format
mean = df['population'].mean()
minimum = mean - (0.025*mean)
maximum = mean + (0.025*mean)

ans = df.loc[(df['population']>minimum) & (df['population'] <maximum)]
ans

你可以使用这个

,

我构建了这个数据框用于测试。

import numpy as np
import pandas as pd

random_data = np.random.randint(1_000_000,100_000_000,200)

random_df = pd.DataFrame(random_data,columns=['population'])

random_df

这是您所要求的具体答案。

pop = random_df.population
top_boundary = pop.mean() + pop.mean() * 0.025
low_boundary = pop.mean() - pop.mean() * 0.025

criteria_boundary_limits = random_df.population.between(low_boundary,top_boundary)

criteria_boundary_df = random_df.loc[criteria_boundary_limits]

criteria_boundary_df

但是,也许,使用分位数可以得到另一个答案。我使用了 40 个分位数,因为 1/40 = 0.025。

groups_list = list(range(1,41))

random_df['groups'] = pd.qcut(random_df['population'],40,labels = groups_list)

criteria_groups_limits = random_df.groups.between(20,21)
criteria_groups_df = random_df.loc[criteria_groups_limits]

criteria_groups_df

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。