gpt4 book ai didi

Python:构建 Pandas 数据帧对象

转载 作者:行者123 更新时间:2023-12-01 09:17:27 26 4
gpt4 key购买 nike

我有一个包含 dtype=object 的数据框,即分类变量,我希望获得每个级别的计数。我希望结果是所有分类变量的完美总结。

为了实现上述目标,我尝试了以下方法:

(第 1 行)获取所有对象类型变量的名称

(第 2 行)计算每个级别的观察数(ab of v1)

(第 3 行)重命名该列,使其显示为“count”

stringCol = list(df.select_dtypes(include=['object'])) # list object of categorical variables
a = df.groupby(stringCol[0]).agg({stringCol[0]: 'count'})
a = a.rename(index=str, columns={stringCol[0]: 'count'}); a
count
v1
a 1279
b 2382

我不确定如何优雅地获得以下打印所有字符串列计数的结果。像这样(仅显示 v1v4,但应该能够打印可变数量的列的此类结果):

    count       count
v1 v4
a 1279 l 32
b 2382 u 3055
y 549

我能想到的做法是:

  1. 选择stringCol的一个元素
  2. 计算列中每组的计数。
  3. 将结果存储在 Pandas 数据框中。
  4. 将 Pandas 数据帧存储在对象中(列表?)
  5. 重复
  6. 如果 stringCol 的最后一个元素完成,则中断。

但一定有比这更好的方法,只是不知道该怎么做。

最佳答案

我认为最简单的是使用循环:

df = pd.DataFrame({'A':list('abaaee'),
'B':list('abbccf'),
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aacbbb')})

print (df)
A B C D E F
0 a a 7 1 5 a
1 b b 8 3 3 a
2 a b 9 5 6 c
3 a c 4 7 9 b
4 e c 2 1 2 b
5 e f 3 0 4 b
<小时/>
stringCol = list(df.select_dtypes(include=['object']))

for c in stringCol:
a = df[c].value_counts().rename_axis(c).to_frame('count')
#alternative
#a = df.groupby(c)[c].count().to_frame('count')
print (a)

count
A
a 3
e 2
b 1
count
B
b 2
c 2
a 1
f 1
count
F
b 3
a 2
c 1
<小时/>

对于DataFrames列表使用列表理解:

dfs = [df[c].value_counts().rename_axis(c).to_frame('count') for c in stringCol]
print (dfs)

[ count
A
a 3
e 2
b 1, count
B
b 2
c 2
a 1
f 1, count
F
b 3
a 2
c 1]

关于Python:构建 Pandas 数据帧对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51111792/

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