Alh*_*lta 49 python numpy qlikview pandas qliksense
如果我有这样的表格:
df = pd.DataFrame({
'hID': [101, 102, 103, 101, 102, 104, 105, 101],
'dID': [10, 11, 12, 10, 11, 10, 12, 10],
'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})
Run Code Online (Sandbox Code Playgroud)
我可以count(distinct hID)在Qlik中为独特的hID计算出5的计数.我如何使用pandas数据框在python中做到这一点?或者也许是一个numpy阵列?同样,如果要这样做,count(hID)我会在Qlik得到8分.在熊猫中做同样的事情是什么?
Sco*_*ton 89
计算distict值,使用nunique:
df['hID'].nunique()
5
Run Code Online (Sandbox Code Playgroud)
仅计算非空值,使用count:
df['hID'].count()
8
Run Code Online (Sandbox Code Playgroud)
计算包含空值的总值,使用size属性:
df['hID'].size
8
Run Code Online (Sandbox Code Playgroud)
使用布尔索引:
df.loc[df['mID']=='A','hID'].agg(['nunique','count','size'])
Run Code Online (Sandbox Code Playgroud)
或使用query:
df.query('mID == "A"')['hID'].agg(['nunique','count','size'])
Run Code Online (Sandbox Code Playgroud)
输出:
nunique 5
count 5
size 5
Name: hID, dtype: int64
Run Code Online (Sandbox Code Playgroud)
小智 33
如果我假设数据是数据帧的名称,您可以执行以下操作:
data['race'].value_counts()
Run Code Online (Sandbox Code Playgroud)
这将显示不同的元素和它们的出现次数.
piR*_*red 14
或者获取每列的唯一值数:
df.nunique()
dID 3
hID 5
mID 3
uID 5
dtype: int64
Run Code Online (Sandbox Code Playgroud)
新的 pandas 0.20.0 pd.DataFrame.agg
df.agg(['count', 'size', 'nunique'])
dID hID mID uID
count 8 8 8 8
size 8 8 8 8
nunique 3 5 3 5
Run Code Online (Sandbox Code Playgroud)
你总是可以做一个agg内groupby.我最后使用stack的是因为我更喜欢演示文稿.
df.groupby('mID').agg(['count', 'size', 'nunique']).stack()
dID hID uID
mID
A count 5 5 5
size 5 5 5
nunique 3 5 5
B count 2 2 2
size 2 2 2
nunique 2 2 2
C count 1 1 1
size 1 1 1
nunique 1 1 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108225 次 |
| 最近记录: |