gpt4 book ai didi

Python:创建报告模型(使用 pandas)

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:20 24 4
gpt4 key购买 nike

这更像是 python 的模型设计问题。

我需要将多个日志文件中的数据解析并提取到 pandas DataFrame 中。我需要根据这些数据框创建报告(如 csv、excel 等)。

一种设计方法是创建一个具有 2 个函数的文件:1. 从日志文件中提取数据的功能(正则表达式很好)2. pandas查询函数,类似这样:

def get_top1000(group):

return group.sort_index(by='births', ascending=False)[:1000]
grouped = names.groupby(['year', 'sex'])
top1000 = grouped.apply(get_top1000)

然后,我的类(class)可以获得所有这些查询并为此生成报告。如何使用 python 正确实现这一点?

最佳答案

你需要SeriesGroupBy.nlargest :

df = names.groupby(['year', 'sex'])['births'].nlargest(1000)

示例:

names = pd.DataFrame({'year':[2000,2000,2000,2000,2000],
'sex':['M','M','F','F','F'],
'births':[7,8,9,1,2]})

print (names)
births sex year
0 7 M 2000
1 8 M 2000
2 9 F 2000
3 1 F 2000
4 2 F 2000

df = names.groupby(['year', 'sex'])['births']
.nlargest(1)
.reset_index(level=2, drop=True)
.reset_index()
print (df)
year sex births
0 2000 F 9
1 2000 M 8

如果你的数据中还有其他列,首先set_index具有这些列:

names = pd.DataFrame({'year':[2000,2000,2000,2000,2000],
'sex':['M','M','F','F','F'],
'births':[7,8,9,1,2],
'val':[3,2,4,5,6]})

print (names)
births sex val year
0 7 M 3 2000
1 8 M 2 2000
2 9 F 4 2000
3 1 F 5 2000
4 2 F 6 2000

df = names.set_index('val') \
.groupby(['year', 'sex'])['births'] \
.nlargest(1) \
.reset_index()
print (df)
year sex val births
0 2000 F 4 9
1 2000 M 2 8

关于Python:创建报告模型(使用 pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com