如何使用python查找频率表的平均值和中位数

问题描述 投票:0回答:1

我是Python数据分析新手,正在处理人口普查数据,这是一个数据示例,


| geo_area   |Total | 2-5km|5-10km|
|------------|------| ----| -----|
| E02000001  | 5378 | 385 | 241|
| E02000002  | 3238 | 474 |394 |
| E02000003  | 5238 | 603 | 541|
| E02000004  | 3113 | 354 |277 | 
| E02000005  | 4862 | 684 | 532|
| E02000006  | 4271 | 676 |408 |  

第一列是地理区域,第二列是上班的总距离,其余列是 2-5 公里和 5-10 公里之间的距离。我排除了其他列(10-20公里、20-30公里、30-40公里、40-60公里、超过60公里以及最后0公里(在家工作)),因为它太长了。另外,我只显示了 6 行,但数据超过 7000 行。

2-5公里和5-10公里栏的值为频率。

我想确定每个地理区域的平均行驶距离和中位距离?

我不太确定这是否正确,但是对于中位数,我写了以下定义:

def median_calculator(df):
    full_list_of_numbers = []
    for col in df.columns:
        full_list_of_numbers.append(((df[col].cumsum() - (df[col].sum(axis=0)/2).T) < 0).sum())
    return full_list_of_numbers

我正在努力计算平均值,甚至不知道上面的中位数是否是正确的应用。另外,我可以使用

df.groupby('geographical_areas').agg({mean_distance: 'mean, 'median_distance:'median})
还是不正确?

如果有人感兴趣,这里有一个数据链接: 它是 zip 文件中的文件 census2021-ts058-msoa(工作和旅行下的TS058 上班距离

我真的很感谢您的帮助。

python pandas statistics mean median
1个回答
0
投票

使用您提供的数据集,您只需要使用一些索引即可获得您正在寻找的答案。

# Getting the data set
from zipfile import ZipFile
from io import BytesIO
import urllib.request as urllib2
import pandas as pd

r = urllib2.urlopen("https://www.nomisweb.co.uk/output/census/2021/census2021-ts058.zip").read()
file = ZipFile(BytesIO(r))
distance_to_work = file.open("census2021-ts058-msoa.csv")
df = pd.read_csv(distance_to_work)

# Getting mean and median (selecting all rows from column 3 and out)
mean = df.iloc[:,3:].mean()
median = df.iloc[:,3:].median()
© www.soinside.com 2019 - 2024. All rights reserved.