如何解决来自带有分类数据和自定义“bins”的 Pandas 数据框列的直方图/值计数
考虑以下数据框:
export class Users {
id: number;
CIN: number;
name: string;
address: string;
email: string;
username: string;
password: string;
permis: string;
prenom: string;
image: string;
modeAuto: number;
sex: string;
dateNais: Date;
role: string;
}
我想根据一些自定义“bin”来获取数据帧每一列中数据的相对频率,这将是(可能的超集)唯一数据值。例如,如果:
public urls = 'http://127.0.0.1:8000/api/v1/users'; // url pour la récupération de la partie backend(laravel)
constructor(private http: HttpClient) { }
//* afficher tous les conducteurs*/
getUsers (): Observable<Users[]> {
return this.http.get<Users[]>(this.urls).filter(x => x.role === 'driver').pipe(
tap(_ => console.log('fetched Users')),catchError(this.handleError<Users[]>('getUsers',[]))
);
}
我想获得:
import pandas as pd
x = pd.DataFrame([[ 'a','b'],['a','c'],['c',['d','c']])
print(x)
0 1
0 a b
1 a c
2 c b
3 d c
是否有一个(或两个)班轮来实现这一目标?
解决方法
根据 b 尝试 apply
value_counts
,然后 reindex
:
import pandas as pd
x = pd.DataFrame([['a','b'],['a','c'],['c',['d','c']])
b = ['a','b','c','d','e','f']
df = x.apply(lambda s: s.value_counts()).reindex(b).fillna(0).astype(int)
print(df)
df
:
0 1
a 2 0
b 0 2
c 1 2
d 1 0
e 0 0
f 0 0
import pandas as pd
x = pd.DataFrame([['a','f']
df = x.melt()
df = pd.crosstab(df['value'],df['variable']) \
.reindex(b).fillna(0).astype(int) \
.rename_axis(None,axis=1).rename_axis(None,axis=0)
print(df)
df
:
0 1
a 2 0
b 0 2
c 1 2
d 1 0
e 0 0
f 0 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。