Pandas 将每列的唯一值计算为系列
Pandas Compute Unique Values per Column as Series
我想为 Pandas DataFrame 中的每一列收集简单的统计信息。收集非空数据点个数没问题:
valueCountSeries = mydataframe.count()
不过,我想将此信息与包含唯一值数量的系列结合起来。目前我计算这个值如下:
header = list(mydataframe.columns.values)
unique = [(c, mydataframe[c].nunique()) for c in header]
所以我有独特的但不是Pandas系列。
基本上我想要一个系列,这样我就可以进行下一步:
df = pd.DataFrame([valueCountSeries, uniqueCountSeries])
是否有一种 Pandas 式的方式来获得独特的系列,以便我可以将结果与 valueCountSeries 连接到一个新的 DataFrame 中?
调整下面的结果。给定以下矩阵:
A B C D
0 4 0 3 3
1 3 1 3 2
2 4 0 0 nan
3 2 1 0 1
4 1 0 1 4
我要计算:
count nunique
A 5 4
B 5 2
C 5 3
D 4 4
谢谢!
import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame(np.random.randint(5, size=(5,4)), columns=list('ABCD'))
print(df)
# A B C D
# 0 4 0 3 3
# 1 3 1 3 2
# 2 4 0 0 4
# 3 2 1 0 1
# 4 1 0 1 4
dct = {func.__name__:df.apply(func) for func in (pd.Series.nunique, pd.Series.count)}
print(pd.concat(dct, axis=1))
产量
count nunique
A 5 4
B 5 2
C 5 3
D 5 4
我想为 Pandas DataFrame 中的每一列收集简单的统计信息。收集非空数据点个数没问题:
valueCountSeries = mydataframe.count()
不过,我想将此信息与包含唯一值数量的系列结合起来。目前我计算这个值如下:
header = list(mydataframe.columns.values)
unique = [(c, mydataframe[c].nunique()) for c in header]
所以我有独特的但不是Pandas系列。
基本上我想要一个系列,这样我就可以进行下一步:
df = pd.DataFrame([valueCountSeries, uniqueCountSeries])
是否有一种 Pandas 式的方式来获得独特的系列,以便我可以将结果与 valueCountSeries 连接到一个新的 DataFrame 中?
调整下面的结果。给定以下矩阵:
A B C D
0 4 0 3 3
1 3 1 3 2
2 4 0 0 nan
3 2 1 0 1
4 1 0 1 4
我要计算:
count nunique
A 5 4
B 5 2
C 5 3
D 4 4
谢谢!
import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame(np.random.randint(5, size=(5,4)), columns=list('ABCD'))
print(df)
# A B C D
# 0 4 0 3 3
# 1 3 1 3 2
# 2 4 0 0 4
# 3 2 1 0 1
# 4 1 0 1 4
dct = {func.__name__:df.apply(func) for func in (pd.Series.nunique, pd.Series.count)}
print(pd.concat(dct, axis=1))
产量
count nunique
A 5 4
B 5 2
C 5 3
D 5 4